Eulogy for a simpler time
I work at Azavea, but this is my personal blog. What’s written here is my personal opinion and nothing more. Yadda, yadda, yadda.
The news yesterday that the new version of Mapbox GL JS will be proprietary shook me.¹
I am not a zealot. I do not feel entitled to others’ intellectual property, even if they’ve given away their ideas in the past. I know from experience how exhausting, thankless, and exploitative the work of creating and maintaining open source software can feel.
Until yesterday, I was still clinging to a few shreds of romantic optimism about open source software businesses. Mapbox is the protagonist of a story I’ve told myself and others countless times. It’s a seductive tale about the incredible, counterintuitive concept of the “open core” business model for software companies. In a piece I wrote last year that no one read, I defined the open core strategy thusly:²
“Open core” businesses offer a free, open source version of their software and a paid version with additional proprietary features that would be a pain to replicate […]
For the best in-depth analysis of the concept of the “open core” business model I’ve come across, I highly recommend reading Joseph Jacks’ blog post Open Core — Definition, Examples & Tradeoffs.
The whole idea is insane. No one believes it could possibly work when they first learn about it, and yet dozens of companies like Elastic, D2iQ (formerly Mesosphere), MongoDB and Cloudera have all managed to achieve valuations in the billions of dollars by pursuing this batshit-crazy, reverse-psychology, let-it-all-hang-out strategy. Or, at least, they were open core businesses at some point…maybe not so much today. More on that later.
Today, we’re gathered here on the internet to mourn the death of the open core business model. We’re here to tell stories of the before-times, to reminisce about how smart we thought we were. We went against consensus, and we were wrong. Because, open core is dead.
Cloud killed open core.
Back to Mapbox
In the case of Mapbox GL JS, Mapbox had previously decided to openly license the first two versions of the their browser-based map renderer (the same one that powers Snap Maps, the New York Times, and CNN among myriad others). Ever since the initial release in 2014, it’s been incredibly popular among web developers. Once you know what you’re looking for, you start to see it…everywhere.
I personally experienced the power of Mapbox GL JS when my team at Azavea started building GroundWork, a tool for labeling satellite imagery. Using functionality from that library, GroundWork supports freeform drawings of complex geometries. The resulting shapes are cartographic — they’re projected onto a real location on earth, not just suspended in imaginary 2D space. It’s the type of feature that feels obvious and straightforward but is in fact extraordinarily difficult to engineer from scratch.
Even simple-looking shapes drawn with a freehand technique can contain thousands of individual vertices. Pretty quickly, you fill up your screen with hundreds of thousands of vertices worth of shapes and…oh, poop-and-a-half.³ Your browser crashes.
Mapbox GL JS helps to circumvent that problem by summoning help from the graphics card on your machine. There’s no way we could have built that feature within our budget and time constraints without piggybacking on Mapbox’s tens of thousands of hours of hard, low-level engineering work.
Mapbox’s decision this week to release a brand new version of Mapbox GL JS and keep it proprietary stunned me. Not only was v1 already a wildly popular open source library, but Mapbox’s reputation as a prolific creator of open source software is a cornerstone of their whole identity. Describing what makes Mapbox special without mentioning “open source” is like trying to describe chocolate milk to an alien without using the word “liquid.”
Mapbox still has over 800 open source projects to their name and has consistently ranked in the top 40 organizations worldwide in terms of Github activity on public repositories. They employ (and have previously employed) some of the highest-profile open source software contributors in the world, not just the mapping industry.
So…what the dickens is going on here?
Open Core is No Longer a Tenable Business Model
Mapbox’s choice to keep v2 of Mapbox GL JS proprietary is a strong signal. But what precisely the signal is indicating is…less clear. Nonetheless, I’ll bite.⁴
I think it means we’ve reached the end of an era. I think it portends the death of “open core” as a viable business model. My suspicion didn’t start with Mapbox, but it has concluded with them.
To understand how a company like Mapbox decides to release a proprietary update to one of its most popular open source libraries, I think it helps to start by studying at the cautionary tales of two kindred spirits, Mongo DB and Redis Labs.
Ben Thompson wrote an excellent summary in his piece AWS, MongoDB, and the Economic Realities of Open Source almost two years ago. To summarize his summary: if you give your secret sauce away for free, and it gets popular enough, cloud providers will inevitably spin up competitive services using your very own code against you. They will ruthlessly, unapologetically, shamelessly bludgeon you with a rubber chicken of your own fashioning. They’ll take a dump in your front yard while your lawyer stands over your shoulder whispering, “nothing can be done.”
Since Ben wrote about AWS launching a service directly competing with MongoDB and Redis’s paid offerings, AWS hasn’t exactly crushed the competition…in fact, MongoDB’s stock price has risen over 275% since then, and Redis just raised $100M to officially cross the magic $1B valuation threshold a couple months ago.
The bigger story is not simply that Mongo and Redis thrived in response to getting shanked by AWS, but how they did it. Both fought back the way companies always fight back: with an army of IP lawyers. Redis adopted a strategy of adding a severely restrictive “commons clause” to updated versions of their existing open source tools, prompting some prominent open source commentators to feel that they’d thrown the baby out with the bathwater:
Redis later shifted to an entirely novel and idiosyncratic license, which can’t be worse than the commons clause fiasco, but almost certainly isn’t much better. MongoDB also took the “poison pill” legal strategy by shifting to a new and equally made-up license for their software, “Server-Side Public License (SSPL)” shortly after AWS launched its competitive “DocumentDB” service. In both cases, the moves were specifically aimed at making it harder for public cloud providers to screw them over.⁵
Perhaps more accurately, they made their open source offerings radioactive to any company large enough to have a department called “compliance.”⁶
These changes made Redis and Mongo fundamentally less open. The companies have since done quite well, although perhaps at the expense of their original ideals and some of the goodwill of their early adopters. The open source community of evangelists and contributors felt that they’d been sold a lie and treated as a stepping stone in the process. And I tend to agree with them, although I don’t fault either Redis or Mongo for being rational economic actors.
Back to Mapbox, Again
There is at least one cloud provider that has publicly copy-and-pasted Mapbox code into services they charge for: Azure, Microsoft’s cloud service. Last year, Azure announced map styling powered by Mapbox GL JS and it remains a key feature of their “Azure Maps” service. Mapbox even wrote an announcement about it on their company blog.
While Mapbox made the Azure announcement out to be a good thing, I suspect it was the beginning of the end for Mapbox GL JS remaining open source. After all —in the incomprehensibly competitive world of public cloud computing, once one cloud provider starts offering a service, the rest are surely soon to follow. Mapbox found themselves in a similar position to Mongo and Redis: they were subsidizing R&D for a handful of trillion-dollar tech giants.
Unlike Mongo and Redis, Mapbox resisted the urge to try to have their cake and eat it, too. Rather than change the fundamental license for the “open” part of their offering, they made a clean break. The old version, which is still a mature and extremely useful library, will retain its original, permissive license. Efforts are already underway to fork it and gather community members to maintain it indefinitely, which I’m hopeful will be successful.
The new version will remain public (the code is all published on Github here). It’s just not permissively licensed anymore. To me, this feels like a more honest approach than trying to thread the needle with a creative and totally unproven license or some “gotcha” clause.⁷
Some might feel that this is a tragedy because it means community contributions will probably fall off. It’s true that, despite a long list of contributors, current and former Mapbox employees contributed the lion’s share of investment in the library. But the project had attracted a massive, global community of engineers who built things with it, gave tech talks on it, and forked/remixed it countless times. Yesterday was a sad day for those enthusiastic users, there is no question. They’ll survive, but I can’t blame them for feeling a sense of loss.
As for the question of whether or not this choice strays from Mapbox’s mission or culture, I think this tweet from a current employee who has been with the company since its founding about sums it up:
Remembering the Good Times
Once upon a time, I really thought you could give away your trade secrets and still be successful. I thought the scale of the internet had enabled a new genre of company that could become massive despite only capturing an infinitesimally small fraction of the value they created. I believed the act of building a company around open source software was virtuous and ethical. I saw it as an end in itself.
These days, I’m not so sure.⁸
I still believe open source software is a powerful force for good in the world. I still think companies can strategically and earnestly contribute to open source software in service of not only their own mission but also the collective good.
But, I no longer believe venture-backed companies can responsibly pursue a strategy of giving away the software at the core of their value proposition. I no longer think it’s a feasible model for companies with ambitions of becoming very large or those actively avoiding consulting work. Eventually, if they’re successful, they will be forced to choose between betraying their loyal early adopters and dying a long, slow death by rubber chicken bludgeoning.
Yesterday was a sad day, indeed. But not because Mapbox did something wrong or disappointing. Because yesterday, I finally conceded to myself:
Cloud killed open core.
¹ For newcomers: Mapbox is the preeminent software company focused on mapping. They produce an outsized share of innovation in the field — from Mapbox GL JS (their renderer for 2D maps), to autonomous driving and navigation libraries, to augmented reality, 3D visualization, and even video game tech. The reason this news is shocking is that their commitment to creating open source software, even the “secret sauce” at the very core of their work, is fundamental to the way many of their users perceive them and a huge part of why they are so commonly admired by software engineers.
² If you’ve already read that blog post, congratulations. You are one of the 106 people that I consider to be my closest friends.
³ My mother liked to use this expression when I was growing up, and I am still quite fond of it.
⁴ If you’re reading this blog, you’re desperate enough for answers about the geospatial software industry that you’ve turned to a guy that writes on Medium because he’s too technically illiterate to host his own website and too cheap to pay someone else to host it for him.
⁵ I am not a lawyer, but I play one on the internet. If you want to understand these licensing strategies in more depth, I suggest you start by getting a law degree, specializing in intellectual property and copyright, and then spending your entire life studying it.
⁶ A very helpful commenter has pointed out that I have heavily implied Redis itself is no longer open source, when in fact it remains open under the BSD license. Just the “modules” that Redis Labs makes carry proprietary “source available” licenses.
⁷ If you haven’t caught on by now, let me be clear: I think inventing your own license is almost always a bad idea. Contracts are enforceable in court. Either you plan to go to court a lot until the credibility of your license is well established, or you should pick one that is already credible. Personally, I don’t like to get sued. And if I must get sued, I want to feel confident I’m gonna win.
⁸ I’m reminded of the lyrics to one of my favorite Joe Pug songs:
Stealin’ was so easy then I wish that it still were Now as I pick my own pocket I know that these days I’m not so sure