My team is responsible for maintaining a SharePoint 2010 site that was developed by another group. This maintenance includes updates to existing web parts (approximately 20). Currently, all of these web parts belong to a single feature. A few of these web parts are related and share code, but most are independent.
The problem with this situation is that if I need to deploy a change to one of these web parts, I still have to deploy the other 19. This means that if another developer is currently working on one of these other web parts, I could inadvertently deploy his unfinished code.
I'm looking for suggestions and best practices on how to organize these web parts to facilitate incremental deployments. Should I group related web parts into separate features? Since it appears that you can only have one package per project, should I put the features in separate projects? Or, should keep them in the same project and just change the package contents before doing a deployment?
Thanks for your feedback!