Best of Open Source Awards 2013

Bossie Awards 2013: The best open source application development tools

InfoWorld's top picks among all of the languages, frameworks, libraries, and tools that programmers use

The best open source development tools

Did you notice there's a lot going on with JavaScript? Node.js continues to pop up in more and more places, and then there's the explosion of JavaScript frameworks on the client side. Many of these client-side frameworks are aimed at making Web development more like "real" application development, while others tackle the challenges posed by mobile devices. Still others bring 3D and sophisticated data visualizations to the browser (without plug-ins!).

But JavaScript wasn't the only programming language to have a good year. Among our 30 winners, there are plenty of tools here for those who build real real applications. 

Bootstrap

The Web design framework that took the world by storm just keeps on taking the world by storm, with both its legacy 2.3.2 version and its bold new 3.0 format. Used in conjunction with jQuery, Bootstrap can deliver great-looking, mobile-ready, highly responsive websites. Some folks still grumble about how marking up a site for Bootstrap makes it difficult to use anything but Bootstrap afterward, but such is the price we pay for all sorts of useful frameworks, from Joomla to Django. The advantages we gain in return guarantee Bootstrap a central place in the design language of the Web.

-- Serdar Yegulalp

LESS

If you're a Web designer, CSS is useful. If you're a programmer, CSS is agony, with no variables, no functions, no native way to do many things that require JavaScript. It was only a matter of time before someone created a library to do all that, and many people have, but one of the most commonly used and powerful is LESS. Implemented in JavaScript, LESS is already a cornerstone of many other front-end frameworks (such as Bootstrap), and the results compile themselves down to native CSS.

-- Serdar Yegulalp

AngularJS

HTML wasn't designed for building applications, and even HTML5 doesn't completely solve this problem. AngularJS lets you take static HTML and make it dynamic. Data can be automatically bound to controls, forms can be validated without having to write tons of JavaScript code, and you can even invent new HTML syntax that serves the needs of your application. Localization, unit testing, and MVC patterning are all part of the framework.

-- Serdar Yegulalp

Backbone.js

Backbone.js is a way to give JavaScript-powered Web apps structure they don't possess by default. Think of it as the yin to AngularJS's yang. Although AngularJS is an entire framework for developing MVC-style apps using HTML and JavaScript, Backbone.js is a much simpler tool for incorporating models, views, and events.

Backbone.js doesn't have built-in support for things like two-way data binding (as AngularJS does), but for those reasons it might be a better complement to existing applications. It's "a library, not a framework," as the documentation puts it, and sometimes that's all you need. Among those putting Backbone.js to use: Hulu, Gawker Media, Disqus, Airbnb, Pandora, Spin, Pitchfork, and tons more.

-- Serdar Yegulalp

Enyo

Enyo was short lived as the application framework for webOS and HP's ill-fated TouchPad tablet, but signs point to a longer and more prosperous career in cross-platform Web development. Enyo 2 is an object-oriented JavaScript framework that can be used to build HTML5/CSS apps that run in desktop and mobile browsers.

Enyo uses component-driven UIs and encapsulation to improve code reuse and simplify code maintenance. You'll find flexible layout components for views and transitions, and the Onyx UI toolkit offers up the standard palette of sliders, pickers, and progress bars. With a minified size of about 25K, Enyo packs some good capability in a lightweight package.

-- James R. Borck

jQuery

Anyone who has ever hated the vagaries of JavaScript or the Document Object Model will love jQuery. This JavaScript framework makes the client side of Web programming a breeze rather than a chore. It works across all the major browsers (except for earlier versions of Internet Explorer that no one should be using anyway) and automates many common UI tasks that would otherwise require inordinate amounts of fiddling about. jQuery may not be the smallest library of its kind, but it has one of the richest and most useful collections of third-party plug-ins for any browser-based application project. Don't forget to check out the side projects like jQuery UI, too.

-- Serdar Yegulalp

Ember.js

This is not your traditional JavaScript library. Created by developers with a Rails background, Ember.js is a model-view-controller framework geared for building scalable Web applications. Why use a client-side MVC framework? It all depends on how interactive your application needs to be. The more interactive, the more benefits you get from using the Ember.js library. This winner gives a real boost to JavaScript development.

-- Indika Kotakadeniya

Emscripten

Emscripten is a compiler that turns C++ into a highly optimizable subset of JavaScript called asm.js. Developed by Mozilla in conjunction with the game industry, Emscripten, asm.js, and an optimizing asm.js compiler for Firefox bring real-time applications to the Web. Why should you care? If you would like the ability to play games at near-native speed in a Web browser, you should care. Just check out the video clips!

-- Indika Kotakadeniya

D3

The D3 (Data-Driven Documents) JavaScript library allows Web authors to produce simple to advanced visualizations that run on all modern browsers without any plug-ins. The underlying display technology consists of SVG, CSS, and HTML. Powerful enough to manipulate large data sets quickly and effectively, D3 is also easy enough for the beginner who needs only a simple bar graph, pie chart, word cloud, or scatterplot. The D3 website offers tons of examples that are easily modified for your commercial, educational, or artistic purposes. In many cases you can use the example code as a template and simply add your data.

-- Joseph Roth

X3DOM

X3DOM (pronounced "x-freedom") is a free open source framework that integrates 3D graphics with HTML5. Prior to X3DOM, X3D scenes not only required browser plug-ins, but the 3D scene could not interact with HTML actions (button clicks) and other DOM-triggered events. X3DOM allows Web developers to manipulate 3D content simply by adding, removing, or changing DOM elements -- and the X3D language can be picked up in a weekend.

Most modern browsers already support X3DOM. The latest versions of IE, Firefox, Chrome, and Safari all have the necessary WebGL support and are X3DOM compliant. Sounds fun? Check out the great X3D language tutorial and the examples on the X3DOM site.

-- Joseph Roth

PhoneGap/Cordova

Writing mobile apps has never been easy; in some ways it's like the early days of Unix -- what operating system are you going to target? iPhone? Android? BlackBerry? Windows? PhoneGap aka Apache Cordova allows you to build cross-platform mobile apps with standards-based browser technology such as HTML, CSS, and JavaScript. Version 3, released in July of this year, is a major upgrade, streamlining the architecture around the idea of individual plug-ins that can be used across most mobile operating systems.

-- Steven Nuñez

Modo Labs Kurogo

Modo Labs' mobile middleware engine, Kurogo, built on the MIT Mobile Framework, bundles back-end data connectors, display templates, and browser detection to deliver content tailored to the calling device. Kurogo's templating system lets you natively support desktop browsers and HTML5 mobile browsers, as well as native iOS and Android clients, all from the same data sources.

Good abstractions between data, business logic, and UI templates promote code reuse. A number of prebuilt modules let you plug in common functions such as authentication, calendars, maps, social media, and content feeds. You can also build your own modules with PHP/HTML/JavaScript. The browser-based admin console allows you to configure the system and manage modules without editing configuration files.

-- James R. Borck

Node.js

Built on the same V8 JavaScript runtime engine used in Google's Chrome browser, Node.js allows you to create high-performance, nonblocking, event-based, server-side applications written in JavaScript. Node.js is a complete platform independent of Apache or other Web servers. A fully JavaScript world is no longer just a theoretical possibility. Some very serious players in the Internet game have implemented back ends in Node.js.

-- Andrew C. Oliver

OpenShift

A free PaaS, OpenShift helps developers build, test, deploy, and manage applications in a cloud. OpenShift incorporates Git and Jenkins, provides Apache and JBoss servers, and supports languages such as Node.js, Ruby, Python, PHP, Perl, and Java. Unlike other open source projects in this space, OpenShift managed to produce a general availability release. Cloud Foundry may eventually pull ahead with the addition of support from IBM, but this was OpenShift's year in the sun. 

-- Michael Scarlett

Cloud Foundry

Cloud Foundry is the open source PaaS offering from the newly formed Pivotal. It can be used to deploy your applications on a variety of infrastructures, including Amazon Web Services, OpenStack, and vSphere. It supports Java, Ruby, and Node applications out of the box, but if you're working with .Net, you can use Iron Foundry, another open source project built on Cloud Foundry.

In addition to the open source version, Pivotal offers a hosted version (currently in beta) that deploys your apps to Amazon Web Services where you can easily bind a selection of services, including MongoDB, RabbitMQ, and JMeter load testing. Enterprises are already paying attention: GE, IBM, Intel, and Baidu are among those that have already adopted the software.

-- Jonathan Freeman

XAMPP

XAMPP certainly meets its goal of making the platform of Apache, MySQL, PHP, and Perl more easily accessible to developers on Linux, Mac OS X, Windows, and Solaris. Installation is as simple as unpacking an archive file and running a script. Upgrades are just as easy.

With all software features turned on by default, a developer does not need to spend time learning how to configure Apache and MySQL and PHP, then figure out how to make them play together nicely. Once you're ready to address server security, XAMPP provides convenient scripts to patch most of the security holes that the initial default settings leave open.

-- High Mobley

Adobe Brackets

Brackets represents a startling break from traditional Web development. Created by Adobe, Brackets brings context-sensitive HTML/CSS/JavaScript coding into the browser, combining inline editing with live previews within a single browser window -- no more bouncing back and forth between files or juggling code with Firebug.

Put your cursor on an HTML tag, hit Ctrl-E, and all the relevant CSS rules become editable within the page. As you make your changes, you can view the results in real time. Just click a JavaScript method call to edit the actual function -- directly inline. Plug-ins bring more functionality such as macros, snippets, and formatting. Brackets is still baking and a little buggy at times, but it's a good effort and a fantastic idea.

-- James R. Borck

Notepad++

Notepad++ is one of those utilities that makes you wonder how so much functionality can be available for free. Although you might think there's nothing more to add, this free Windows tool continues to receive regular updates. Notepad ++ provides syntax coloring and formatting for a wide range of languages. You can record keystrokes with the macro recorder and play them back to automate a series of instructions. Built-in tools include the ability to remove blank lines from text files and to tidy HTML code.

-- Paul Ferrill

Apache Shiro

A comprehensive Java security framework that is very easy to understand? It's not a contradiction. Apache Shiro handles authentication, authorization, enterprise session management, and cryptography. Shiro offers a wide variety of options while also avoiding complexities by providing a clean and intuitive API.

-- Michael Scarlett

Jenkins

You thought you had an excuse to skip out on continuous integration? Jenkins makes it easy. Written in Java, this open source continuous integration tool originally forked from Hudson and is now the more active sourcebase. It works well with source code management systems such as Subversion, CVS, and Git, and it can execute widely used build tools such as Ant or Maven.

-- Indika Kotakadeniya

Enalean Tuleap

Enalean is a French company that doesn't receive much attention in the States, but the company's open source application lifecycle management tools could certainly change that. Tuleap helps you bring order and discipline to development lifecycle processes by coupling workflow automation with change management and quality compliance.

Within a Tuleap project workspace you can view and update artifacts via direct integration with version control, code review, and continuous integration tools. The Eclipse Mylyn connector was a good addition this year, bringing bug reports right into Eclipse code views. Good collaboration tools, change monitoring, and real-time dashboards make it all the more likely that the best-kept secret in application lifecycle management will get out.

-- James R. Borck

Scala

Scala describes itself as where "object-oriented meets functional." On top of being OO, Scala is also a full-blown functional language. It usually runs on the Java VM, so Java and Scala classes can be freely mixed. Many frameworks including Akka, Finagle, and Play streamline the development of highly scalable and concurrent systems. If you want higher-order features that have been implemented in real-world projects but prefer not to wait for Java 8, use Scala today.

-- Andrew C. Oliver

Ruby

This open source programming language is object oriented while balancing functional with imperative programming. Used for everything from building Web apps to system administration, Ruby can also be used to automate just about anything you do manually in SketchUp, greatly increasing your modeling efficiency. Ruby has continued to grow in the marketplace. The 2.0 release earlier this year continues Ruby's evolution with lazy enumerations and other functional programming elements.

-- Michael Scarlett

Python

Easy to learn and with "batteries included," as the developers themselves put it, Python has become one of the top programming languages, not only for the Web, but for the whole of IT as we know it. Hosting companies include Python support as a standard item, as do app-deployment clouds such as Heroku and Google App Engine, making Python a good choice for building an app that can run just about anywhere. Development on both of its major branches, 2.7 and 3.3, continue in parallel, with more and more projects slowly gaining 3.x compliance along the way.

-- Serdar Yegulalp

Django

One of Python's bigger and more visible success stories, the Django framework makes creating interactive websites a joy instead of a chore. Like the language it's built on, Django's "batteries included" philosophy comes with everything from user-account support to databases to templating. The framework is not without its quirks. The way databases are handled can be tough to wrap your head around, but the payoff, in terms of how quickly you can get things running, is more than worth the effort. I'm in the process of rewriting a site originally deployed in C#/ASP.Net to Django/ Python, and we've accomplished an astonishing amount of work in only a month.

-- Serdar Yegulalp

IPython

IPython, an interactive Python interpreter that reached Version 1.0 this year, has seen a huge interest from the scientific computation community. One of the main reasons for IPython's popularity is the IPython Notebook, a Web-based tool for both interaction and documentation that supports inline graphics and embedded HTML using the markdown syntax. IPython Notebook files can be shared and viewed over the Web for collaboration purposes.

-- Paul Ferrill

Raspberry Pi

As a kid, I had one of those "100-in-one" electronics hobby kits. The Raspberry Pi is the 21st-century equivalent, a single-board PC with the power of a modern smartphone and a whole universe of hacking and modding possibilities. Boot an existing OS distribution with it or roll your own. The gamut of ports and sockets on the board makes it possible to do everything from sending out video to bringing in data from just about any USB-connectable device. Batteries are definitely not included -- well, they might be, depending on what incarnation of the kit you purchase.

-- Serdar Yegulalp

Arduino

The Arduino project makes low-cost, open source microcontrollers that are easy to program using the free Arduino IDE, which runs on OS X, Windows, or Linux. The control language syntax is based on a simplified C/C++ language library. Extensible hardware daughter boards called shields allow for Ethernet, Wi-Fi, color displays, motion sensors, GPS, Zigbee, Bluetooth, or even robot motors with wheels. Arduinos can be controlled through sensors or Ethernet/Wi-Fi connections to activate lights, motors -- virtually anything the designer chooses. Complete kits with sensors and actuators are available directly from Arduino or numerous resellers. As little as $100 buys you a front-row seat in the Internet of things.

-- Joseph Roth

Copyright © 2013 IDG Communications, Inc.