RALEIGH, N.C. — At the All Things Open conference, Jeffrey Hammond, a Forrester Research VP and Principal Analyst, revealed that four out of five programmers are now using, or have recently used, open source development tools.
Forrester, with Black Duck software and North Bridge Venture Partners, conducted a survey of over 1,400 programmers and found that 84 percent now use open source software. The survey included not just programmers from open source companies but also developers from traditional proprietary companies such as Microsoft.
Why? The majority of them have switched to open source because they perceive open source development programs as having better performance and reliability. This, as Hammond observed, is a change. “Open source used to be popular because of the lower cost. Now the cost of tools is the least important element for developers.”
This popularity, said Hammond, means that “open source is taking over. This is a golden age for developers.” A consequence from this is that “We are now seeing open source tech compete with open source tech; it’s no longer open-source software vs proprietary.”
In addition, the survey reveals the three industries expected to be impacted the most by open source software are education, government, and health care. In these, and other areas, Hammond said, open source projects like Apache Tomcat, the JavaServer Pages (JSP) server, are replacing proprietary programs.
And open source is doing more than just replacing old software. It’s also leading the way in new software. Hammond cited big data and NoSQL as areas where open source has become the software groundbreaker. Proprietary software doesn’t really stand a chance in these new fields.
Companies are going along with this, according to Hammond, not just because of the cost savings but because they’d rather try an open source solution than deal with the hurdles of acquiring proprietary software.
The survey indicates that open source is leading in several other fields as well, including cloud/virtualization (73 percent); Content Management Systems (CMS) (66 percent); Mobile (61 percent); Security (59 percent); and network management (57 percent).
However, while development has swung heavily toward open source on the server, datacenter and cloud, on the desktop Windows still rules. The most popular single developer desktop operating system is Windows 7. Indeed, slightly more than two out of three programmers are running Windows, while just over 12 percent use Linux and slightly less run Macs.
Hammond thinks this is due to inertia. For example, when it comes to software configuration management (SCM), Hammond was “blown away” to find that the single most-used SCM program is Microsoft’s long obsolete Visual SourceSafe.
Still, despite some proprietary hold-outs, the general trend is clearly toward open source tools. Hammond pointed out that Windows developers, for example, are migrating to Git for SCM. Ironically, Git, along with Linux, is a product of the fertile mind of Linus Torvalds.
Building websites and web applications today is not only about being a great programmer, it’s even more important to be a smart programmer. This means to re-use existing code and applications when possible instead of re-inventing the wheel.
But what about all the other open source projects out there? As a web developer you can save lots of time or optimize the performance of your applications by using many of the other projects that are available.
Lets take a look on what’s out there, free for everyone to use.
New databases on the block
Traditionally you might have been using MySQL. Although MySQL still is a great database many new alternatives has shown up trying to solve some of the issues MySQL has.
MongoDB is one of the new so-called “NoSQL” databases. It’s scalable and offers high performance.
Apache Cassandra is similar to MongoDB in that it’s a “NoSQL” database, which is scalable, and offers high performance. It works well with very large and active data sets.
There are lots of more alternatives out there to choose from depending on your needs. Take a look at this list in Wikipedia.
Cache your data
As some data is used frequently it makes sense to put it in memory instead of querying a database each time. This can speed up a web application greatly.
Memcached is a simple but powerful way to cache small chunks of data in memory.
Redis can be used in the same way as Memcached but also includes many more features. For example it can also store data that should be persistent on disk.
Speeding up web requests
Most websites use the Apache web server to serve pages. This works great for most sites, but as soon as you start to get lots of traffic you might want to optimize things a bit.
Nginx is a web server, much like Apache, but it’s extremely fast. It’s often used to serve static content such as images or as a load balancer.
Varnish is a cache that you put in front of your regular web server. It works by putting all your popular content in memory and serves it directly, instead of having to pass everything on to your web server.
Manage your content easily
If you’re building a website which will have content that will be added and edited by writers you want to have a content management system (CMS). A CMS makes it easy to manage blogs and websites and also offers lots of plugins that can extend the functionality of your site.
While WordPress is a blogging platform it can also be used to manage whole websites, big and small.
Drupal is a complete platform that can be used to build scalable and flexible websites.
Having an interactive web user interface
JQuery is a framework with plugins to help build dynamic websites with AJAX interaction and animations.
If you want to try any of the other alternatives look through the list in this Wikipedia entry.
Other cool stuff
When you start to build complex web applications there are lots of software, libraries and modules that can help you solve problems that would otherwise take a lot of time. Below are two examples just to get you started.
RabbitMQ is a reliable and scalable messaging system that can handle high throughput. If you need to exchange data between systems or applications a messaging system is a great way to do this with lots of benefits compared to a custom solution or storing the data in a database.
Use a framework to speed up development
Whether you are using PHP or another language there are several different frameworks available that can help you speed up development and make your code easier to manage.
Symfony is a PHP framework that includes components and tools to help you build complex web applications faster. It also has over 1,000 plugins contributed by the community.
For fans of the Ruby language, Ruby on Rails is the most popular framework available.
Django is a Python web framework developed to help you build high-performing and elegant web applications quickly.
See this list on Wikipedia for a more complete list of web application frameworks available for different languages.
Spend your time wisely
As a developer it’s always worth the time to keep up to date on what new software is available as it can help you solve complex tasks easily.
Often time spent planning and doing research at the start of a project is well worth it since you can identify upcoming issues and how to solve them in the best way.
The days where you program your way out of every issue are over, it’s more about using existing technology in smart ways.