Open source is the lifeblood of application development, and of course there are many more great tools than we recognize here. In picking this year’s winners in the category, we zeroed in on the hottest of the new trends: server-side JavaScript, NoSQL databases, coding for touch-driven mobile devices, distributed data processing, distributed version control, and continuous integration. We also recognize the best PHP and Python Web development frameworks we’ve tested.

CakePHP

Among the PHP Web frameworks to hit the InfoWorld test bench this year, CakePHP offered the best balance between quantity of features and ease of use. CakePHP applications require minimal configuration, and an excellent set of command-line tools dramatically reduce the time required to build an application. Define a database for your application, and CakePHP’s Bake shell will create the model classes and method scaffolding for it — and will even construct unit tests for the model, if you like. CakePHP offers shortcuts for code reuse, helpers to simplify the use of AJAX, and even recommendations for securing your website. It’s clear why CakePHP is so popular and well regarded by its users.

CoffeeScript

Some programmers love to use every parenthesis and curly bracket that they can fit, just because it makes it absolutely clear how the logic should unfold. Others find them a terrible imposition and look for every chance to avoid them.

CoffeeScript was created so that the second group could avoid the terrible weight that the JavaScript syntax places on their overburdened fingers. The little finger, the one that is usually responsible for the curly brackets, is especially blessed because CoffeeScript doesn’t ask it to do very much.

If you scrape away the very thin syntax layer, CoffeeScript is just JavaScript underneath. It doesn’t look like it because there are no curly brackets, but the behavior is the same. The CoffeeScript make command, known of course as “cake,” turns the pithy CoffeeScript commands into proper JavaScript, inserting all of the extra parentheses, curly brackets, and what not.

There’s something clean and beautiful about the code, but it also might seem a bit more cryptic. When you unpack a conditional, you might have to think for a second to remember what will get executed and what won’t. There are no curly brackets to spell it out for you. Perhaps it’s just a matter of what you’re used to reading. But it’s perfect for people who don’t want to lift a little finger.

Git

A long time ago, Linus Torvalds and the rest of the kernel hackers looked at CVS and found it wanting. They were finding it more and more difficult to merge the work from disparate trees into one cohesive pile of code. One developer was heading left, another was going right, a third was going straight ahead, and yet one more was going nowhere at all. Multiple branches were driving the kernel developers nuts. Git was designed to handle complex teams like this.

Git is like CVS, but it changes the political model by making every repository its own fiefdom. There’s no central hub, which means each hub is the center of its activity.

The Git developers then created commands for comparing and merging any two repositories so that any pair of vassals could compare and merge their code without asking permission of the central authority.

This model seemed to explode this year, no doubt helped by hosting companies like GitHub. Suddenly people weren’t creating CVS projects on their server, but simply dropping Git repositories all over their disks. Then they would push and pull code between them. Power to the coders!

Apache Hadoop

Google was one of the first companies to illustrate the power of the map/reduce design pattern that powers the processing of big data. As the outside world took notice, some clever open source programmers created Hadoop so that everyone could scale their compute jobs. Over the years, the tool has grown more and more sophisticated, and now there are rumors leaking out of Google that the programmers inside look on jealously at the fertile open source project. The follower is now the leader, at least in the eyes of some.

Hadoop subprojects are turning the framework into more than a way to coordinate a rack of machines working on the same problem. The Hadoop Distributed File System will retrieve data from any node. If that’s not enough, there are distributed database layers like Cassandra and HBase that work with the network. If basic queries aren’t enough, a subproject called Hive will create summaries of the data throughout the network. In all, you have all of the tools for chewing through huge piles of data spanning tens, hundreds, or thousands of nodes.

Hudson and Jenkins

In the old days, it was enough to check your code into the repository. If you included a few sentences explaining what you did, the boss couldn’t get too upset. It’s all documented, right?

That was then. Now there’s a good chance your code is going to be pushed, prodded, and evaluated by Hudson or Jenkins. These are two versions of the same code tree, a divergence that was created when some folks balked at giving Oracle too much control. We’re not going to take a position on corporate politics and choose one over the other because that might get in the way of recognizing the fundamental genius of the code.

The idea is to wrap some real intelligence around the version control system, intelligence that can be extended with plug-ins. When you check code in, the little gnomes in each of the plug-ins goes through the code, building it and applying all of the possible unit tests. Then it displays these results in a nice website with simple colors that are so easy that anyone in management can follow what’s going on.

This may be painful for programmers who check in bad code and break the build — they won’t be able to hide for long any more — but it’s great for moving the project along. Even solo developers are using the tools because a little discipline makes better code.

jQuery Mobile and Sencha Touch

Trendy people who like to analyze tech trends like to suggest that the smartphones are halfway to replacing every laptop and desktop. While this may or may not happen, Web designers who want to keep their jobs are thinking about the best way to present information on the small screen. It’s not enough to assume that the browser will do an adequate job of formatting the data — an assumption Web designers were able to make when they were creating for desktops. Now they also have to anticipate how things look on the small screen and how they react to touch events that are quite different from mouse clicks.

There are a number of great open source frameworks tuned to fit information into Web pages that respond to swipes and finger presses. jQuery Mobile is an excellent extension to the almost indispensible library for manipulating a Web page. It’s possible to build out a menu-driven collection of Web pages, forms, buttons, and charts, all using HTML divs and spans. jQuery Mobile analyzes the nested collection of divs, then turns them into menu trees that work on the smartphone screen. Everything happens in the JavaScript layer.

Sencha Touch takes a different approach to the architecture but still delivers the same native-grade interface. Sencha developers lay out their application in JavaScript, then the tool turns it into the appropriate HTML divs and whatnot.

Sencha Touch is supported by Sencha, a commercial venture that builds other tools such as Ext JS for the main browser. The tool is available under the GPL 3.0 or a commercial license. Active forums and paid support make it a good choice.

Both of these tools offer fertile choices for HTML and JavaScript developers who want to squeeze their applications into the small screen. The results can work across many of the most popular smartphones, saving the developer the headache of writing in both Objective C and Java.

MongoDB

There are more slick open source NoSQL projects than there are fingers on two hands. All of the top versions have something nice to recommend about them, as well as their own cheering sections. But we can’t give an award to all of them, even though they’re pretty cool.

We can credit MongoDB with single-handedly drawing attention to the Affero General Public License (AGPL). The license is generally considered to be a stronger lever to compel users to share their source code because it considers creating a website to be equivalent to distributing the software. The GPL forces programmers to share code only when they “distribute” the software, something that most people feel doesn’t apply to putting up a website. The AGPL is an attempt to plug this loophole, and MongoDB is one of the more prominent packages to test it.

Already website owners and software developers are wondering whether they’re being fair with the MongoDB community when they set up their servers. Is the AGPL the right solution? People who love the minimal strictures of BSD-style licenses will probably balk and choose projects with looser licenses. Others, though, might be attracted because they feel that forcing everyone to share will be fairer to all. Forcing everyone to contribute may make a stronger project.

No one knows how this will work out, but it’s nice that MongoDB is taking a chance and experimenting with it.

Node.js

Was it just a few months ago that everyone loved multithreading and concurrently running tasks? My how the pendulum swings! Some clever programmers behind Node.js realized that each new thread cost 2MB in memory and gave it a second thought. Sure, that’s not much for a desktop app that might use one to watch the user interface and another to watch the network traffic, but it adds up quickly when you’re using a new thread for every request that reaches your website. If Slashdot loves your site, suddenly a server with 16GB of RAM looks quite small.

The genius of Node.js is that it uses only one thread to handle all of the input. This forces the developer to anticipate when the code might hang and to split up the code in these places. If a request comes into the website and you need to check a database to see if the user has enough cash in the bank, you write two functions. The first handles the work before the potentially slow database query, and the second handles the decisions after the poky database sends along the bank balance. When the programmer does all of this for Node.js, there’s no need for extra threads or an operating system layer that can juggle the different processes.

It turns out that JavaScript programmers aren’t put off by this imposition. Regular server-side programmers have just assumed that the multithreaded operating system would juggle the stalling threads. But JavaScript programmers have long been forced to break up their code when using the now ubiquitous XMLHttpRequest object, so adapting to the demands of Node.js was easy.

Node.js still feels more like a science project than an enterprise-ready tool, but the community is growing quickly as people recognize just how fast the system can be when the programmers don’t screw up. It’s only a matter of time before some clever JVM lovers write a nice container for Java or Ruby programmers who are willing to insert the right splitting points into the code. Until then, Node.js is the place to experiment with lightweight server stacks.

Web2py

When Massimo Di Pierro, a professor of computer science at DePaul University, created Web2py, he was aiming to build a Python-based Web framework that was both powerful and easy to use. He succeeded. Web2py is an intelligently designed, well-crafted framework that boasts a small footprint, an uncluttered API, excellent documentation, and a soup-to-nuts Web-based administration tool that also serves as a complete integrated development environment. Installation is easy, wizards help speed the creation of new applications, and complexity is abstracted away. Web2py is a powerfully capable framework with plenty of pleasant surprises under the hood — a standout among the pillars of Python

Web2py

When Massimo Di Pierro, a professor of computer science at DePaul University, created Web2py, he was aiming to build a Python-based Web framework that was both powerful and easy to use. He succeeded. Web2py is an intelligently designed, well-crafted framework that boasts a small footprint, an uncluttered API, excellent documentation, and a soup-to-nuts Web-based administration tool that also serves as a complete integrated development environment. Installation is easy, wizards help speed the creation of new applications, and complexity is abstracted away. Web2py is a powerfully capable framework with plenty of pleasant surprises under the hood — a standout among the pillars of Python

Source

Related Posts:

 

Comments are closed.