473,407 Members | 2,314 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,407 software developers and data experts.

Two teams working on a single project with a shared application base

1
Hello everyone,

(if this is not the correct forum please direct me to the right place)
(we work with TFS)
(the names in bold are just examples)

My team has been working on a project that is separated into two parts:
* A Common branch that is rarely changed and is the very base of our application.
* An Application branch that is under development and is constantly changing because of feature development or bug fixes.

Whenever we prepare to release a new version we branch both parts as a new branch called Release which we release to the QA team for testing. The "Release" branch is created along side the development of "Application", so while the code was frozen for the "Release" the code is still changing in "Application", due to the continuation of the development.

So, when the QA team discovers bugs we fix the code in "Release" and then "merging-back" the code to the "Application" branch, which is as I said before constantly changing. That way, we make sure the bug is fixed in both versions without doing the work twice.

If that's the right way to work or not is not the discussion here, but this is:

Recently we started working on a parallel project called Application2 with the same structure (based on "Common") that was branched-out from Application. So now we need to work simultaneously on two projects that are constantly changing with a shared "Common", both have similar features that require synchronization but are not under the same development scale and are released and tested on different dates and paces.

We now have an unideal situation: Whenever a new feature in "Application" is developed, and we want it also in "Application2", we'll have to merge the two projects and continue from there. And, if we fix or alter a critical part of the system in "Application2", "Application" also needs that change so we merge again but the other way around.

We can't take out more parts of the software to "Common" because it's an integral part of both "Application" and "Application2".

What we're doing now is developing "Application" and "Application2" separately until we need to merge certain features or changes, in which cases we work for days merging everything because the two projects were dramatically altered since "Application2" was branched out of "Application".

Aside from the massive headache we have performing that merge every now and then, this really feels like the wrong way to work.

Can someone think of a good way to solve our problem or a smarter way to develop?
"Starting over" is not an option.

Thanks!
Jan 11 '10 #1
1 1631
RedSon
5,000 Expert 4TB
It sounds like your common base has effectively become a "vendor branch" it releases its common code to two separate projects. No longer will your common tree release in lockstep with your application, since it has another "customer" to worry about.

We are facing this same issue on my project. Where we have one common tree that is used by several related projects. My solution was to use an external pointer to the common code and pull it into the project source. The common code would never have any release because it is not a complete component. It needs to be put into a project to be used. Each project would use the latest development tip of the common code.

Another way to do this is for the common tree to "release" binaries to each project. And make the project responsible for integrating it into their code base. This is a common "vendor" style interaction. I don't like that because I prefer to use all the source code all the time. I would rather build the common code myself than have someone build it for me and hand me a dll.

It is a tough decision to make. Because you also have to consider how to test your common code independently of your applications.
Jan 11 '10 #2

Sign in to post your reply or Sign up for a free account.

Similar topics

10
by: John Brock | last post by:
I have a base class with several derived classes (I'm writing in VB.NET). I want each derived class to have a unique class ID (a String), and I want the derived classes to inherit from the base...
7
by: jsale | last post by:
I have made an ASP.NET web application that connects to SQL Server, reading and writing data using classes. I was recommended to use session objects to store the data per user, because each user...
16
by: a | last post by:
We are writing an app that assigns people to teams based on their curent score. Teams are 8 people, there are 2 teams. (i would like it to be flexible, but this is a start). I need an algorithm...
36
by: AussieRules | last post by:
Hi, I want to use the user color scheme to set the color of my forms. I now I have to use the. System.Drawing.SystemColors, but which color is the color of a form background as used in other...
7
by: vamichael | last post by:
When I try to run the Website Administration Tool from my published application using http://localhost/myapp/webadmin.axd I am getting a "resource not found" error message. I can use the...
3
by: cj | last post by:
If I want to check to see if it's after "11:36 pm" what would I write? I'm sure it's easy but I'm getting tired of having to work with dates and times. Sometimes I just want time or date. And...
2
by: Paul Cheetham | last post by:
Hi, We are developing a large modular application, and in order to simplify splitting of work between developers etc. we want to develop it using several different projects, and then combine the...
24
by: Diwa | last post by:
Hi All, This is not a C++ technical question, hence this is an off-topic post. But it is C++ related and posted only to this group. Suppose, today a building like Empire State building or...
4
by: =?Utf-8?B?SmFu?= | last post by:
I have a .NET 2.0 application divided in two assemblies; the exe and a dll. The application generates a plugin-dll which is then loaded in a separate AppDomain (along with a second instance of my...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.