In my article on personal learning by doing, I wrote about the importance of personal development projects for professional development and mentioned that I maintain a complete development environment at home assembled from free, open-source tools. In this article I present the tools that I use and find the most valuable, focused particularly on Java development.
For an integrated development environment (IDE) - the primary tool of any developer - I use Eclipse. Not only is it a great tool for Java development, but it is actually an application framework that can be easily extended by third parties through its plug-in architecture, which allows it to be used for much more. I use the PHPEclipse plug-in to do my PHP work within Eclipse as well.
Another critical development tool is a version control system. I use Subversion, which I like because I can have a Subversion repository on my home computer without needing to have a server running. I have never been fond of command-line interfaces for version control, so I use two Subversion clients: TortoiseSVN, which integrates with Windows Explorer, and Subclipse, an Eclipse plug-in. I've already written about my experiences using Subversion.
I am not going to mention all the open-source Java libraries I use to perform a variety of tasks, but I could not leave out JUnit, an automated unit-testing framework, which I use on all my Java projects both personal and professional.
For web development I test using primarily the Firefox browser with the Web Developer Extension. For a local web server, I use Apache Tomcat for Java-based projects and WAMP for PHP-based projects. WAMP is an acronym for the software stack including Windows, Apache web server, MySQL database, and PHP.
I would like to hear about the tools you use. In particular, I have not found a good open source issue tracking system that I like, which is one of the big gaps in my tool set.
If you find this article helpful, please make a donation.