by Mario Figueiredo on October 29, 2012 in Staff Editorials
Many Web services provide open source teams with an infrastructure for collaborative development, but what if you’re a small team of developers with little funding wanting to develop closed source software? Can you still engage in collaborative development while keeping your costs minimal? Yes, of course. We show you how.
Bug-tracking comes a close second in the list of most important achievements to software development technology. It provides the means for project development organization and filtering. It’s an essential aspect to team development since it greatly reduces communication noise between team members by committing all of the software development stages and requests to a centralized database.
Bug tracking operates as a software development-oriented issue tracking system. Modern implementations are developed as three-tier client-server applications and include project management features. The presentation tier makes exclusive use of the Web browser. So, in order to implement the team bug-tracking system we need to combine a database server and a Web server.
This is best achieved by making use of any of the available solution stacks on the Internet. AMP (Apache, MySQL and PHP) is a well-known general-purpose solution stack that comes on the three major OSs, LAMP for Linux, WAMP for Windows, and MAMP for Mac. We are going one step beyond.
Bitnami offers zero-configuration, software-specific stacks. Among them you get a choice of three well-known bug-tracking systems. Trac, Redmine and Mantis are powerful solutions that will answer most, if not all of your requirements. The Bitnami stacks for these include all that is required to install and get them up and running at full-speed in no time. It’s your choice to choose the best stack for your team.
Trac uses Python, Mantis uses PHP and Redmine uses Ruby on Rails. The latter can be considered more visually attractive and easier to use, while the others are more feature-rich. If you wish to use some other bug-tracking system, you can install a general purpose stack like WAMP and manually install your bug-tracking system of choice. Apache Friends offers very complete and easy-to-install LAMP and WAMP stacks, or you can go with Bitnami infrastructure stacks. You should also take care to check them against the revision control system you chose above. All include hooks to notable software revision control systems, which greatly improves what you can do with a bug tracker system.
The next step is making sure the whole team has access to the bug tracker client. The solution stacks above do not require any Apache Web Server configuration for a local installation. However, for team members to access it, you should give the necessary permissions and open port 80 (or any other port you choose) on your computer. Since it is most likely that you will be connected to the Internet with a Dynamic IP, you also need to somehow emulate a Fixed IP to simplify access to the Web server, otherwise, you would always have to inform the team of your IP address every time your router acquired a new one.
For this we make use of the No-IP service. With it, it’s possible to emulate a fixed IP address in a dynamic IP configuration. It includes a small client that you should install on your computer, which monitors your current external IP address and maps it to the No-IP fixed address that was assigned to you. The service also includes, if you so wish, a subdomain of your choice which will allow your team to connect to the webserver by using a familiar name, instead of an IP address. For instance, http://YourProject.no-ip.com/BugTracker/.
If you want to use port 80, but your ISP blocks it or redirects any requests to its own Web server, No-IP can solve this if you make use of the Port Redirect feature. This shouldn’t concern you if all Apache is doing the serving for your team. If you want it to host content for people outside of your team (perhaps a project webpage with contact information you can link to potential business partners or investors), No-IP could be used to simplify access to your Web server as well.
This is the closest you can get to a full Web hosting account without paying a single cent.
By now, you have a fully operational revision control and bug-tracking system. All your team members are able to connect to them and make use of them. We haven’t spent any money doing it and you may begin to feel that this is all that is required. Technically, there isn’t much more to it. There’s also the aspect of the database management system which we’ll address briefly below, but essentially the primary building blocks of a good team development strategy are in place. It’s for this reason that it’s easy to overlook team communications.
In a modern Internet with e-mail, instant messaging and IRC, you may feel this isn’t worth discussing. A matter of fact is that keyboard-based communications are extremely clumsy solutions in a development environment where often complex ideas and thoughts need to be exposed in a clear manner – who knows, sometimes while coding. Likewise, it’s very hard to run a team meeting on IRC or IM for the simple reason it can’t really replace the rich communication that happens in a real-time debate where all people are present in the same room.
What you need to ensure is a way for the team to communicate by voice (which is our richest communication medium) and through a hands-free solution. For this we are going to use the free TeamSpeak client. At no cost, TeamSpeak provides access to numerous servers where you can setup a private room that all team members can join. Everyone can now truly communicate in real-time. There are other clients that may be used too, such as Mumble or Skype.
Naturally, all other mediums can still work. E-mail, IM or IRC are all still valid solutions. Particularly important when there is a need to persist what is being discussed. But for real-time communications you’ll find yourself using more and more, something that allows you to communicate better and faster. This is an essential aspect to team software development, as important as anything else we’ve discussed so far.