No one questions that different trades, like carpenters and bricklayers, or different professionals, like doctors and lawyers, use different tools.
Even within a given profession – like the medical field – a cardiologist uses a different set of tools than a dentist.
The same is true for software professionals.
Developers working on real-time, embedded systems need different features and functionality than those who are programming user applications.
Even within web development, the tools needed can be dependent on if you are writing code for the user interface, the backend, an e-commerce application, and so on.
Some web developers cross over into full-stack development, needing multiple tools, others focus on a single area of expertise.
One thing all web developers need when it comes to tools are reliable, well-tested resources that they can easily find help and guidance with if needed.
This set of criteria makes open-source tools an attractive option for web developers, regardless of what part of a web application they work on.
Even large enterprises and web development companies have embraced open source tools for use within their organization.
Open source tools offer a wide range of features and functionality.
And because they are community-supported, popular tools see frequent updates and benefit from a lot of user testing.
The downside is that there are many open-source tools to choose from for web developers.
Where do you start? This list is a jumping-off point to finding the right tools to use for developing your open source web application or site.
Version Control
Git
For many projects, Git is the version control offering of choice and the repository where you’ll find the code for many open source projects.
Git offers free and paid accounts, depending on your needs, has extensive community support, and is used by some of the largest companies in the world.
Subversion
Before Git, there was Subversion. A fifteen-year-old application, Subversion is a mature tool that is still under active development under Apache.
It’s offered as a centralized version control tool and is recognized as being robust enough to be an enterprise-grade application.
It’s used in a variety of environments, from large organizations to smaller custom software development companies.
Bazaar
Bazaar is a GNU Project version control offering sponsored by Canonical.
Offered as a download, you can use Bazaar offline, offers a wide range of expected features, and can be used both with a GUI or a command-line tool. Bazaar also offers project hosting and open APIs for integration.
Mercurial
Mercurial is a fast and powerful source control management tool that is fast and easy to learn. As a result, Mercurial is a good choice for teams that want version control on code and other assets, like creative and copy.
It supports multiple workflows and offers enhancements with extensions to the application. It’s a one-stop version control shop for a web development company that needs source control for multiple disciplines.
Languages
There are so many open source languages available for web developers today. This list just scratches the surface with some of the most widely used.
Java
Java remains one of the most widely used programming languages in the world. Developed and owned by Oracle, the language’s popularity and breadth means there are a wide range of tools, libraries, documentation, and tutorials available to help developers learn and use the language.
Perl
Perl has been around a long time, and as a result, it has a very active community and offers a feature-rich language with plenty of support.
Despite being around for more than 30 years, Perl is still under active development.
PHP
PHP is an all-purpose, service side scripting language, like the Swiss Army knife of backend languages.
It’s flexible, proven, and is the underlying language to some of the world’s most popular websites.
Go
Compared to some of the other languages on this list, Go is a relative newcomer in the web application realm.
Developed by Google in 2009, Go is similar to C, but offers garbage collection and some dynamic elements.
It’s a compiled language that feels like an interpreted one. Binaries are available for Windows, OS X, Linux, and others.
Python
Python’s biggest strength is that it is easy to learn, regardless of how long you’ve been a developer.
The language offers speed and reliability, is dynamically-typed, and has a wide support community and commercial adoption.
Ruby
One of the 20 most popular programming languages, Ruby is an object-oriented and dynamic language.
The focus in creating Ruby was on simplicity and was intended to feel natural when reading or writing it.
R
R was built for handling graphics, modelling, and statistical computing and is a GNU project. R is closely linked to the S programming language, and a lot of S code runs in R with no changes. R runs on Windows, Linus, OS X, and other UNIX platforms.
Lua
Lua is the fun entrant on this list. As the scripting language used for games, Lua underlies applications like Angry Birds and World of Warcraft.
It’s lightweight, embeddable, and powerful, and offers a simple procedural syntax.
Frameworks
Like languages, there are tons of open-source frameworks available for web developers. These frameworks can kick start your development and remove the need to recreate the wheel for common functionality.
AngularJS
AngularJS was developed to simplify adding dynamic content to HTML pages. It was purpose-built to play nicely with other tools and libraries, and it’s fully extensible.
Instead of boxing you into the language’s elements, it can be modified or even overridden to suit your development needs.
Ember.js
Ember was created to accelerate web development. In fact, they claim you can have your first application up and running in 5 minutes.
Using Ember means you can write less code and abstract common elements, making it so you’re building on top of the framework and less incorporating it into the application.
One of the most unique and handy features of Ember are their automatically updating templates. Ember is used by companies like Netflix, Heroku, and Square.
jQuery
JQuery is as popular a tool as web development frameworks. It simplifies HTML DOM manipulation and traversal, animation, AJAX, and event handling.
It is a feature rich library, but still small and fast, and is both extensible and versatile.
Node.js
Node.js is an incredibly popular asynchronous event-driven JavaScript runtime. It’s strength and appeal comes from having been designed to create scalable network applications.
Node.js doesn’t use threading and eliminates dead-locking processes.
Prototype
Prototype is focused on giving developers a leg up with front end development. It extends browser scripting and offers APIs to simplify development for front end developers using AJAX and DOM.
Hammer.js
Hammer.js is a go-to library for touch and mouse gestures, which makes it handy when you’re building mobile-friendly web applications.
The Hammer.js library doesn’t have any dependencies on other libraries, so it can be used as a stand-alone framework, keeping your application small.
Grunt
As the name implies, Grunt is meant to take on the repetitive tasks that can take up a developer’s time. It’s a task runner and handles things like compilation, unit testing, linting, minification, and so on.
You can easily create your own Grunt plugin if one doesn’t exist from the hundreds already available.
Flight
This event-driven Javascript framework was developed by Twitter for its own use and open sourced for all developers.
Flight maps behavior to DOM nodes is lightweight, uses another open source framework – jQuery.
Development Tools & IDEs
Eclipse
Eclipse is more than just an Integrated Development Environment (IDE). While Eclipse is an open source, community-driven development platform, it is also business-friendly and enterprise-grade.
For web developers that are looking for open source tools that will also increase their employability, you can’t go wrong with knowing Eclipse. The platform offers tools for Java, Java EE, C/C++, and PHP.
NetBeans
Supporting Java, HTML5, PHP, and C/C++, as well as a number of other languages, NetBeans is great for cross-platform development from desktop to mobile to Web apps.
It’s an Apache project with the kind of IDE tools you’d expect from a mature, commercial development environment.
Plus, NetBeans offers a library of screencasts to get you up and running quickly.
Mono
Mono steps into the open source area that a lot of projects avoid – support for .Net. That’s because, as an open source project, Mono is supported by Microsoft.
It’s based on the ECMA standards for C# and the Common Language Runtime. If you’re developing in .Net and you’ll need the ability to develop cross-platform, Mono is worth looking into.
SharpDevelop
SharpDevelop is another open source IDE for .Net that also supports VB.Net, IronPython, IronRuby, and F#.
Unlike Mono which supports multiple operating systems, SharpDevelop is available only for Windows. You can download SharpDevelop from GitHub.
Testing & Bug Tracking
Bugzilla
Because Bugzilla is used with a lot of open source projects – like Apache, Red Hat, Eclipse, and Mozilla among others – it’s worth your time to learn, especially if you plan on being a contributor.
It’s available on the major operating systems, and functionality includes bug tracking, allows code submissions and tracks changes, helps manage communication between developers and QA, and lets contributors review patches.
Bugzilla is still under active development, too, which means you can expect to see updates and enhancements for it.
GNATS
Part of the GNU project, GNATS is a set of tools for bug tracking that consolidates reporting from users to a central site.
One of the strengths of GNATS is the multiple options for interfacing with it. There is, of course, a web interface, but it can also be used with email, via command line, or with any one of a number of other input methods.
Part of this is because GNATS can store all database and configuration in plain text files, and offers tools for querying, editing, and maintaining the databases. Plus, as part of the GNU project, if there is functionality you need that you don’t have, you can always add it yourself.
API Development
APIs are a critical element in modern web development, whether you are a single application developer or a system integration company. Having the ability to create and use APIs will vastly expand the functionality of your application.
Apigility
Apigility is one of the quickest ways to get started developing APIs. Available for all the major OS platforms (Windows, Linux, and OS X), the tool works with PHP libraries and frameworks.
It includes features for RESTful and JSON, supports versioning, authentication, and documentation. To understand Apigility’s features, check out this video:
Swagger
One of the most widely used open-source tools for API development with OpenAPI, Swagger offers a powerful editor and the ability to auto-generate documentation.
Swagger was created by the team behind the OpenAPI Specification, so when it comes to open-source APIs, this team knows their stuff.
The tool is available under the Apache License.
REST-Assured
If you’re building APIs in Java, you may already be facing some challenges. With REST-Assured, some of the testing is is taken off your shoulders.
It’s a good choice for API automation testing and has a lot of baked-in functionality for testing Java APIs.
Fiddler
Fiddler allows you to reuse, monitor, and manipulate HTTP requests and is a good choice if you are working with .Net.
The tool offers extensions to its capabilities and with the APITest extension, developers can validate web API behavior.
Mobile Development
In our mobile-first world, web developers need to know what tools will help them to create mobile-ready web and native mobile applications.
Game Editor
Game Editor was built for new developers so that they could get up to speed quickly developing something fun and interesting.
It uses a basic version of the C language with a simple user interface and allows you to create games for mobile devices and PCs.
Cordova
Cordova allows for the development of cross-platform applications using common web development tools like HTML, JavaScript, and CSS.
It integrations with smartphone features using an API for access. Cordova is an Apache open source project.
jQuery Mobile
jQuery Mobile makes it easy to create sites that are used across form factors, from phones and tablets, PCs and laptops.
jQuery Mobile uses HTML5 and includes ThemeRoller to make customized themes easy across mobile devices and PCs.
Reactive Native
This Facebook-sponsored project allows developers to create native applications for Android and iOS using the javaScript library, React.
React Native can be integrated into your applications or can be used to develop a new application from the ground up.
Because React Native uses a single codebase that renders to native UIs, maintenance for multiple mobile platforms is minimized.