Andrew Wulf has listed his favorite open source tools and frameworks. I am going to pay heed to his call and list my favorite open source tools and frameworks for programming here. However, mine are more heterogeneous in terms of the programming language and includes both desktop and web programming.
- webpy – A simple yet powerful web framework for Python.
- django – A RAD framework for web development in Python.
- Boost C++ Libraries – Excellent portable C++ source libraries.
- Pantheios – C/C++ Logging API library.
- eXpat – A stream oriented XML parser in C.
- Loki – Andrei Alexandrescu’s library using policy-based design that heavily uses template programming.
- lighttpd – A secure and fast web server for high performance solutions.
- jetty – A standards-based, full-featured web server implemented entirely in Java.
- Apache Wicket – A lightweight web application framework for Java with POJO data model.
- Mono – I prefer Mono to .NET nowadays for C# development – one because it lets you do .NET development on Linux and secondly because it helps you reduce platform restrictions for your software.
- ErlyWeb – Web framework in Erlang, very interesting because of Erlang’s capabilities.
- WordPress – A PHP blogging engine, but suitable to many non-blog web sites.
- Drupal – One of the best CMSs available, implemented in PHP.
- XUL – XML User Interface Language
- JUnit, PyUnit, NUnit – A unit testing framework for writing test cases in Java, Python and C#, suitable for eXtreme Programming.
- Logback – The successor of logging tool log4j.
- CruiseControl – Framework for continuous build process.
- DDD – A graphical front end for command line debuggers.
Of course these are my favorite tools and frameworks, but I end up using a lot of other tools, open source and proprietary both, according to the project configuration. And I am sure I have missed some here. There is so much available out there, it is impossible to fit it in a list.
I cannot imagine the state of software development without open source, in fact, I do not want to.