Last week I blogged about the new SourceForge.net and one of the first questions I got was when are we going to “lift the covers” and show off our new tech.
There’s definitely more to come in terms of releases and code, but I thought it’d be worthwhile to start with a quick run through of the tech stack and a bit of a description of what we’re doing.
Our first rule for libraries and tools on the new forge, was that we needed to use open source everywhere. Partly this is just because having the freedom to look at the code and modify it where we need fixes, makes it’s the easiest and best way to develop software. Partly it’s because we’re an open source code hosting platform, and we want to use what we promote. But perhaps most importantly, it means that we’re not prevented from sharing our work with others, or from inviting others to work with us in the future.
At the same time we had a company wide decision to standardize on the technology stack that we’d used in the “consume” project last year. So, we’re using:
- and AMQP (RabbitMQ).
The combination of these means that we have:
- a huge number of libraries available to us,
- a web framework that we can turn into a plugin framework for projects and the tools they want,
- a schema-free database that lets us easily version documents to keep history on wiki pages, tickets, and other “artifacts” within the new forge
- a scalable system for handling asynchronous tasks, and propagating update notifications
The choice to use Python has been particularly valuable, since there are (literally) dozens of libraries that we were able to use to help us with everything from encrypted cookie sessions, and mongodb drivers, to markdown text processing, and syntax highlighting.
We’re still in the early days and have a lot more to do, but the goal is an open extensible, system that supports open source projects, and ultimately encourages more people do download and use a wider variety of open source applications.