Ending an Open Source project (Mapael)
Table of Contents
I wanted to write a little post about Mapael and its future, as this project occupied me for several years and has gained some popularity year after year, but I haven’t talked about it in a long time. I began to develop Mapael from scratch in 2013 (Wow! Mapael is already that old?). Since then and until 2018, several versions have been released. Each version came with its batch of great new features (by the way, many thanks to Guillaume who brought a lot of improvements to the later versions; it was a great period of teamwork over several months that I really appreciated).
Now, it’s 2022, the library still works like a charm and is downloaded 95,000 times a month according to NPM statistics. However, I haven’t maintained it for quite a long time. I haven’t pushed any relevant commit to the repository since 2018, and I barely answer users’ issues on GitHub. Why? I think the main reason is as simple as a lack of time. Working alone on an Open Source project that has gained some users requires a large amount of time because it comes with a bunch of other tasks that go beyond simply adding new features. You not only have to make the project evolve, but you also have to take care of the project community: answering GitHub issues and questions sent by email, reviewing pull requests, discussing and working on new features requested by users are a few of the additional time-consuming tasks. Furthermore, at some point, I wanted to use my free time to focus on some other projects and learnings.
Mapael in a nutshell #
Mapael is a jQuery plugin built on top of raphael.js that allows you to display dynamic vector maps. For example, you can display a map of the world with areas filled with a color alongside a legend (otherwise named a choropleth map). You can also build more advanced and highly customizable visualizations by plotting cities with their geo coordinates, drawing links between them and enabling some features such as multiple legends, zooming and panning, etc. Feel free to take a look at the demos on the documentation page to see Mapael in action.

Usage statistics #
I don’t have much data about Mapael usage. The only data comes from GitHub and NPM. At the end of January 2022, there are:
- 504 clones of the project during the last 13 days
- 815 visits on the GitHub page during the last 13 days
- 96,000 downloads from NPM in January
Since the beginning of the journey, Mapael has received 995 stars and has been forked 200 times. The jquery-mapael and mapael-maps repositories total 196 closed pull requests and 148 closed issues.

We can see on the NPM chart above that the number of downloads per month remains at a high level and hasn’t stopped growing since 2019. This is quite surprising as I haven’t published any new release since the beginning of 2018! jQuery seems to follow the same growing trend of downloads per month through NPM, so maybe jQuery and Mapael are not dead yet. So what to do with an unmaintained tool with obsolete dependencies but is still used?
Future of Mapael? #
To my mind, jQuery Mapael as such is doomed to certain death. Mapael is closely bound to some obsolete or near-obsolete dependencies. Mapael is built on top of Raphael.js, whose last version was released three years ago. Mapael is also tightly coupled to jQuery, and although jQuery has done a great job for a long time, it will probably disappear in the years to come. Furthermore, it would now be quite hard to add new features on top of the current code base. Indeed, the structure and the API became quite messy over time (side note: I’m not very proud of how the code I wrote some years ago looks now).
For all the reasons above, I think the project would greatly benefit from being completely rewritten in a more modular way, in modern JS, with a more structured API. This hypothetical “reboot” project surely couldn’t be named “jQuery Mapael” anymore as it would be a brand-new project. Anyway, it was of course a great experience to launch and maintain such an Open Source project for several years!
So what’s next for Mapael now?
As I have kept my distance from the project for a few years, there is no official maintainer now. For now, it appears there is still some usage of the library, so as a first step toward Mapael’s end, I will add a note in the readme file to explain that this project is not maintained by its author anymore. People or organizations who want to use Mapael anyway will be invited to contribute if they need some bugfixes or security fixes. Later, when the usage rate is low enough, I will probably deprecate the project on NPM and archive the project on GitHub. I think archived projects can still be forked if needed.
In the meantime, there are already plenty of alternatives to build interactive maps with up-to-date JavaScript libraries: d3.js is for instance a decent one even if it’s not only focused on maps.

A thought about Open Source Software #
We all heard about the log4j and Faker.js stories a few weeks ago. A lot of interesting discussions, debates and ideas emerged on social networks after these events about how to support or fund Open Source projects in a sustainable way. These stories highlighted an important issue in Open Source Software: how do you keep providing high-quality software for free?
Many projects are directly supported by the companies which created them and many others come with some paid offers that provide more advanced features, cloud access, etc. I may be wrong, but I think most of the projects of this kind don’t suffer much from funding issues as there is a business model behind them.
However, many other projects are maintained only by one or maybe a few developers during their free time. It’s often a challenge to keep these projects evolving in the long term, even if they reach some level of popularity. That’s why it’s important not to forget smaller Open Source projects when you consider contributing to or funding OSS. Anyway, I think companies that rely on Open Source Software should participate in return, either by granting time to allow developers to contribute or by funding some projects.