Excel functions in Javascript: community kick-off

The library Formula.js has now its own organization on Github with a brand new online documentation since middle of March 2020.

Appizy converts spreadsheets into web languages: HTML, CSS and JavaScript. This would not be possible without the great open source project created by Sutoiku Inc: Formula.js. All applications are based internally on this implementation of most spreadsheet functions.

In March 2020, with the support of Sutoiku, Handsontable and Appizy, the project has now it’s own Github organization and introduced a new documentation website. Time to have a quick look on the history, the motivation and the next milestones of this project.

History of the project

Formula.js was originally started by Sutoiku in 2013. It was then actively extended and maintained until 2015. The project reached a good maturity level and the version 1.0.0 was released. Because of this maturity and a probable shift of the focus at Sutoiku the library was left under low maintenance after the release of version 1.0.7. Not much happened in the last 4 years.

In 2016, the original code based was forked by the developer team of Handsontable, editor of the Javascript grid system. This gave a new impulse to the library, being actively extended and maintained by another private company. As we write this article it has became the most used Formula.js package. It is downloaded more than 10 times than the original package on node package manager (NPM) per week.

But end of 2019 the story seemed to repeat it itself again as Handsontable announced on Github that they were working on their own implementation of spreadsheet functions. Therefore they would stop maintaining their fork of the Formula.js.

Motivation for the new community

There are many great open project started by private companies that left the cradle and became independent. In the Javascript world, two obvious example that come to mind are React and Angular; the frameworks created by Facebook and Google, respectively. Even though they are still heavily supported by their founding companies, these project are now independent. Formula.js does not have the same usage than a framework like Angular but we believe it can benefit from being transformed into an independent organization.

First, companies are more likely to participate into a project that is not developed by their competitors. The format creates a space for cooperation around a shared asset, where more developers contribute, leading to more and better features.

The second motivation is the resilience of the project. Like it happened already in the past with Sutoiku or now with Handsontable, the library can lose its pulse because the company mainly developing the project switches priority, while an independent project gathering developers with various backgrounds can continue to live even when someone lose interests. In the end this benefits all users of the package, leading to more powerful tools.

Finally, and despite the maturity of the library, we want to keep on implementing the new functions that continue to arrive into Excel, LibreOffice and also Google Sheet. And this is why we decided to kick start a new public organization: the new home of Formula.js.

Challenges for 2020

As a start, we decided to fork the repository handsontable/formulajs as this seemed to us the most active, maintained and used repository on Github in February 2020. Since then we already develop two new functions (IFS, INDEX) and fixed a few bugs.

One repo to rule them all…

Like any open source project on Github the project has many forks. Due to the low pulse on the original repo the multiple forks evolved adding functions, correcting and optimizing the scripts but without returning to the original repository. The first step for the community version is to gather the great work made and centralize it in one place.

After several checks we can assure that the community version @formulajs/formulajs can be swapped in any npm project using handsontable/formulajs or sutoiju/formulajs. More detailed articles about the compatibility between the projects can be found on the documentation website.

Maintainers and contributors are welcome

As we explained, it is important for the project to be supported by developer from different backgrounds and programming skills. As we gather the spreaded code, we would like to also gather their developers into the newly created public community.

We also would like to improve the graphical identity of the library. If you are a graphic designer or know a graphic designer do not hesitate contact us!

Going further