The Two Projects
I work at a pretty small software company, and I'm currently in a situation where I'm at the end of development for "Project A", about to start development for "Project B". Project B is supposed to be an "extension" of Project A (both are primarily web apps).
In Project B, the plan is to not only add brand new features, but modify some of the existing things from Project A; for example, some of the web pages. The difficulty is that we still want to be able to distribute Project A, without any of the features from Project B, but with any "A"-related bug fixes that we end up doing while we work on "B".
Method 1: Branching
The way I'm thinking about it is that Project A is like the "stable" branch and Project B is like the "dev" branch, but "dev" never gets merged back into "stable". We have concerns with this approach because it seems like it will require a lot of discipline to make sure that bug-fix changes are always committed to the Project A branch and then merged up to the Project B branch (as opposed to fixes being implemented on the Project B branch and needing to manually copy them back into the Project A branch).
Method 2: Plugin Architecture
Alternatively, we could start turning things into sort of "plugins" wherever there needs to be a "difference" between Project A and B. This way also seems like it could turn into a tangled mess, since we don't yet know exactly what changes will be needed.
The Choice
Right now, I see it as a choice between the lesser of two evils (read 'difficulties'). Based on your experience, do you have any advice that will help with my choice? Are there any other ways to manage the split between the two projects that I might have overlooked?