Advance!BSD – thoughts on a not-for-profit project to support *BSD (2/2)

[New to Gemini? Have a look at my Gemini FAQ.]

This article was bi-posted to Gemini and the Web; Gemini version is here: gemini://gemini.circumlunar.space/users/kraileth/neunix/2021/advance_bsd_pt2.gmi

[Edit (22/07/21)]Yet another poll on Reddit asking for the preferred means of communication ended with great support for continuing the project in a Subreddit of its own. So after today the previous part of my double post was featured on the popular BSDNow! podcast, I finally went ahead and started r/AdvanceBSD. It’s now open for discussion. Let’s see what will come from this![/edit]

The previous article provided an introduction of the Advanced!BSD project idea by providing some background as well as discussing the “why”. This article focuses on the “what”.

Shared services or virtualization?

Another general question is what makes more sense to focus on: Some form of virtualization (either full-fledged VMs or paravirtualization like FreeBSD’s jails either with or without VNET) or rather providing shared services? There certainly is a need for both. And while I’m certain that the vast majority of BSD people would be perfectly capable of renting a VM and doing all the things they need themselves, I’m not sure if everybody wants to.

Thinking about what my own use cases would be, the result is likely a mixture of both. If by accident a) the shared service was built upon exactly the software components that I prefer, b) there was a nice interface providing the level of control that I need and c) somebody else kept the whole thing nicely up to date, I wouldn’t say no! If however some service is provided by something that I loathe (let’s say, exim or even sendmail for email!), I’d rather do things myself.

Depending on what preferences people have, the focus of the project might be either way. Personally I’d like to see some high-quality shared services at some point. But that doesn’t necessarily mean the project would have to start with that.

Which services?

It may look like a logical decision to start with domains. For practical reasons I’d rather stay away from that for the beginning, however. Here’s why: Domain business is hard. The profit margin is very low even for the big players – and you need to have a lot of domains in your portfolio to get decent prices. Before that you’re losing money if you want to compete with the established providers. In addition to that, it’s not exactly simple to properly automate things like domain transfers that can keep real people occupied otherwise. Considerations like this don’t make that field particularly attractive.

DNS is probably a much better field to start with (provided we can get at least one person on board who’s experienced in advanced DNS topics like e.g. DNSSEC and DANE). The initial time to invest into proper configuration of nameservers is not to be neglected but much more on the doable side compared to domain registration and migration for multiple TLDs. And since for DNS you always at least need two servers, this would also be a great one to make use of two different BSD operating systems right from the start!

Plain Web hosting would certainly be the easiest thing to start with. However you definitely want to support TLS certificates with LE today – and supporting wildcard certs for domains requires DNS to be ready for it. Also intermediate hosting is a bit more complex already: A lot of people will want PHP. Some require Python. Others still want Perl. Throw in things like mod_security & friends and the topic gets a lot more complicated pretty quickly. Plus: What webserver to use? Will OpenBSD HTTPd suffice? Should it be Lighty? Nginx perhaps? Or do people need Apache HTTPd?

Email is a huge topic. We’d have to investigate anti-spam and anti-virus software. We’d need to build up reputation for our IPs so that the major mail providers would take email messages from us. And – of course – we should get DNS working first for things like the MX records, SPF, …

Another possibility would be offering complete “products” like a Gitea instance, an XMPP chat server, the Sogo groupware, etc. This only makes sense if we find out that by chance there are a lot of people interested in the same services. In general on the net I’d say WordPress is a sure bet. But my guess is that many people who might be interested in a project like this rather use Hugo, Jekyll and the like.

Each of those topics would of course need to be discussed further if actually a real group forms to make Advance!BSD happen.

Involving neighbors and others?

While I have no doubts that the BSD community is big enough for such a project to succeed with, it might still make sense to connect with some other communities that are also “niche” (i.e. underrepresented due to mainstream exclusivism) but nevertheless important or interesting.

One “neighbor” that comes to mind is the illumos community. While I’d clearly like to focus on BSD, I’d be open to let them participate if they wish. Eventually supporting illumos, too, if people who are capable of providing it join in, would not be a bad thing. We can even offer to give all the revenue that comes from illumos hosting back to that community. It wouldn’t be a loss for us since customers who want that wouldn’t have booked a BSD jail / VM / service in the first place anyway. At the same time it would further diversify the project and help it grow. So there could be a mutual interest.

I’m personally interested in the Gemini project (see FAQ link at the top of this article if you don’t know what it is). As an effort within the so-called “Small Internet” it’s not an incredibly huge community, yet. Due to its nature it’s a pretty technically versed one, though. There’s probably a majority of Linux users there, but taking it into consideration could be for mutual benefit again! Running a gemini server and maintaining a site in Geminispace in addition to the Web that informs about Advance!BSD and the services provided, is really not much hassle. It might well get the project some wider recognition, however. And if we’ve got that Gemini server, anyway, we might consider Gemini hosting as a bonus provided for free to our customers (if they want it). It’s very low on resources and Gemini people would get another free hosting service while we’d benefit from them spreading the word. Win-win.

If there’s enough interest regarding Gemini in the future, we could even decide to dive all in and provide a means of interacting with the services provided by an experimental interface that uses the Gemini protocol! We’d have to explore how to do something like this. Gemini is deliberately a simple protocol, but people have built search engines with it, there’s a wiki system and so on. One nice thing is that client certificates are in common use with Gemini and are often supported by the browser applications. That’s a pretty nice way of proving your identity either without the need for a password of as a second factor.

Just one more example: The POWER platform. It has a much lower market share than amd64 or aarch64 obviously, but there are some people who like it quite a bit. Hosting on ARM is nothing too exciting anymore these days, but hosting on POWER certainly is. We might consider platform diversity as another field that people could select to fund with their money. I can imagine that some people who are not necessarily into *BSD would consider using our services (initially on amd64, of course!) if the money would eventually be used to purchase a POWER 9 server.

Hosting on *BSD running on POWER would certainly be experimental for some time to come, but enthusiasts probably wouldn’t mind that too much. This could be a great chance for the BSD operating systems to improve support on that architecture and it would also be a nice opportunity to diversify the POWER ecosystem. In other words: Another win-win situation (if there’s enough interest in such a thing).

How to get this started?

Well, I’m not going to claim that I now the best way or even have a solid master plan. But here’s some steps that come to mind when I think about it:

Phase 0: Figure out if there’s any interest in something like this at all. Check – there is!

Phase 1: Determine what means of communication would work best for most people interested in the project: A Subreddit? Classic mailing list? IRC / some messenger (which one)? A Web forum? Something else?

Phase 2: Form an early community, collect ideas and thoughts that people have and discuss them! Consider problems that are likely to arise.

Phase 3: Decide on project governance and for example found a core team.

Phase 4: Try to reach some kind of consensus on the concrete goals of the project as well as which are short-term, mid-term and long-term.

Phase 5: Ask people interested about their areas of proficiency, make a list of who can do what. In parallel come up with a list of necessary tasks, then find people who can do the actual work and get things going.

Phase 6+: Let’s not decide on this before phase 2 ends!

Requirements

There’s two kinds of resources that we need server-related (both hardware and software) and person-related (skills as well as some free time). Regarding servers, any reasonably new machines will probably do. When it comes to the skill sets of people required for the project, things become a bit more complicated. Here’s just a few roles that would need to be filled:

  • We obviously need people who install machines, keep them up to date and make sure services continue to run (by setting up proper monitoring and paying attention to notifications) – i.e. administrators.
  • Very early on we need web developers: While it is theoretically possible to only interact with customers via email, this is absolutely not a feasible solution. There needs to be some kind of platform where people can login and view / change their services. Also without a somewhat respectable website it will be hard to find any people who’d actually book any service.
  • DevOps people. We live in the age of “automate or die!”. Also proper automation does not only mean less manual work but also fewer human mistakes.
  • Supporters. We need people who agree to dedicate a bit of time every week to look into problems people have, find a solution to them and interact with the customers via mail.

And so on.

Project identity

I’d like the project to follow some kind of theme early on. It should convey “yes, we are BSD!” and as long as it’s about a community-driven project, a bit of humor would certainly be appealing to people. We have the daemon and the fork that kind of symbolize BSD as a whole. Which means that we could either use those or try to fit all the specific BSD mascots into the picture. The latter might be harder to do without making it look too artificial and affected. So what about Project: Trident? Just kidding of course! 😉

Here’s one proposal: The mascot could be the polar beast: A daemon riding a wild-looking polar bear in a knightly fashion with a long fork in hand as a lance, a small orange pennant tied to the latter and a halo over its head. Thanks to the bear it’s clear that he’s at the north pole. This theme would allow for a couple of jokes like this: “Pretty cool but not cold(-hearted)” [the south pole has much lower overall temperature] and “Best of all: No clumsy flightless birds here!” 😉

We should make clear though, that at the end of the day we’re all friends in Open Source and despite regularly making fun of each other are not hostile towards Linux but want to go our own way.

Things like that. I’m sure that people come up with all kinds of funny themes if they give it a try.

What’s next?

I’m hoping that this provides some more food for thought and that we’ll be able to establish some kind of communication channel that people interested in this will use to really start discussing things. Regarding my usual articles I’ll probably write about Poudriere next.

Advance!BSD – thoughts on a not-for-profit project to support *BSD (1/2)

[New to Gemini? Have a look at my Gemini FAQ.]

This article was bi-posted to Gemini and the Web; Gemini version is here: gemini://gemini.circumlunar.space/users/kraileth/neunix/2021/advance_bsd_pt1.gmi

There are multiple reasons why I am a BSD user and enthusiast. For one thing I enjoy using systems where the design benefits from the holistic approach (whole OS vs. “kernel + some packages”). I’ve come to appreciate things like good documentation, preference of simplicity over unnecessary complexity and permissive licensing. There’s a different spirit to the community that makes me feel more at home. Well, and truth be told: I do have a heart for “outsiders” who are doing well but get far less attention due to the towering popularity of a certain other system. In addition to that I’m very much concerned about the new de-facto monopoly in open source.

While the broader BSD community is far less fragmented than what you know from the Linux ecosystem, it’s also much smaller. Considering the little manpower that the BSD projects have, they are doing an outstanding job. But a lot of people seem to agree on the fact that due to the small amount of resources available, the BSDs are pretty far away from maximizing their full potential.

There are in fact a lot of people out there who’d like to help improve the situation. But coordination of volunteer effort is hard. Linux is what Linux is for a substantial part due to corporate funding. And while there are also companies that support BSD, the question is: Could we probably do better?

A (nonprofit) BSD-first service provider?

After thinking about this for quite a while, I finally just asked on Reddit what other people think about such a project – and I’ve been blown away by the response!

While I had hoped that most people would agree that this could be an interesting thing or even consider supporting it, I had not anticipated that the most popular option on the poll would be the one where people express their interest in the project with the prospect of perhaps participating actively in getting it started!

20 votes (after only one day) for maybe participating in the project!

A lot of projects struggle for years to find people who might be willing to join. With projects that weren’t even started yet, and thus have nothing to show off, it’s even harder to get some attention. Getting 20 people to support the cause in just one day was quite a surprise for me. Sure, that’s only a poll vote on Reddit and thus completely without any obligation. But let’s assume that 1/4 would actually join such a project and contribute – 5 people is not bad at all. Depending on what skills they bring in, even 2 or 3 might suffice to get something started, further increasing the odds that more people join in. The hardest part in getting a project on they way is finding people who are willing to pioneer it and make something that sounds interesting actually work well.

Why “Advance!BSD”?

The name is just a working title, BTW. I won’t insist on it and am in fact pretty sure that something better could easily be found.

Recently there have been two longer discussions (also on Reddit) about what the BSDs lack to be more competitive. There were a lot of great ideas and I’m one of the people who’d like to see at least some of them being implemented eventually. But let’s be realistic: This is not very likely to happen. There’s enough work going on regarding the must-haves, and when developers decide to work on a nice-to-have, it’ll be something that they want. If we really want to see some things not of very high priority to the various projects eventually land, we need to take care of that ourselves. If you’re a developer with the required skills and enough free time: Great! Nobody can really stop you. If you aren’t: Too bad.

I’ve thought about the possibilities of crowd-funding that we have today. In theory we could try to find a enough people who’d like to see a feature and are willing to spend some money so that the group could contract a developer. Even though I believe that there are enough developers out there who’d love to do some paid work on *BSD and would probably even prefer such a task over one that pays better, I’m not very optimistic about it. There’s not such a high chance of finding people who want the same feature implemented and would be willing to pay for it. Certainly not over a longer time which would be required to collect enough money. Also I don’t really like that begging for people’s money approach, either. So I came up with a different idea:

If you like *BSD you’re almost certainly an IT person. IT people all have a couple of things in common: We love tech. We use email. Almost everybody has his or her own homepage. Which means: We need domains. We need DNS. We need Webspace, etc. And we get that from service providers. Some of which are somewhat BSD-friendly, many of which are not. And even cloud providers for example that offer BSD as an option usually don’t do that because they love it (and regularly that shows…).

So what about providing services instead of just asking for money? Imagine starting a “hosting club” where like-minded people get something rolling that works for them and that could at some point be turned into a not-for-profit hosting provider that lives and breathes BSD! The latter would use the money acquired to pay the running costs and spend the rest on improving the BSDs. What could that look like?

Well, for example like this: Members could vote for a general topic for each year (like e.g. “desktop”, “drivers”, “de-GPLing”, “porting efforts”, …) and propose (as well as discuss) concrete project ideas over the year then voting again at the end of the year when the available money is to be spent. Any project that is beneficial for more than one specific BSD gets bonus points.

Which BSD operating system(s)?

In a follow-up poll I asked people interested in the project about which BSDs they are proficient with. Considering the general market share within *BSD it came to no surprise:

The largest group of votes were for FreeBSD somewhat closely followed by OpenBSD. People voting NetBSD, DragonFly BSD or multiple followed only after a huge gap.

Most people favor FreeBSD and OpenBSD

Pretty early on one person commented that even though NetBSD was his favorite OS, it might make most sense to go with FreeBSD for such a project for example due to jails being a very useful feature for that. I can imagine that there might be more people who decided to put their personal preferences aside and vote for what they think makes most sense for this use case.

To be honest, I’d like to see all of the BSDs being part of this in some way or another. But to be realistic, I think we need to start with something. This should be one or two BSD systems that project members are familiar with. Right now FreeBSD and OpenBSD seem to be the reasonable choices here. Of course we need to take into account what those systems excel in and which one to use for what.

Problems with the not-for-profit status

Like with everything, there’s pros and cons regarding the aim for this to be a not-for-profit eventually.

Pro:

It ensures that nobody involved in it could ever become greedy and try to sabotage the original idea of providing money to support *BSD. It would also protect such an organization from becoming attractive for buyout by a for-profit competitor should it go well. There would be benefits regarding taxes. And I’d imagine that it gives a good feeling to the customers which could be turned into a competitive advantage.

Contra:

The price to pay is inflexibility. A not-for-profit can donate money only to another not-for-profit organizations – and that very likely only in the country that it was formed in. With e.g. the FreeBSD foundation and the OpenBSD foundation we have to potential organizations that we might want to donate to; however one is US-based while the other one is Canadian. A for-profit company is free to spend money however it wishes. There might be other limitations that I’m not aware off. Going with not-for-profit would require consulting lawyers upfront.

A federated model?

One interesting idea that came up on Reddit was that of possibly going with a federated model. In this case project members / supporters who own a server but don’t need all of its resources would dedicate some percentage of CPU, memory and disk space for a VM that could be used for the project. The user who suggested this envisions that there could be some sort of market place where people can offer those resources to people who want a VM. The person who donates the resources gets to decide what field the biggest part of the money made from this would be spent on. The customer on the other hand can also influence the the direction by picking e.g. VM a) where the money goes to desktop improvements over option b) were he’d support permissively licensed alternatives.

I like this idea and think that we should discuss it. It has the obvious benefit of being able to start without somewhat high upfront costs for hardware. Also more people might be ok with a “donate some spare resources” approach for machines that are running anyway. The downside certainly is: Reliability. Donated resources might basically be withdrawn anytime. What could / should we do about that?

What’s next?

While this part 1 mostly covered the “why”, part two of the article is more about the “what” and the “how”.