About one year ago, we were giving a talk with ljf at PSES about YunoHost. At
the end of the talk, one question that got asked was along the lines of : « It
is now recognized that YunoHost is an important project for Internet’s
decentralization. What is YunoHost’s model to make it a sustainable project ? ».
At that time, my reaction was to see someone telling us that YunoHost needed
money to be a serious project. And I was pretty much convinced that we didn’t
have to. My position was that we had the most ethical model, which is to be
based entirely on volunteers. Money come and go (and “corrupts”), so in that
sense it not more sustainable than volunteers’s time and energy. Considering
this, all we had to do to make YunoHost a sustainable project was to attract
more volunteers.
Nowadays, my opinion on the topic is coming close to the opposite. And this is
because I realized a few things about volunteership.
-
Finding occasionnal volunteers is already a hard task. You need to find people
who at least known the project, have the skills needed to contribute, and have
some time available to learn how to contribute, and to pass the barrier of
thinking you don’t have legitimity to contribute. This also usually involve
someone else you know IRL introducing you to the contribution process. (c.f.
also Bram’s study a few months ago) -
Finding long-term contributors is even harder. In addition to the previous
things, you need to find people who have a lot of free time, i.e. people who
don’t have a “regular” job and/or are not already invested in other project
and/or are willing to invest their remaining free time in the project rather
than other aspects of life. -
Then there is the bus factor. Especially for YunoHost which is technically
speaking a broad project which many different pieces that all need different
kind of skills / knowledge. Nowadays I expect that it would be a bit of a
panic if Maniack decided to stop maintaining the whole app CI or app
ecosystem. I’m also not sure that we have many people aware of the different
aspects of the stretch migration or the deb build chain. We also have several
pieces that are essentially only “kept alive” such as the dynette, ssowat or
the webadmin (c.f. deprecated dependencies which will end up breaking) because
lack of humanpower. Ultimately people can theoretically be replaced, yes, but
this also requires new people to take the lead and is a slow process. We have
an example of this in the Internet Cube with keoma, pitchum and others trying
to rework the vpnclient and hotspot apps… -
Which brings me to the last item : boring and important tasks. Those, I think,
increase over time. Nowadays we have to maintain apps, various infrastructure,
old code, organizing meetings, handle user support, handle major debian
version migration, take collective decisions and fix important security
issues. Those are typically stuff not attractive for newcomers, considering
that writing new software from scratch is usually more appealing than
maintaining old software written by other people. Yet they still need to be
done for the project to be kept alive, and they require a lot of energy from
all current maintainers.
So overall, it seems to me that building a sustainable project exclusively on
volunteership is a huge bet. In fact, we should consider YunoHost pretty lucky
to have got that far, considering the original devs left, with still a
relatively active community today… This certainly relates to the fact that
there is demand for what YunoHost provides, in addition to decisive technical
choices (e.g. keeping app packaging relatively simple, or having a good-looking
webadmin/SSO). Yet, similar important projects were not as lucky. The Internet
Cube project struggled a bit for ~one year and half and still is(?). ArchOS died because
it was a single contributor. And there are tons of example of “popular FOSS”
that are getting really few contributions compared to their usefulness (c.f.
Thunderbird for instance).
The other alternative is to find money to pay existing contributors or bring new
ones. This has been discussed a few times so far, but only from the perspective
of “if we happened to have the money, would we be okay to do so”. But that’s
also biaising the answer by assuming that’s an option of the project, and not a
need for it to be kept alive and active. The question we should ask ourselves is
precisely the one that got asked one year ago : if we care about YunoHost, what
is our plan to make it a sustainable project. And contrarily to what I was
thinking a year ago, and for the reasons I exposed, I now think that “we rely
exclusively on volunteers and will attract new ones” is not an anwer.
This also calls the question of which ambition the project has. Right now,
YunoHost remains a niche solution and we estimate to have around ~2k instances
in the wild. This is both a big and small number. On one hand, this is a lot of
people trusting us, and on the other hand, this is a small number compared to
the energy that goes into the project (c.f. all the tests on the apps to make
them robust), the people that could be interested in such a solution and don’t
know about, and the general goal of democratizing self-hosting to have an impact
on internet decentralization. From my point of view, a mid-term goal for the
project should be to grow to ~10k users. I don’t have a magic recipe for this,
but imho it involves being a more known project (especially outside of France)
and being robust enough and documented enough such that we don’t get crushed by
the pressure of user support.
So if we were to pay contributor time, what solution do we have to fund this ? As
far as I know there isn’t a ton of options :
- Rely on donations, or on a larger scale, crowdfunding ;
- Get funding / grants from public entities ;
- Sell premium service / support / features to private entities.
- ???
Option 1 is for me the most ethical one and is already implemented by several
actors such as Wikipedia, Framasoft, LQDN, Mastodon for instance - but it also
requires to invest energy in communication, and a large community to be able to
raise a significant amount of money.
Option 2 is probably not sustainable or will require energy to find new entities
to get new funds. But it might also be useful to make a relatively small project
like YunoHost to grow in size to then be able to rely on option 1.
Option 3 is in my opinion the least ethical option as it tends to bias the
development of the project towards “what the private sector wants” especially if
we’re talking about big or medium-sized entities… ljf’s project aims at
providing support / coaching to relatively small entities but so far, afaik, the
success is only partial, and imho also depends of the project being well-known
such that there is a demand for it.
If I was to draft something, personally I think we should go for something like
this : We should aim at finding public funding, typically from the EU, for
something like 2 or 3 full-time contributors (or 4 to 6 part-time contributors)
to work on YunoHost core, apps and the Internet Cube over the course of 1~1.5
year. A rough estimate is that this corresponds to 50~100k€. That’s certainly a
lot of money, yet not impossible to get from the EU when we see things like the
Next Generation Internet call. Part of this should be invested in making the
community grow, especially outside of France, such that we are then able to
raise money from crowdfundings the following years.
So that’s a big wall of text with a lot of ideas, and the goal ain’t to say that
YunoHost will collapse if we don’t do anything, but rather to open the “boring”
question of what’s the long term goal and strategy of the project.
Last but not least, this is of course related to my personal situation and stuff
I have been wondering about for ~9 months. My situation is currently a bit
precarious, yet I invest something around ~35 hours / week on YunoHost (though
I’m not counting hours so I don’t really know) and I regularly have to decide
between getting a stable job/situation or being able to keep working on the
project. To be a bit more concrete : a few months ago it was pretty much “do I
answer this very appealing astronomy computing job offer, or do I keep the
precarious situation to work on this boring-as-fuck stretch migration”, and a
few weeks ago it was more like “do I look for a real job or do I use my savings
and hope I get a mission soon”. The situation isn’t too dramatic, and there are
other factors besides YunoHost in my life choices, but it also tells me that I
won’t be able to keep contributing like I do on the long term. I’m not aware of
everybody’s situation but some of you might have similar concerns, and we also
saw with kload, jerome and others that people tend to not put volunteer-energy
in a project more than a few years, because there are other things in life .