We have a very big project that includes several applications that acts as the base for different clients.
Every client has its own personalization of the product, different milestones, different requirements and so on, and thus each project will evolve independently based upon its own needs.
The core of the project, is similar (but not equal) in every project and the organization is made so that there are teams that handle each client independently (but with communication among them as needed). So far, I've been unable to find any scheme that suits our needs, either by searching the internet or coming up with some brilliant idea :)
So far, we've been working by getting the product as a suit all needs, with specific branches for needed changes but, though the product has a good architecture, it's slowly becoming a big problem. Here are the main problems we face:
- Different milestones for each client: Which means each team has to produce versions as different times without the rest of the commits affecting the stability or their product.
- Different requirements, which may or may not affect the core of the system in some cases.
- Large teams (20+ team members)
- Handling bugs in the system: What do you do if a team finds a bug in his project that might affect other clients?
Note: We're talking about a project that has 10+M LOC.
Note: We're using Team Foundation System, Visual Studio 2008 and C# (mainly).
Any suggestions, sources or ideas about how to address the situation? Is there any model in the market that has a similar problem?