This is the second question I've gotten like this, so I thought I'd take the time to answer it:
Ray, With all of the projects that you maintain, I am interested in hearing about how you manage to keep everything straight. What tools and processes to you use on a daily basis that might help others? How much sharing of code to you do between projects? Thanks, Scott
First off, the number one thing I have to be clear about is my memory is crap. Worse than crap. If you rated my brain as RAM, it would be equivalent to my old Apple IIe before I increased it to 128K. I do not do a great job of managing my open source projects. More than once someone will mention a bug that will get forgotten. So what do I try to do as much as possible? Use a bug tracker. Obviously I use Lighthouse Pro, but you can use any issue tracker. I think this is the number one tool you can have for your project. Don't think of this just as a "bug" tracker. A good issue tracker will help you with new ideas, suggestions, or even reminders for documentation updates. Basically - don't trust your memory, or a collection of email. Find a good issue manager to help manage your project. Can my readers recommend which tools they use? (Although if you aren't using Lighthouse Pro, what's wrong with you??? ;)
As for sharing code - I try as much as possible. Typically the code that works between projects are the most generic of functions, and typically they come from CFLib.org. I probably do not consilidate as much as possible.
Archived Comments
I'm sure there will be tons of "I use this" and "I use that" comments for issue tracking, but we use FogBugz from Joel Spolsky's Fog Creek Software and it's phenomenonal. It's written in ASP (and there's a PHP version available), but I can't say enough how intuitive and easy it is to use. It allows for bug, feature, and inquiry tracking, has built-in discussion boards, a screen capture tool, and lots more. Check out www.fogcreek.com/FogBugz/ for more info. And Ray, we bought FogBugz before there was even a Lighthouse, so don't take it personally!
to be honest I used Dot Project www.dotproject.net/ for quite some time. it's great tool no to complext ideal suited for medium projects - but I might replace it with lighthouse pro.
The problem is alway the time -- so for small projects I just uses the great 'task' todolist in eclipse. its very handy and very quick.
Trust me, Dave, I won't. LHP is still a work in progress as far as I'm concerned. :)
I use NoteTaker (from AquaMinds) to keep track of CF tidbits. What's nice about this OS X application is that it has a clipping service so when I come across something useful in blogs, I cann just select the text, go to Services and select the notebook page in which to stash this info.
We use Trac for our project management (bug tracker, release scheduling, etc) stuff, primarily because we use Subversion for version control. Trac is designed to integrated with your SVN repository, which makes for some very powerful things. For example, you can close a ticket (bug, issue, feature, etc.) as closed from your commit message, and Trac will not only add your note, but also cross reference the ticket against the changeset, so you can easily jump to the browser and see exactly what changed to close the ticket.
Both tools are very nice, but together they make a ridiculously powerful combination. And they're both free (beer and speech), which is just icing on the cake.
For sharing code between projects, you use your version control system and vendor branches. Basically you consider you shared code to be a software package that a third party (even though it's yourself) provides to you. Then you can maintain customized version for each project that uses the code, but also easily merge changes into all dependant projects as the code evolves. Every project has dependancies like this, even if it's just a couple utility custom tags, or a UDF or three.
We use TestTrack Pro from Seapine Software. It's not the cheapest solution, but it is the most configurable of any product I've looked at over the years. We use quite a bit of workflow to model our SDLC for data changes, bugs, and minor enhancements, and TestTrack allows us to completely customize that. We also like that it's completely accessible via Web Services, although we currently aren't exploiting that as much as we should.
Combine issue tracking with source code control and configuration management, and you're well on your way to keeping things straight.
I kind of find it funny that your memory is going, going and gone. Reason is, that my memory has been going, going and gone as well.
Which is why I agree with you on the importance of documentation and issue/bug tracking/project tracking.
Just out of curiousity, what kind of daily routines do you all use to help manage your days, memories and tasks?
I'll share mine first..
I use to create a new daily task sheet to print and put on my monitor clipboard to help me remind what i needed to get done and worked on each day.
Jeff Peters (www.grokfusebox.com) is always mentioning his Devnotes.
It is basically an include that gets put into your Application.cfc which gives you a textarea at the bottom of every one of your cfm pages.
I'll have to try it out one day.
maybe a larger question...hwo do you do it all? Wife, kids, house, job, video games, and then still have tiem for these kewl projects?
check out the todo list at http://www.abstractspoon.com/. I sue this for projects.
I do not do any work after work. I simply eat dinner and hangf out with the kids. (Although some days I just kinda zone out to rest my brain.) I do my "fun" work after the kids go to bed when I'm just watching TV with my wife. As for video games, I really don't play them very much. Maybe 2-3 hours per week. That's one reason I love the PSP so much. Easy to pick up and play for a few minutes. It's also why I like "lite" RPGs like X-Men Legends. I don't have to keep an intense story line in my head over 2-3 months.