Bossie Awards 2012: The best open source application development tools
InfoWorld's top picks in editors, IDEs, frameworks, and other tools programmers use
The best open source application development tools
That old debate -- native app or Web? -- has gathered new steam in the wake of the iPhone, iPad, and Android devices. Then again, maybe not, thanks to a number of mobile development tools that let you build with HTML, CSS, and JavaScript and still tap native features. Elsewhere, new tools and libraries as well as old (but not dusty!) standbys are bringing new levels of power and ease to both native coding and Web development (look, Ma, no plug-ins!).
Node.js
What do you get when you combine the accessibility of JavaScript, the coding aesthetics of the C language, and the modular approach of Unix? You get Node.js. Built on Google's open source V8 JavaScript engine and available on Windows, Mac, and Linux machines, Node.js has become one of the most popular repos on GitHub and continues to show up as the foundation for numerous cloud-based services.
-- Mike Amundsen
PhoneGap
PhoneGap was the first to pull off a multiplatform mobile app development environment, but it is sort of a framework of stuff. Compared to other multiplatform tools or native development, PhoneGap requires a lot of work, and users can spot a PhoneGap application a mile away. All of the native-looking HTML widgets don't make these apps "feel" native. But those who live by Web standards live by Web standards. PhoneGap will still have a place in the HTML5 world.
-- Andrew Oliver
Titanium
Titanium is a product of Appcelerator, your typical VC-backed company that's had three pivots in its business model that we remember. Possibly as a result, the product has never been mature. However, it's clearly the best-engineered and most complete solution competing with PhoneGap and Rhodes. A JavaScript engine on top of native widgets, Titanium is a little easier than native iPhone development and a little harder than native Android development. If you want a multiplatform application that looks and feels native today, this is your best bet. But it is a buggy platform, and if HTML5 becomes dominant, Appcelerator pivots again and Titanium dies.
-- Andrew Oliver
Sencha Touch
Sometimes the second time is the charm. Such is the case with the inspired sophomore release of Sencha Touch, an API/SDK bundle that lets mobile app developers tap native device functionality using only HTML5, CSS, and JavaScript. Support for the Model-View-Controller design pattern will resonate with enterprise developers, while the well-documented API and easy-to-follow setup path will put newcomers right at home. With a solid library of prebuilt widgets, good HTML5 and local store management, an extensible class system, and excellent runtime performance, Sencha Touch 2 is one of the best approaches to Web-wrapped mobile app delivery we've seen.
-- James R. Borck
Rhodes
Rhodes is for those nonexistent hordes of Ruby developers hoping to write a soup-to-nuts mobile application or those hordes of practically nonexistent mobile developers who wish they could use Ruby. Writing a mobile app in Ruby with a UI in what looks like ASP or JSP feels funny even if you are a Ruby developer. Motorola Solutions acquired Rhodes developer RhoMobile shortly after Motorola Mobility's acquisition by Google was announced. It was hard to imagine Rhodes going anywhere before the acquisitions. Post-Google, it is hard to imagine this becoming very popular.
-- Andrew Oliver
WebKit
Most people know WebKit as the rendering engine at the heart of the Google Chrome and Apple Safari browsers, but it powers a great many other projects: the Amazon Kindle, the Android browser, KDE's Plasma Workspaces, and even parts of Adobe's Creative Suite. WebKit support exists for a panoply of platforms, including the Qt framework. Aside from the Web page rendering components, WebKit also contains a JavaScript engine that renders JavaScript bytecode as platform-native machine language.
-- Serdar Yegulalp
VirtualBox
A powerful, Type 2 virtualization platform, VirtualBox runs on Windows, Mac OS X, Linux, and Solaris, and it supports these and many other common operating systems as guests. Many of its native features are on a par with commercial products: snapshotting, guest integration (including copy/paste and soon drag-and-drop), USB device support, remote machine control via RDP, support for multiple virtual monitors and multiple virtual CPUs, and much more. Despite having been acquired by Oracle, its development continues apace, with version 4.2 in the offing as of this writing.
-- Serdar Yegulalp
Three.js
Sure, it might make sense to write your graphics software in C, but C doesn't run in Web browsers. JavaScript does. Three.js brings a nice layer of abstraction to JavaScript and WebGL so that you can build 3D objects, flip them, rotate them, morph them, and more 3D actions. All this happens in the browser without official installation because it's JavaScript.
-- Peter Wayner
Bootstrap
A long time ago, the CSS and JavaScript were just a few lines. Today, they're massive collections of smarts. To keep them organized and tame their spaghetti tendencies, Twitter created Bootstrap. It's a quick way to create a sophisticated-looking website that looks marvelous both on desktops and on phones. To make it sweeter, you can roll your own custom version of Bootstrap with just the widgets and jQuery plug-ins that you need. That's low overhead.
-- Peter Wayner
Git
Do you remember CVS and Subversion? They're headed for the museum of software used by our grandparents. Suddenly, Git and its decentralized approach to version control is everywhere. Everyone now wants to use Git to maintain the source code and even deploy it to the servers. About the only downside is that the options can send code traveling down so many paths that you need to be a real genius to keep track of the branches. Then again, when did anyone ever turn down more power?
-- Peter Wayner
Jenkins
Continuous integration is the central processing unit of good software development. Jenkins is more or less the continuous integration build system. When Oracle took over the popular project Hudson, it handled the community with its usual grace and tact (see LibreOffice). The community forked, Oracle kept the trademark, and the community kept most of the developers, users, innovation, and energy. Since the fork, Jenkins has added a lot of new features; installation and configuration have become easier as well. Jenkins has a plug-in for nearly everything you might want to integrate it with. Whether that is an alternative build system, revision control system, or remote protocol, Jenkins is for you.
-- Andrew Oliver
jEdit
jEdit is a perennial favorite text editor for programmers. It features syntax highlighting for more than 200 languages and file types, a plug-in architecture with a built-in plug-in manager (and access to 200 plug-ins), unlimited copy-and-paste clipboards that are persistent across sessions, and discontinuous text selection. Plus, jEdit is programmed in Java, so it is cross-platform and works on Windows, Linux, Mac OS X, BSDs, and Solaris.
-- High Mobley
Code::Blocks
We can all name any number of excellent open source IDEs, but here's a salute to one you may not be aware of. Code::Blocks is a cross-platform IDE written in C++ that uses the wxWidgets GUI libraries. It offers the features you expect from an IDE, such as syntax highlighting, code completion, code folding, MSVC support, and integration with several compilers and debuggers. It even has support for parallel builds on computers with multiple cores or CPUs.
-- High Mobley
wxWidgets
This C++ library allows developers to write GUI applications (such as Audacity, shown) and compile them for many different platforms. It has GUI platform support for Windows, Mac OS X, Linux/BSD/Unix with GTK+, the iPhone SDK, Windows Mobile, and more. And wxWidgets-compiled programs support the native GUI for each supported platform, rather than merely emulating the look and feel. wxWidgets also has hooks for popular scripting languages like Python, Perl, and Ruby.
-- High Mobley
Qt
Qt is a cross-platform application development and UI-construction framework for programs written in C++ or Qt's own QML language. An astounding array of both commercial and open source applications are built with the Qt framework, which is dual-licensed for both for-profit and free programming needs. Among the free open source apps that use Qt are VirtualBox and VLC; other apps that make use of the framework include Skype, Adobe Photoshop Elements, and Autodesk Maya. The development environment is a highly polished IDE with plenty of guidance for the prospective programmer.
-- Serdar Yegulalp
Boost
A goldmine for the C++ programmer determined not to reinvent the wheel, Boost is a repository of function libraries boasting a high degree of peer review and portability. Many basic functions are provided through Boost -- sort and search algorithms, regular expressions, common math operations -- but there are tools for aiding the programmer directly, such as a C++ implementation of a "for each" function and message-passing interfaces for distributed architectures. A broad variety of open source and commercial applications (such as Adobe Photoshop CS5, shown here) use Boost libraries.
-- Serdar Yegulalp
Clang
Clang lets a programmer make use of the LLVM compiler infrastructure to more quickly and efficiently compile programs written in C, C++, and flavors of Objective-C (one of the many signs of Apple's involvement in the project). Devised as a replacement for using GCC to work with LLVM, it now replaces almost all of GCC's stack. It provides features like incremental compilation and more detailed debugging and optimizing information via source code indexing and parse trees. The Xcode compiler is one way to make use of Clang.
-- Serdar Yegulalp
FindBugs
Java runs on more than 3 billion devices worldwide -- that's billion with a "b" -- so considered statistically alone, insecure Java code must be everywhere. FindBugs uses static analysis (sans code execution) to check compiled Java (class or JAR) for bugs (patterns in bytecode consistent with coding errors) -- including bugs that can be used to exploit Java applications for malicious intent. FindBugs also has a nice plug-in architecture that can be used to extend bug detection and integrate with tracking systems.
-- Victor R. Garza
Copyright © 2012 IDG Communications, Inc.