Categories
Tools

Choosing a Javascript charting library in 2016

Given the overabundance of tools available to a Javascript developer in 2016, finding and choosing the right one is often a challenge.

Especially when it comes to visualising data, either drawing animated charts or implementing custom interactive infographics, the choice becomes harder since there are a lot of tools out there: Wikipedia’s “Comparison of Javascript charting frameworks” currently lists 44 different libraries, jsgraphs.com currenty stands at 72(!) different charting tools and – to make matters worse – the Google search result for “best javascript charting libraries” over-delivers with approximately 786K results, out of which the first 20 results are all links with titles like “{{integer in multiples of 5}} best javascript libraries”.

Naturally, most of the relevant Stackoverflow questions of the”what is the best tool” nature are “closed as not constructive”.

In this article I aim to help with the above challenge by means of a slightly unconventional approach: In my research I tried to quantify the merits of the most popular libraries, given a series of “developer-friendly” metrics.

Sounds weird and subjective? It is. Read on.

Step 1: Understanding declarative vs imperative approaches

Before we start comparing, it is essential to understand how almost all of the available libraries can be split into two distinct categories based on their approach. Let us borrow from classical computer science and use the “declarative vs imperative” paradigm comparison for this.

The declarative approach

The majority of JS charting libraries follow the declarative paradigm: You write code that describes what you want to end up with, and the library ensures it happens dealing with all the minutiae.

FusionCharts, Highcharts, amCharts, Chart.js etc. all follow this approach: You pick a chart type (column, bar, pie), you specify a configuration object and the library outputs a nice looking interactive chart based on your wishes.

The imperative approach

On the other hand, tools like D3.js, Paper.js or Snap.svg follow the imperative paradigm. They provide you with helper methods which you then need to use to write code that visualises your data step-by-step.

For example, to create a bar chart with D3.js you will need to initialise the canvas, calculate where to draw the axis, draw the axis, calculate where to draw the columns, draw the columns, the legend, the point data, add the events etc.

It does feel a little counter-intuitive to choose any tool that follows the imperative approach, until one sees the amazing work implemented by Mike Bostock (creator of D3.js) for the New York Times, with animated interactive infographics such as the 2012 “512 Paths to the White house” to understand how powerful a library like D3.js can be.

In the next step I made an effort to establish “winners” in each of those two categories.

Step 2: Quantify the popularity of each tool

2.1 Mentions in Google articles

One needs to start from somewhere so my first step was to revisit the “best javascript charting libraries” Google search, filter out to show results only from the past year, open the first 20 hits (first two pages) and note down which libraries were mentioned.

95 libraries in total – see the “Mentions” tab of this Google sheet for a full reference (it’s the first tab – and yes, there exists a library called “Aristocharts”. Seriously).

I then filtered out the list to include only the libraries with at least 4 hits:

javascript-chartinglibrary.1png

Some surprises here already. No amCharts? No mention at all of Paper.js or Snap.svg? Interestingly, the fact that N3-charts “made the cut” here can be construed I believe as a testament to the popularity of Angular.js.

What comes as no surprise is the popularity of D3.js. It is also the only library in this list that follows the “imperative” paradigm making D3.js the clear choice when it comes to that approach. I marked D3.js as the “winner” in the imperative category, filtered it out and continued.

2.2 Licensing

Next step was to establish the license of each library. Many developers are partial to tools that are either open source or come with really relaxed licensing.

Library-mentions-license-visionmobile2

Some reading is involved if one wants to make sense of Google custom license for their “Charts” library (it’s free with a lot of caveats). Interestingly ZingChart offers a free (albeit watermarked) version of its library.

Please note that personal bias prevented me from filtering out the commercial offerings at this stage. I’ve used both Highcharts and FusionCharts in the past to great success and as a result I opted to not judge based on price – until I had all the metrics that is.

2.3 Github stars and watchers

Does the library have a repo in Github? And if yes, how many people are watching, how many have starred it? I intentionally steered clear of other Github measurements such as number of contributions or PRs since each repo has owners and each owner has his / her own personal approach towards how “open” they are to contributions.

On the other hand, a project’s star rating is a clear indication of how many developers (rather than simply users) “like” it. The “Watch” metric also tells us the number of devs who actively want to be notified when new things happen in the project.

javascript charting library

Google Charts had a few github repos but they were for projects that wrap / package their “Google Charts” project, e.g. GoogleWebComponents.

Two things stood out for me in the table above. The massive community support for ChartJS  – almost the same number of stars as Backbone.JS (!) – as well as the number of people who are watching Chart.js.

What is also surprising is that out of the three commercial offerings, Highcharts number of stars is orders of magnitude higher than the rest.

2.4 Stackoverflow tagged questions

Another metric that can tell us how many people are using a library is to see the number of questions that are “tagged” in stackoverflow for a specific library.

This is not foolproof – one might argue that extremely well designed and structured libraries will be so intuitive in their use that people will not be asking questions about them – but my personal experience has shown that even the simplest of tools generate a lot of questions when used by a lot of people.

javascript charting library comparison

Is Highcharts the most difficult library of all? Or is it perhaps the most widely-used one? Perhaps its developers are extremely responsive to the questions of the community? We cannot answer this with 100% confidence. What these counts show however, is that highcharts has more tagged questions in Stackoverflow than all rest of the libraries combined.

Choosing the winners

Since I’ve already opted for a (completely) subjective approach, what better way to pick a winner by simply…. adding everything up.

Here are the top 5 libraries sorted by “Score”, i.e. the sum of github stars, github watchers and stackoverflow tagged questions:

javascript charting library comparison

Full data available on the “Final results” tab of this Google sheet.

Declarative approach – Open source – Chart.js

If the Github stars are anything to judge by, there is a lot of developer enthusiasm for what Chart.js offers.

The documentation is clear and concise – http://www.chartjs.org/docs/ – with several inline examples, browser support is solid (as long as <canvas> is supported chart.js will work – this means no IE8 and some inconsistencies on <= IE 10) and the 8 chart types it offers should be more than enough for most needs.

Declarative approach – Commercial – Highcharts

I’m an avid user of Highcharts and I was pleasantly surprised to see it “rising” in the ranks of my little quantitative experiment. The massive number of stackoverflow questions clearly signifies that despite its commercial nature, the community uses it… a lot. The high number of github stars – (I repeat: for a commercial project) – is also quite indicative of the “developer feelings” for Highcharts.

The documentation is stellar (with a really powerful “Demo” showcase where every single example is linked to a working JSFiddle), the API browser / reference is a great resource and browser support is not an issue since Highcharts auto-falls back to VML rendering for older IE browsers.

Check out this JSFiddle to see how easy it is to visualise a table like the one shown in “Choosing the winners” above:

choosing a javascript ibrary

Imperative approach – Open source – D3.js

The central principle of D3 is to enable developers to programmatically construct SVG objects and render them as they see fit. As long as you can visualise it, D3.js can help you (a) draw it, (b) make it interactive and (c) animate it.

D3.js is the tool to use when a charting library simply won’t cut it. And the community demonstrates this very clearly:

Github stars – 54848
Github watchers – 2653
Stackoverflow tagged questions – 22036

If I had to score this the same way I scored the charting libraries, then D3 leaves everyone behind by a factor of 2 with a score of 79537.

Categories
News and Resources

Google planning hybrid Android/Chrome OS tablets

Welcome to DeveloperEconomics’ weekly news roundup. In this edition Google is reportedly planning hybrid devices that run both Android and Chrome, game developers boycott Oculus due to its founder’s support for Donald Trump and Google takes its Daydream SDK out of beta. Read on for the full news rundown.

 

Google planning hybrid Android/Chrome OS tablets

Google is reportedly planning hybrid devices that run both Android and Chrome, according to 9to5Google. The Andromeda project bakes Chrome OS features into Android and is reportedly being released on a Nexus-branded tablet and a convertible laptop. Rumours suggests the laptop device will launch in Q3 2017.

 

IBM releases IBM Bluemix Runtime for Swift

IBM has introduced a production-ready Swift runtime on the IBM Cloud. The release allows enterprises to take advantage of the server-side capabilities in Apple’s programming language, for building microservice APIs on its cloud platform. IBM says by unlocking Swift for enterprises it’s “reached another milestone” in its “shared journey with Apple.”

 

Microsoft announces 400m Windows 10 users

Microsoft says Windows 10 now has over 400 million active users. The last update on user growth was in July, when the OS hit 350, just before it ended its free upgrade period. Microsoft’s original goal was to have one billion devices running Windows 10 by 2018, but the company has since backtracked and is not specifying when it will hit the one billion milestone.

 

Oracle announces new products for cloud platform

Oracle unveiled 20 new products and services for its Oracle Cloud Platform at the annual OpenWorld conference last week. New products include the cloud-based Oracle Database 12c Release 2, along with an SaaS offering, which combines third party data with real-time analytics for “adaptive” app development. During the announcements, Oracle’s CTO Larry Ellison said Amazon now has “serious competition going forward.”

 

SoundCloud devs must submit application for API access

SoundCloud has announced changes to its API policy, requiring devs to apply for access. The application form asks devs what categories their app falls under, how it makes money and whether the app plays content from the SoundCloud API. SoundCloud says the changes were made to stop apps from using content without the permission of creators.

 

Mopub modular ad SDK reduces app sizes

Twitter’s MoPub ad network has announced a new SDK that lets devs cut out the ad formats they don’t use. The modular SDK means devs can save up to 60% on disk space for Android apps and up to 35% for iOS apps, without losing any functionality. MoPub says the space savings will be particularly useful for Asia-Pacific devs, where expensive data plans can impact bigger apps.

 

Google takes Daydream VR tools out of beta

Google has released a new VR SDK, allowing devs to build VR experiences for Daydream-ready phones and headsets. The Daydream VR SDK 1.0 supports “integrated asynchronous reprojection, high fidelity spatialized audio and interactions using the Daydream controller.” The release also supports native integration in both Unity and Unreal Engine 4.

 

Facebook rolls-out Profile Expression Kit SDK

Developers can now integrate Facebook’s Profile Expression media into the apps. The Profile Expression Kit lets users turn media – such as Vine videos, Bommerang GIFs and Lollicam stickers – into profile pictures. Facebook says profiles are the second most visited surface on Facebook, allowing Expression Kit apps to generate a lot of exposure.

 

Onsen UI 2.0 now available

The Onsen UI team has released version 2.0 of its UI framework, which helps developers create native mobile apps with HTML5. While Onsen 1.x was based on Angular JS, the new version has no library dependencies, as well as new Material Design components. The team has also released new and improved documentation to make it easier for devs to get to grips with the framework.

 

Developers boycott Oculus over Trump-supporting founder

A number of Oculus developers are boycotting the VR platform due to the political views of its founder, Palmer Luckey. According to a Daily Beast report, Luckey funded a pro-Trump activist group, which posted anti-Hilary Clinton ads. Developer Scruta Games said it will “cancel Oculus support” unless Luckey steps down from his position at Oculus.

Categories
News and Resources

Angular team announces final release of version 2.0

Welcome to DeveloperEconomics’ weekly news roundup. In this edition, Google announces the release of Android Studio 2.2, Oracle confirms rumours of a Java EE 8 delay and Microsoft has been crowned the new king when it comes to open source contributors. Read on for the full news rundown.

Google app ads beat Facebook with 3 billion installs

Google says its ad products are now responsible for more than three billion app install ads. The announcement follows Facebook’s claim in April that its ads have generated over two billion installs. Google says it’s also experiencing a decline in average ad prices, down 9% year-on-year, due to the continuing growth of YouTube ads.

Microsoft has most open source contributors, says GitHub

Microsoft has beat Facebook to become the organisation with the most open source contributors on GitHub. Microsoft racked-up 16,419 contributors, beating Facebook’s 15,682 and Docker’s 14,059. GitHub’s report also found that JavaScript is the most popular language, Font Awesome is the repository with the most open source contributors and Homebrew is the repository with the most users reviewing code.

Java EE 8 not ready until end of 2017

Oracle says the release of Java EE 8 will be delayed until the end of next year. The delay, which was rumoured for some time, was announced at the JavaOne conference last week, where a new roadmap was proposed. Oracle now plans to release Java EE 8 with basic microservice and cloud capabilities, before releasing EE 9 sometime in 2018 with more features.

Affectiva emotional analytics platform now free for indie devs

Start-up Affectiva is allowing any company that earns less than a million dollars a year to use its SDK and API. The Affectiva platform uses “emotional analytics” to analyse user sentiment via chatbots or surveys. The company also announced a partnership with Giphy, which will see Affectiva encode Giphy gifs for sentiment analysis.

Angular team announces final release of version 2.0

The Angular team has announced the final release version of Angular 2.0. The new version of the JavaScript framework features better support for modern browsers, modular functionality that makes it easier to use third-party libraries, and is recommended for use with Microsoft’s TypeScript. Google also says it will provide devs with more guides to learn Angular 2.0 faster.

Android Studio 2.2 released

Android Studio 2.2 is now available to download. The update brings a significant number of new features, including an improved layout editor, an activity recorder that generates Espresso code for automated testing, and an emulator that can simulate data from different sensors. The new IDE also boasts an APK analyser, GPU debugger and much more.

GitHub announces project management tools and support for formal reviews

GitHub has announced the “biggest update yet” to its platform, bringing project management features to the table. The built in Trello-like project management tool lets users move cards with pull requests and switch cards between columns such as “in progress” and “done.” GitHub also now lets devs formally approve all pull requests and leave review summaries.

Kochava releases free version of app analytics tool

Kochava has launched Free App Analytics, a tool to measure and optimise app ad campaigns. The free tool lets devs optimise campaigns across big networks such as Facebook, Google, Amazon, Twitter and Snapchat. The tool also includes a global index of integrated ad networks. However, features such as scaling are only available in Kochava’s paid Enterprise offering.

Microsoft opens Desktop Bridge for Win32 app conversion

Microsoft’s Destktop Bridge is now ready to use, allowing devs to repackage desktop apps, including Win32 apps, for the Window Store. The Desktop Bridge also converts apps to the Universal Windows Platform, allowing Win32 apps to run on any device running Windows 10. Microsoft says the bridge has already been used by the likes of Evernote, Arduino IDE and doubleTwist to bring full featured apps to Windows Store.

Oracle announces ‘drag and drop’ chatbot platform

Oracle has unveiled a new platform for building and running chatbots. The tool doesn’t require any coding experience – featuring a drag and drop graphical interface – and is positioned an easy-to-use bot builder for enterprises. According to Oracle, its bots will work with all modern messaging platforms, such as Facebook, Slack and Kik.

Google acquires API.AI bot building start-up

Google has bought API.AI, a start-up that provides dev tools for building conversational bots. According to Google, over 60,000 developers are using API.AI’s tools to build conversational experiences for environments such as Slack, Facebook Messenger and Kiki. The terms of the acquisition have not been disclosed.

Categories
News and Resources

News round up – Razer launches new fund for VR & gaming start-ups

Welcome to DeveloperEconomics’ weekly news roundup. In this edition, Blackstorm raises $33.5m for a ‘post-app store”, Razer launches a new fund for VR and gaming start-ups and Kony releases a new survey on the challenges of wearable development. Read on for the full news rundown.

Blackstorm raises $33.5m for ‘post-app store’ platform

Blackstorm has raised $33.5 million for what it calls a “post app store” solution, letting developers share apps outside of typical store fronts. Blackstorm offers a universal IDE designed to create apps that are shared across different distribution channels, such as messaging apps and mobile browsers. The company says its goal is to power “the infrastructure to trade and distribute software to all the post app-store platforms.”

Aruba announces platform to accelerate enterprise IoT adoption

HP’s Aruba has released the Aruba Mobile First platform, which aims to build a dev eco-system around its ArubaOS operating system. Aruba says the platform, which incorporates ArubaOS 8, lets third party devs quickly improve apps or create new ones based on its wireless networking technologies. The platform also collects data from IoT and mobile devices and customises networking functions dynamically in real time.

Google issues Nougat security update

Google has released a security update for Android Nougat. The update fixed a vulnerability that could enable remote code execution on an affected device. However, Google added that it’s had no reports of active customer exploitation or abuse of the fixed issues.

Korean firms consider legal action over Apple’s API policy

A group of Korean financial tech firms are reportedly launching a complaint to state regulators against Apple’s closed API policy around NFC functions. The companies complain that Apple is blocking providers such as Samsung Card and BC Card from accessing the NFC features. A similar complaint was previously lodged by Australian banks with regulators in the country.

PerfectlySoft releases Perfect 2.0 framework for Swift 3.0

PerfectlySoft has released the latest version of its server-side development framework for Swift 3.0. Perfect 2.0 features support for additional datasources, such as Redis and Filemaker, as well as “significant” performance and scalability enhancements. The company says Swift is “evolving extremely rapidly” and its framework helps developers keep up with the changes.

AWS SDK for C++ now available for production use

Amazon has released version 1.0 of its AWS SDK for C++. The SDK has received a number of improvements following developer feedback, including an improved Transfer Manager and symmetric cryptography support. The SDK also now follows semantic versioning so devs can upgrade within the 1.x series without breaking their build.

InfluxDB version 1.0 releases

InfluxData has released version 1.0 of its InfluxDB open-source time-series database. Influx DB was written in the Go programming language and is already being used by companies to monitor network infrastructure, security, container infrastructure, solar panels, and more. InfluxData says the database has been in development for nearly three years.

Box releases updates to attract more developers

Storage platform Box has released a series of updates aimed at developers. The platform now supports annotations, watermarking and new content types. Devs using the JavaScript SDK can now benefit from HD video, 3D models, VR files and 360-degree content. Box is also releasing a UI Kit that makes it easier to integrate elements into their web apps.

MySQL 8.0.0 Milestone Release is available

MySQL have announced that their 8.0.0 milestone release is now available for download. In their blog post, the engineers have outlined the most significant changes, some of which address problems that have plagued MySQL. The source code is available at GitHub.

Razer launches $30m fund for VR, IoT and gaming start-ups

Gaming hardware company Razer has launched zVentures, a new fund for investing in start-ups focused on gaming, VR, robotics and IoT. Razer is looking to fund early-stage start-ups with investments ranging from $100,000 to $1 million. The fund is based out of San Francisco and Singapore.

Survey highlights top challenges around wearables development

Kony has released a new survey looking at the challenges around developing apps for wearables. According to the survey, wearables will be “commonplace” in the enterprise by 2020 and 78% of devs surveyed said they are working on 2 wearable apps or more. Forty percent said the lack of communication between designers, stakeholders and developers is the biggest challenge for wearable development.

 

Categories
News and Resources

News roundup – Google opens Early Access beta testing to more developers

Welcome to DeveloperEconomics’ weekly news roundup. In this edition, Google cancels its modular smartphone project, Apple plans to delete abandoned apps from the App Store and Epic releases a new version of Unreal Engine 4. Read on for the full news rundown.

Google opens Early Access beta testing to more developers

Google has expanded its Early Access beta testing, allowing any developer apply for the program. Previously, Early Access was only available to 29 hand-picked developers, who got to test out their apps with early-adopters (although other devs were given different testing options). Google says the Early Access program generated over 1 million beta installs since launching in May and “demand is only growing.”

Google Search can now look-up content within apps

Google has introduced a new search mode in its Google app that lets users perform in-app searches The “In App” feature currently only works with Gmail, Spotify and YouTube, but will soon feature in-app searching on Facebook Messenger, LinkedIn, Evernote, Gilde, Todoist and more. Because the search function involves the OS itself, In Apps currently only works on Android.

Apple removing outdated apps from App Store

Apple will begin removing apps from the App Store if they no longer work, are outdated or “don’t follow current guidelines.” The company will also prevent devs from using overly long app names to game app searches, limiting app names to 50 characters or less. Apple will start reviewing apps on September 7 and will remove the ones that crash on launch immediately.

Amazon rumoured to announce Echo UK launch on September 14

Amazon has sent out press invites to what’s rumoured to be the UK launch of its voice-controlled Echo device, which features the Alexa voice assistant. The event is scheduled to take place on September 14 in London, although it doesn’t mention the Echo. According to Engadget, if you ask Alexa what she has planned for the 14th, she replies “a visit to London.”

Google cancels modular Project Ara smartphone

Google has pulled the plug on Project Ara, its modular smartphone concept. Project Ara was designed to let users upgrade and customise their device with camera, speakers, microphones and other modules. According to Reuters, Google may consider licensing Ara to its hardware partners, enabling some of its features to appear on devices in the future.

Google to reveal Daydream VR and Pixel devices on October 4

Google will reportedly reveal its in-house design for a Daydream VR viewer device at an event on October 4. According to Android Police, the company will also show-off two Pixel-branded smartphones (which replace the Nexus brand) and a 4K Chromecast. The event will also provide more details on Google’s Amazon Echo-rival Google Home.

Qualcomm unveils VR all-in-one headset

Qualcomm has unveiled a new reference platform for standalone virtual reality headsets, which it’s calling the Snapdragon VR820. It’s built upon the Snapdragon VR SDK and is designed to help developers create the hardware, software and content needed to create VR experiences. It’s anticipated that it wil be available in Q4 2016.

Baidu launches open source machine learning project

Chinese search engine Baidu has released PaddlePaddle, an open source software platform for the deep learning community. According to Baidu, the platform provides an intuitive interface for data handling and specifying model structure. PaddlePaddle was originally developed for internal use on Baidu’s deep learning apps.

HP announces machine-learning tool for drag and drop app development

HP has announced Haven OnDemand Combinations, a new tool that combines machine learning APIs and a drag and drop interface for mixing and matching them. The tool is built upon HP’s Haven OnDemand could platform, which has 70 AI APIs and more than 180,000 users. HP says the new tool is the quickest way to add intelligence to apps.

Unreal Engine 4.13 released

Epic has released the latest version of Unreal Engine, bringing over 145 improvements to the game development platform. Major new features include shadow map caching for movable lights, a new live recording feature, Voronoi noise for material creation, new mesh decals and new VR features such as project templates and support for mesh and foliage painting with VR controllers.

Google releases pure JavaScript Closure Compiler

Google’s Closure Compiler is now available in pure JavaScript. Closure Compiler is a JavaScript optimizer, transpiler and type checker. This new version isn’t a rewrite in JavaScript, says Google, but rather compiles the Java source to JS to run under Node.

Bloomberg releases BuckleScript optimising compiler

Bloomberg’s tech arm has announced BuckleScript, a new optimising compiler strongly inspired” by TypeScript. According to Bloomberg, BuckleScript offers an “industrial strength” type system and provides strong type inference, to generate more efficient code. Bloomberg adds that the compiler is at least 10x faster than TypeScript.

HTC invests $5 million in VR start-up Steel Wool

VR gaming start-up Steel Wool Studios has closed a $5 million round of funding, coming entirely from HTC. Steel Wool was one of the early developers for HTC and Valve’s Vive headset, creating the action strategy title Quar: Battle for Gate 18. Steel Wool said the funding does not mean their games will be exclusive to the Vive.

Intel acquiring drone start-up Movidius

Intel is buying Movidius, a start-up that makes computer vision processors used in drones and VR devices. Intel says it wants to combine Movidius’ technology with its RealSense depth-sensing camera tech, covering markets such as VR, AR, drones and digital security cameras. The terms of the deal were not disclosed.