Bossie Awards 2017: The best software development tools
InfoWorld picks the top open source software for building systems and applications
The best open source software development tools
Native developers, web developers, IoT developers, developers who ride the JVM, even developers who long to build on blockchain—there is something for everyone in this year’s Bossies. Click on to read about our favorite platforms, frameworks, programming languages, and other tools of 2017.
[ InfoWorld presents the Best of Open Source Software Awards 2017: The best open source machine learning tools. | The best open source cloud computing software. | The best open source databases and analytics software. | The best open source networking and security software. ]
Ethereum
Ethereum is a platform for blockchain run by a Swiss non-profit foundationand governed by the people who started the project. This isn’t to say Ethereum doesn’t have corporate backing. But unlike its super-enterprisey competitor Hyperledger, Ethereum smells and tastes like an open source project that is solving problems and serving developers. Blockchain is real, and Ethereum is a good place to start figuring out what you want to do with it. You’ll find a scriptable distributed computing platform, a distributed virtual machine, a cryptocurrency, and other tools and technologies.
— Andrew C. Oliver
Apollo Server
Apollo Server is a GraphQL server that works with most any Node.js HTTP server framework. It has been in development since April 2016, and the June 2017 release of 1.0 marks a big step forward in availability and support. With GraphQL, the data sources for your application are combined into a unified JSON object that is fetched from a single API endpoint—much more efficient than the REST approach of assembling responses from multiple endpoints. Notable customers already using Apollo Server are Ticketmaster and OpenTable.
— Jonathan Freeman
Lottie
Mobile apps have taken over and sophisticated animations add a polish and feel that takes user experience to the next level. Lottie is a library from Airbnb that takes high-quality animations from After Effects and makes them simple to integrate into iOS, Android, and React Native applications. Simply install an After Effects plug-in to export animation data and drop in the library for your platform.
— Jonathan Freeman
React Native
Many tools let you write JavaScript and get iOS and Android apps. React Native is different. For one, it supports NPM style modules. Two, it is designed to be extensible and include native components. Three, it is the product of Facebook, which knows something about mobile apps. Finally, it is based on React, which is probably the most useable JavaScript framework. There are differences between React and React Native but you won’t be in alien territory. If you don’t want to write two code bases for your mobile project, try React Native. It’s my favorite.
— Andrew C. Oliver
Enzyme
Testing React components is quick and easy with Airbnb’s testing library, Enzyme. Enzyme provides a JavaScript API to render React components without the need for the browser or DOM emulation. Nor does Enzyme care which test runner or assertion library you use. For advice on putting together your React testing stack, check out our guide.
— Jonathan Freeman
WebAssembly
WebAssembly, a binary compilation target for the browser, became available by default in Firefox and Chrome this year. WebAssembly is also slated to release with Safari 13 (currently available in preview), and can be enabled as an experimental feature in Microsoft Edge. WebAssembly will to let you write code in any language and compile it into a binary that can be natively decoded by the browser faster than JavaScript can be parsed. Think web applications executing at native speed.
— Jonathan Freeman
Kotlin
Kotlin has taken the Java and Android worlds by storm in part because it includes modern language features and supports Java 6. While Kotlin already worked for developing Android applications, Google announced in May that Kotlin will receive first-class tooling and support for Android development moving forward. If you’re a developer stuck writing for environments that require old Java versions, do yourself a favor: Take a look at Kotlin and join the modern era.
— Jonathan Freeman
Scala Native and Kotlin Native
Removing the JVM from JVM-based languages Scala and Kotlin has been the target of growing popularity in the last few years. The goal behind both Scala Native and Kotlin Native is to provide a lightweight binary without the need of a virtual machine and the overhead that comes with it. The community is small and the code is not production ready, but there is a ton of excitement buzzing around these up and coming gems.
— Jonathan Freeman
Go
Google’s Go language is designed to produce software that is straightforward, reliable, efficient, portable, even a little boring—but also readily understandable years or even decades later. That might mean saying no to certain features, such as generics. But it has led to Go being used for replacing critical old infrastructure and for building important new infrastructure (e.g. Docker and Kubernetes). Go may be conservative by design, but it has evolved rapidly and caught on quickly. A rich culture of third-party tooling and IDE support is testament to Go’s popularity.
— Serdar Yegulalp
Rust
Rust allows developers to write software that runs as close to the metal as C/C++, but without sacrificing safety, and with a toolchain and library befitting a modern computing language. Highlights of 2017 include Android build support, a revamped build system, faster compilation, and the Rust Language Server, which draws on the compiler, the Racer code completion utility, and a Microsoft-developed protocol to provide information about Rust programs to editors and IDEs. The project continues to deliver on its stated goals of making Rust easier to learn and use.
— Serdar Yegulalp
Clojure
Clojure is the perfect choice for prototyping advanced parallel and concurrent applications. It has a sophisticated macro system, multi-methods, a functional programming paradigm, and a REPL (read-eval-print loop), all running on the JVM, and it is used by some of the world’s largest companies, like Walmart and Netflix. With a vibrant community, mature ecosystem and good documentation, Clojure should be in every big data programmer’s toolkit.
— Steven Nunez
TypeScript
TypeScript is a superset of JavaScript intended for large-scale application development that compiles to clean JavaScript output. TypeScript adds optional types, classes, and modules to JavaScript, and supports tools for large-scale JavaScript applications for any browser, for any host, on any OS. Among many other wins for TypeScript, the popular Angular framework has been revamped in TypeScript.
— Martin Heller
Microsoft .Net Core
Microsoft’s .Net Core is the aptly named development platform at the front and center of the company’s fast-moving open source initiatives. Designed to be a fast and minimal subset of .Net Framework functionality for building CLI, server-side, or in-container apps on Windows, MacOS, or Linux, .Net Core recently added support for Universal Windows Platform (UWP) and Xamarin Forms for the sake of developing cross-platform desktop apps. Version 2.0 of the platform, delivered earlier this year, provides better tooling for rapid application development, localization of .Net Core apps, and profile-guided optimization for better performance.
— Serdar Yegulalp
Visual Studio Code
Visual Studio Code is a lightweight, portable IDE from Microsoft, written mostly in TypeScript and built on top of the Electron shell. VS Code provides comprehensive editing and debugging support, an extensibility model, Git support, and lightweight integration with existing tools. There is a good selection of extensions to VS Code available from the community as well as from Microsoft. Recent updates improved large file support and Markdown preview and added multi-root workspaces.
— Martin Heller
OpenRemote
A bigger deal in Europe than these United States, OpenRemote is used to create smart buildings that provide greater energy efficiency. You can buy smart lights, smart locks, a Nest system for your AC, smart appliances, and CO2 detectors (to determine which room you’re in) but if you want to make all that stuff work together, you need a platform to do that. Moreover, if you don’t really want to write a whole application from scratch, you need a way to get a UI without hiring a developer. OpenRemote is that way.
— Andrew C. Oliver
Copyright © 2017 IDG Communications, Inc.