How Do You Track Your Project?

All off topic discussions go here. Everything from the funny thing your cat did to your favorite tv shows. Non-programming computer questions are ok too.
Post Reply
User avatar
~
Member
Member
Posts: 1226
Joined: Tue Mar 06, 2007 11:17 am
Libera.chat IRC: ArcheFire

How Do You Track Your Project?

Post by ~ »

What are the best means of keeping track of the development stages of your project that have been proved by yourself to be effective so you don't forget what you did some time ago and being able to start with your development time?

Do you use heavy documentation? A very distributed source tree? Just a definition of source/object modules? Or do you use a combination of those and/or something else?
User avatar
Brynet-Inc
Member
Member
Posts: 2426
Joined: Tue Oct 17, 2006 9:29 pm
Libera.chat IRC: brynet
Location: Canada
Contact:

Post by Brynet-Inc »

Have you heard of Version Control software? lmao..

Using something like SVN or CVS will allow you to keep track of things..

If you want to see when you added support for something you can browse log messages..

Version control is very handy.. You can compare between revisions, With SVN there is a handy feature called blame which is very nice if you're working with many people.
Last edited by Brynet-Inc on Tue Apr 10, 2007 11:10 am, edited 1 time in total.
Image
Twitter: @canadianbryan. Award by smcerm, I stole it. Original was larger.
User avatar
Alboin
Member
Member
Posts: 1466
Joined: Thu Jan 04, 2007 3:29 pm
Location: Noricum and Pannonia

Post by Alboin »

Uh....SVN? I use that for my projects, even if I am the only developer. :wink:
Am I understanding your question correctly?
C8H10N4O2 | #446691 | Trust the nodes.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Re: How Do You Track Your Project?

Post by Brendan »

Hi,
~ wrote:What are the best means of keeping track of the development stages of your project that have been proved by yourself to be effective so you don't forget what you did some time ago and being able to start with your development time?
My project is a little different than most in that it's very modular and there's distinct boundaries between the modules (i.e. they're seperate binaries).

In theory I write the documentation for a module (describing what it's meant to do and the interfaces it's meant to provide) before I begin writing the code. In practice I'm sloppy (the general design has become entrenched into my mind, and minor details can change during implementation) so I typically end up doing a rough draft then improve on it while I'm implementing the code and end up with about half the documentation I should have had. ;)
~ wrote:Do you use heavy documentation? A very distributed source tree? Just a definition of source/object modules? Or do you use a combination of those and/or something else?
All modules are organised into a hierarchical tree of HTML pages, beginning with a brief overview of the project at the top of the tree and getting more and more detailed as you go down, until you reach source code at the ends. Because my source code is auto-converted into HTML the entire tree (all documentation and source) becomes my OS's web page.

To avoid forgetting what I did a long time ago I try to implement each module entirely before starting the next module. At the moment this means I'm working on boot code that parses ACPI SLIT tables and sorts out locality information for NUMA machines, even though I still haven't started any part of the kernel.

It seems slow and sometimes it's not possible to only work on one module, but there's very little back-tracking and (hopefully) very little rewriting.

As a comparison, it would be possible for me to skip a lot of things (SMP, NUMA, page colouring, full CPU detection, long mode, etc) and get a basic kernel running, but then I'd need to revisit everything I'd done and try to add support for new features that weren't originally considered. I've tried this method before and found that (for me) it causes large amounts of broken code (often followed by starting again from scratch).

Of course what works for me may not work for other people. For example, using version control software works for most people (but I hate it and prefer copying the project's directory every now and then).


Cheers,

Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Post Reply