To further streamline our development and make sure that we are able to do more complex projects in the future, I've been thinking about a way to organize development in terms of setup. It's important to do this when things are relatively quite as they are now, cuz when the shit hits the fan, there's no time to be wasted on learning production methods. So here are some of my suggestions.
IDE
Most developers that I know use Eclipse as an IDE. It's free, open-source and a kind of meta-IDE that you can adapt to whatever type you are developing in. In the past, I've successfully configured it to build java, php and flex projects. So once you know Eclipse, there's no need to use any other IDE any more. Also, Eclipse allows you to roll-back to local versions of you code and has SVN support through the Subclipse plugin. I can help if you choose to use this IDE, because it's somewhat complicated and can be a bit overwhelming on first contact.
Versioning
Versioning is a problem when developing complex projects on which multiple people collaborate. There's a reason why the drupal, linux etc... projects all have a versioning system at their core. Imagine you are modifying a module because you've found a bug. You want to give it back to the community but you want to make sure you don't fuck up someone else's code. What you do is you commit it to the Drupal CVS system. Anyone who doesn't like your code can still roll back to previous versions of the module. You haven't irrevocably over-written any code.
For Dough, I propose to use subversion (SVN) instead of CVS. It's newer, open-source and widely supported in the professional developers community. So learning it is also improves the odds of easier collaborations with other programmers on future projects.
Development cycle
As a development model, I propose to do as much development locally as possible. This means you install a localhost LAMP server (eg. Wamp on windows) and test you code locally. Every time you think you've written something that is useful for others to see, you commit it to the SVN server. This is where an additional advantage of Eclipse comes in : using the php "perspective" provided by the php plugins for Eclipse, you can edit code directly on the source files of your local install and immediately see the result without having to upload your stuff. I know that some people like to edit code directly on the server, but imaging what happens when 3 developers accidentally are editing the same template file... you can easily loose a lot of work in this way. An additional advantage is that the SVN repository always constitutes a working version of the codebase with all the previous versions embedded in it, so checking out the files form subversion on whatever other computer you want to start coding on is very easy.
mysql
What SVN does not do is keep versions of the mysql database. So from time to time, there will be a need to update the mysql to a new version using an sql script. However, at a certain point in the development of a drupal site, the only thing that changes in the system are the templates and custom modules, which can be handled using SVN.

A typical work day
So how would a typical work day look like in this framework ?
- use the svn update command to bring your local php code up-to-date with the online SVN repository
- work your magic on your local server
- commit the code you feel is ready to be used to the SVN server using the SVN commit command
- lubrifix's blog
- Login to post comments
