Source, use, and contributions
The idea of Aether started off as Burak’s graduate thesis, and its current incarnation is launched in November of 2018, with its source code licensed under the GNU Affero General Public License (AGPLv3). As the peer-to-peer (P2P) network gained thousands of users, a hobby project has turned into a (more than) full-time job, leading to the familiar sustainability experimentation faced by most open source projects in this phase. In this post, we will discuss our takes on software licensing in relation to project sustainability and the relationships with communities that gather around the project, as well as what this means for Aether’s future.
The obvious starting point is to discuss why Aether launched with AGPLv3, a highly “viral” rather than permissive open source license, where many corporations hold a “don’t go near it” policy towards. At Aether, we believe that users have the right to know what software is running on their computer, and they should be allowed to audit and change the behavior of that program. We also believe in reciprocity, and reject profiting from the labor of others, so it is only fair that one is not allowed to take a proprietary fork of Aether’s software while Aether publishes all its code for the P2P network.
HBO Silicon Valley
In today’s landscape, there can easily be well-capitalized startups who can take an existing code base, add a couple features, and bankroll a marketing push for a re-branded product to mass audiences. As maintainers, we are not interested in being someone’s free labor R&D department. This type of cooption is also a betrayal of the community, as the future of the original work become sabotaged by a parallel project that holds very different motives and values.
We are software engineers not lawyers. So in simple terms, the AGPLv3 allows us to say: “modify this how you want, but no matter where you run this, on your personal computer or on a server providing service over a network, you must publish your modifications alongside with any software you attach to it."
Software and infrastructure
P2P networks are interesting creatures that aren’t like Software as a Service (SaaS) products. While they have similar R&D costs, SaaS products generally require more server resources and administrators as their user base grows. In a P2P network, each user brings their own personal computer as infrastructure. A single bootstrap node on AWS is all of Aether’s infrastructure for the P2P network and we expect that to still be the case even if usage skyrockets. This is great, because in theory, Aether’s P2P network could scale without additional expenses.
Unfortunately though being infrastructure-free also has its downsides. There is little incentive for anyone to cover the R&D cost and support labor of the software maintainers. This could easily lead to burnout and abandoned projects. This is what convinced us that Aether needed to transition from a hobby software project to a sustainable business.
The 2018 relaunch of Aether was met with a lot of enthusiasm, and with it a long list of feature requests. Among them, private communities was an interesting one. Aether is a flood network, in other words, it’s a network formed by everyone who agrees to contribute some of their computer storage and bandwidth in order to share content with each other. The concept of a private community, while technically possible, would make an awkward social contract as it essentially asks everyone to host content for you that they cannot access themselves. 🤔 So how can we do this?
It was in 2019 that the idea of Hosted Universes materialized as “Aether Pro”, as a new Aether backend based on a traditional server-client architecture, rather than using the P2P network to serve these private communities. This also allowed us to start building a SaaS business based off of secure communication primitives typical of a P2P network and the battle-tested desktop app from Aether P2P. While “Aether Pro” was being developed in private beta, its source code had been private and proprietary. We are now weeks away from public freemium launch of Hosted Universes, and will be publishing the source code of our new backend (what used to be a separate app called Aether Pro) under a shared source license.
Why shared source？
Aether’s Hosted Universes are different from the P2P Universe because the “infrastructure” runs on Aether’s servers, not personal computers of its users. This means AGPLv3 will not prevent public cloud providers (aka. “big cloud”), like Amazon, from operating the exact software as their business.
Mapbox found themselves in a similar position to Mongo and Redis: they were subsidizing R&D for a handful of trillion-dollar tech giants.
While we again refuse to be someone else’s free labor R&D department, we want to enable users of our Hosted Universes, and security researchers, to audit the source code even though they are accessed over a network. We also feel users that come to rely on Aether as their collaboration app should have assurances of continuity, and not let their vendor’s decisions stop their trains from running.
Our goal is to become self-sustainable early on as a business, a formidable feat in an era where freemium services is the norm, but it is essential to be a strong revenue generator in order to build use cases the community is excited about both in Hosted and P2P Universes, while retaining maximal agency over Aether’s future. This is why we decided to publish the source code for Hosted Universes publicly, but not have it licensed permissively.
In the previous sections we discussed our views on open source and open use, but there is a distinct category of “openness”–open contribution, that is often conflated as a prerequisite of open source software. While sending pull requests is usually well-intentioned and very much in the spirit of open source, anyone who has maintained a popular project will realize how much work it is to steward community contributions.
We have a very small team — just two people. While we love that people feel excited to contribute to Aether enough to send us code, at the moment we don’t have the capacity to work with external contributors, or to maintain the infrastructure (i.e. review process and legal paperwork like Contributor License Agreements) that this requires. The last thing we want is to make contributors feel neglected as patches go into a forever queue, so we are closed to code contributions for now.
A lot of recent free software tire fires have to do with setting expectations. Open vs. closed contributions is one, and timeliness of source availability is another. Aether’s main development space is GitLab, not GitHub, so sources have historically been published manually on releases, and sometimes with a long delay because again, capacity. Moving forward we make a stronger commitment to have automated publish on each release using mirroring repositories.