Related link: http://www.cdbaby.com
There are two projects about to start at the same time: CD Baby and Filmbaby.
Both are almost identical. One sells CDs by indie musicians. One sells DVDs by indie filmmakers.
For Filmbaby, though, I was going to stay out of it, and let another programmer do it all. I’ve got enough on my plate. I figured I’d just let him use anything from my CD Baby code, to make Filmbaby.
But right now the CD Baby code is a mess. I’m just about to re-write it from scratch. (Timeline: I could start any day now, and probably finish in 2 months.)
If he were to start now, and borrow code from the existing CD Baby, then he would be borrowing messy code about to die anyway. (Or have less to borrow because it’s so messy, and un-borrowable.)
So I’m trying to decide what’s the best way for him and I to make these two projects, since they will be almost the same, and almost at the same time.
APPROACH #1 : I START CD BABY ALONE, FILMBABY STARTS NEXT MONTH
I start coding CD Baby now, by myself, setting up the basics the way I think it would be best. In a month, he starts Filmbaby alone, borrowing whatever he needs from my CD Baby coding.
APPROACH #2 : HE STARTS FILMBABY NOW, I START CD BABY WHENEVER
He starts coding Filmbaby now, however he thinks it’s best. I start rewriting CD Baby later, and we probably borrow bits and pieces from eachother’s stuff.
APPROACH #3: WE BOTH SIT DOWN AND WRITE A SHARED BASE
We both write this together : a new codebase that will work for CD Baby and Filmbaby together. Leaving most things generic until the end when we fork it off into the stuff that is just for CD Baby, and just for Filmbaby.
APPROACH #4: I START WRITING A SHARED BASE, HE JOINS IN LATER
I could start writing that shared base myself, from my experience with what’s needed. In my mind, I’d actually be writing the generics of the new CD Baby, but keeping it non-specific to CDs, so that the same stuff could be used for Filmbaby.