From the early days of Wikidot, it's been a service that relies heavily on free and open source software. This was one of the most important thing that made it so successful. Without free and open source software we wouldn't manage to create and maintain this service so well.
The most important open source we use on our servers is:
- PostgreSQL database
- Lighttpd web server (previously Apache web server was used)
- Memcached for caching to improve performance
- Varnish as a front-end web cache
- Python for many small behind-the-scene tasks
- parts of Zend Framework because they make programming in PHP a bit easier
- Lucene search engine
- BASH for init scripts (so in case an unexpected reboot happens, Wikidot services start automatically) and repeatable and scheduled jobs
- Collectd monitoring software
- ImageMagick for making image thumbnails
- Webkit rendering engine for capturing web sites and generating thumbnails (also for Wikidot themes submitted by our users)
For storing and versioning software we use great Git version control system originally developed by Linus Torvalds — the creator of Linux kernel. This piece of software alone deserves a lot of respect since it changed the way our team works on the code. The most awesome feature of Git is support for powerful branches — in development we use one branch per feature. Code for production and testing server have their own branches. To put a feature to test, we merge the feature branch to the test branch. To make it live, we merge it to the production branch. This workflow made us do A LOT of merging at work. And it's Git that makes it work reliably and totally painlessly.
In addition to those we use open source software in our development process, for example:
- GIMP for bitmap graphics
- Inkscape for vector graphics
- VI improved and Emacs editors
- Firefox as most developer-friendly browser with the best and most complete Firefox extension for webdevelopers — FireBug along with FirePHP
- VirtualBox to run several virtualized operating systems on one machine to test our code
Open source software gives us three main benefits:
- It's free, so we don't need to pay to use it. Also it's cheap to experiment. Take a product, if it doesn't fit us, take another, try, etc. With commercial software, we would need to evaluate the software thoroughly before deciding to buy expensive licenses.
- It's popular mainly because it's free ;-). Many projects and developers use open source applications and eagerly share their experiences. Because of the developer community and culture of sharing it's much, much easier to find information about problems and solutions to them with open source comparing to similar situations with commercial software.
- It's good. Popularity makes authors gather a lot of feedback from users of their software so that they can improve the software really quickly. Also the fact your code is publicly visible makes you write it more elegantly. This means it's easier to maintain and review.
In order to support open source software and contribute back to it, each time we come across a bug or a problem, we communicate it back to the authors giving as much information as they need (this mostly happens on IRC channels). Each time we can fix the bug ourselves, we send a patch. Imagine you come across a bug in commercial software and you simply can't fix it. The original authors are the only people that can do anything about it. We don't want to rely on such tools and solutions.
For us it's clear that open source made Wikidot such a powerful tool. Are you convinced now too?
Photo comes from Flickr