IT departments are pretty familiar with tradeoffs. You can buy a comprehensive package to meet almost any need, but the cost might be prohibitive. Sometimes you can get something that does most of what you want, but forces you to change your work routines. But the beauty of open source software is that you can modify any given applications to suit your exact needs.
When Graham Pitt found that existing open source code review tools didn’t match his organization’s work flow well, or didn’t enforce it, he began working on his own web-based code review tool. Groogle makes reviewing code fast and effective because it only does the things his team wants and needs, and it doesn’t cost thousands of dollars per seat.
Groogle is particularly effective for reviewing code held in a Subversion revision control system. It has tight Subversion server integration, is language-agnostic, and focuses on usability and supporting workflows rather than changing workflows to support the code review tool. It can also help enforce an agreed-upon workflow. The workflow that Groogle imposes can be customized by modifying a database, and administrators can define new workflows by defining new review types. “This customization will be made accessible from the front end in future releases,” Pitt says.
Groogle has a more limited scope than comparable commercial tools in terms of the variety of source control systems it supports. Although it is extensible, it only supports either Subversion servers or file uploads of archives in tar, gzip, bzip2, or zip format. It is designed to review code changes where changes are held on separate branches. It doesn’t review non-text documents like many commercial review tools.
Groogle includes support for integration with many authentication mechanisms, including Active Directory. It also provides syntax highlighting for more than 100 different languages.
Groogle is written in PHP, JavaScript, and XSL, and leverages open source GPL projects such as Doctrine for database object relational mapping (ORM), PHP File Tree for tree support, jQuery, Geshi for code highlighting, libGD, Pear::Auth, Pear::Log, Pear::Text_Diff, Pear::File_Archive, and Pecl::Svn. “We use a LAMP stack because the tools provide a quick and easy way of storing, indexing, and presenting data to users across different platforms. There’s no need for the end user to download anything for their PC; all they need is a modern web browser.”
Similarly, the project chose to host on SourceForge.net because “it provided the quickest and easiest portal to make a GPL project available to the masses. It provides an instant web site, easy download management, statistics, makes the project searchable instantly, and setting up a publicly accessible Subversion repository via SourceForge.net was trivial.”
In addition to being searchable from SourceForge.net, Groogle announces new releases on freshmeat.net. “Together they provide a considerable amount of relevant traffic for Groogle. The numbers of downloads of Groogle is far in excess of what I expected,” Pitt says.
The road map for Groogle includes new features such as CVS and Git support, Subversion authentication support, private reviews, providing review metrics in CSV and graph formats, RSS support, major performance improvements, a greater focus on collaboration for group reviews, and ongoing improvements to the layout and presentation of Groogle and features in the Groogle database. “Groogle is a long way from finished,” Pitt says.
Major releases tend to be six to 12 months apart and bring significant new features. Minor bug fix releases typically come out every couple of months, as and when bugs are filed and fixed.
Pitt says progress on Groogle is slow because he’s generally the only developer and he works on the software part-time. “Some patches have been gratefully received and merged, but big releases and new features are often a long way apart because of this. Developers are always welcome to help on Groogle, and users who give feedback on functionality, layout, feature requests and provide bug reports are always appreciated.” You can contact Pitt via email or through the Groogle support forums on SourceForge.net.
If one of your new year’s resolutions was to make sure you’ve got solid system backups (and why wouldn’t it be?), then you’ve got to check out January’s Project of the Month (POTM). Clonezilla is a slick partition or disk clone tool that saves and restores used blocks on a hard drive. It’s perfect for sysadmins who need a way to perform bare metal recovery on one or even forty drives.
Getting started with Clonezilla is dead simple. “Clonezilla live comes with a GNU/Linux distribution for the machine you want to do the bare metal recovery on. It works on X86/X86-64 PCs, Intel-based Macs. If you want to use Clonezilla live, just download the Clonezilla live ISO image and burn it onto a CD. Alternatively, you can download the Clonezilla live zip file, extract all the files to a USB flash drive, and make it bootable. Then you can boot the machine you want to image or clone with the CD or USB flash drive. Just follow the menu instructions and you should be able to do this easily,” says Project Lead Steven Shiau.
To learn more about January’s Project of the Month, be sure to check out Clonezilla’s very own POTM page. Keep an eye out for Shiau’s concise but sage wisdom about his advice to a project that’s just starting out.
Agender is a small, simple scheduler. Mexican developer Gabriel Espinoza says he created Agender about a year ago “because I didn’t want to use a big application like Evolution or Microsoft Works. I started playing with the wxCalendarCtrl from wxWidgets, my favorite GUI toolkit, and after a few weeks I had something that worked.
“wxWidgets is a C++ library, and I prefer C++ over other object-oriented languages because of its portability and its speed. And I like wxWidgets because it isn’t just a GUI toolkit, it handles practically every difference between operating systems, creating real cross-platform apps.”
Espinoza uses the Code::Blocks IDE to develop Agender. “I like it because it uses wxWidgets itself, so the previews of the RAD tool, wxSmith, look like the real thing. The editor is very cool, the folding blocks are nice, and the code completion toolbar helps me find functions quickly. Autocomplete saves me lots of keystrokes; instead of writing if (){}else{} I only have to type ife
“I use g++ and the MinGW cross compiler, and the makefile is generated with bakefile, so there is support for other compilers. For Windows I use NSIS to create the installer; for every other operating system there is a configure script. I plan to create a binary installer for Linux based on Autopackage.”
In upcoming versions, Espinoza plans drag and drop functions, searching, and alarms. Coming first will be i18n support. “Agender has been already translated to Spanish and maybe soon will be available in German, thanks to my sister.”
Though Agender is small in size – code::blocks says 725 lines of code – Espinoza would welcome help with things like debugging under Windows and making a native build for Mac OS X.
Espinoza says he made Agender free software for several reasons: “fun (even people that aren’t programmers understand that), to be admired (it feel nice when you see there have been new downloads), gratitude (practically all the software I use is free software), and I think free software gives you a name – instead of saying ‘an unknown programmer’ you can say ‘a guy who has a project at SourceForge.net.’
“I put the project on SourceForge because it had the most features of any hosting site. SourceForge also has big traffic from people searching for new software, so that makes Agender available to a big audience. After creating the project I started the web site and added it to Google and freshmeat, and recently sent it to Softpedia, to make the software a little more known.
“I don’t know if people really like Agender,” Espinoza says. “The only people I’m sure are using it are me and two of my sisters.” If you give Agender a try, be sure and send some love his way.
Some SourceForge.net projects get hundreds of downloads a day. Some are updated monthly by teams of volunteers. And then there are projects like Dominoes on Acid. “I must say I don’t know if I appeal to either dominoes fans or people interested in mathematical logic,” says Matthias Benkmann, the program’s author. “I’m sure about only two fans of the game. The first is myself, and the second is the person who reported a bug two weeks ago, which prompted me to touch the program again after more than five years.”
Dominoes on Acid is a game superficially similar to the classic dominoes game. You get tiles with patterns on each end, and you can connect the ends of two tiles only when they show the same pattern. But instead of the standard two-color tiles spots, the tiles in Dominoes on Acid have (sometimes very complex) multi-colored patterns.
Dominoes on Acid is a solitaire variant of the game. You get a starting tile and an infinite supply of other tiles and have to build from the starting tile until you have reached a point where every branch of your structure ends with a blue-bottomed tile.
“That’s the game part, and if you want you never need to look further,” Benkmann says. “You can play the game and enjoy building colorful patterns with increasing complexity. But for the scientist the real gem is hidden under the hood. Every completed game of Dominoes on Acid corresponds to a strict mathematical proof in classical propositional logic. What makes this mapping so interesting is that you don’t need to understand propositional logic to play the game.”
Benkmann created the games as a programming project for a college computer science class in 2002, and updated it twice shortly thereafter. He considers it feature-complete. He wrote the program in Java “because at that time it was the best available choice for cross-platform development. I use Linux myself, but friends and family use mostly Windows. Some have a Mac. I don’t want to write software that they can’t use. Furthermore Java allowed me to create an applet version of the game that can be played in the browser.”
Between the time he wrote the program and now, Benkmann’s development tools of choice changed. “Back in 2002 I used CVS for version control, the text editor joe for writing my code, GNU make for orchestrating the build, and Sun’s JDK for compiler and VM. I chose CVS because there were no free alternatives (at least not mainstream ones) back then. I chose joe because Emacs and Vi(m) suck. And I chose GNU make because coming from the C/C++ world it was what I was used to. Ant was pretty young and obscure back then.
“From that time until this month I distributed the game and source code in a single JAR archive served from static webspace. No historic versions were available, nor was revision history for the source code. But when someone reported a bug in Dominoes two weeks ago, I decided I needed to have better infrastructure for maintaining and publishing new versions, even if they occur very infrequently, so I decided to invest the time to set up a SourceForge.net project. I chose SourceForge.net because it is well-known and I knew it offered the features I thought I’d need (Mediawiki and git). But mostly it was because I already had an account there and had prior experience with another SF project.
“When I created the SourceForge.net project I converted the Dominoes on Acid repository to git, because git as a distributed VCS/SCM allows me to have my own independent master repository on my computer while offering an equivalent repository publicly on SourceForge.net. If I touch the code again it will be in Eclipse rather than a plain text editor. And I may convert the project to using Apache Ant instead of GNU make for build orchestration.”
Typically, setting up an Asterisk software PBX server involves editing a lot of configuration files – fun for geeks, but maybe not the most productive use of anyone’s time. Elastix is a GNU/Linux/Asterisk distribution that integrates a number of tools with a graphical interface to allow administrators an easier way to configure Asterisk. That capability earned it a recommendation for a Reader’s Choice profile here.
With Elastix, installing Asterisk with a web interface takes about five minutes on a modern server. And Elastix give you more capabilities than just a PBX – it integrates packages such as FreePBX, Postfix, Hylafax, and Openfire to provide services such as email, fax, and Jabber instant messaging, all of them interacting with each other. For instance, you can receive voicemail messages via email in your Elastix server’s inbox or on an external server, and you can receive faxes, convert them to PDF files, and attach them to email. Around all of these packages the project wraps a common web interface for administrators.
Among the other tools bundled with the software is an endpoint configurator and the Elastix Call Center Module, one of the first GPL call center applications.
While it’s in use worldwide, Elastix is developed mostly in Ecuador by the folks at PaloSanto Solutions. Rafael Bonifaz, community manager for the project, says, “We were selling Asterisk services here in Ecuador in 2006, but the installation process took us too long, and every time it was the same job, so we needed to automated it. One standard installation process would also make support easier. We came up with Elastix and decided to GPL it and publish it on SourceForge.net, because it is the biggest and the best known FLOSS repository. It has great tools and makes our job easier. We love to show our users and clients the Elastix download stats.
“We use PHP as our main developer language. We built our own framework, known as NEO. For the web interface we use SQLite as our primary database, but some third-party modules and our call center modules use MySQL. We chose all of these tools because they are FLOSS and do a great job when integrating with Asterisk and GNU/Linux.”
The project has inspired two downloadable books: “Elastix Without Tears” in English and “Comunicaciones Unificadas con Elastix” in Spanish.
While the current 1.6 release has been a great success, Bonifaz says Elastix 2.0, which is in alpha now, includes several improvements. One is a conference room that will allow users to share a presentation via a web server. The presentation may be any document that OpenOffice.org supports, such as ODF or even a proprietary format like Powerpoint. Users can also have a document repository for the conference and a chat channel – all of this without the need for a plugin in the browser.
Another upcoming feature is the Elastix Operator Panel (EOP), which is similar to the current Flash Operator Panel (FOP) but does not need the Flash browser plugin because it is pure AJAX. Bonifaz says users can also expect to see improvements in the mail module and a VOIP provider module for easier SIP/IAX trunk configuration with VOIP providers.
If you’d like to help build new modules for Elastix, Bonifaz says the best thing is to join the developer mailing list. The project also welcomes help from anyone interested in creating documentation.
Copyright © 2010 Geeknet, Inc. All rights reserved. Terms of Use