Sunday, 11 October 2020

Being Free

Free, as in free beer

This used to heard all the time, before open source licensing became as organized as it is today, these are the words you would find in LIC.txt ...

Do you have any idea how much carbon dioxide is produced in the making of any beer ? It might interest you to know that the yeast used to produce beer creates equal parts ethanol and carbon dioxide ... Give it two minutes thought and you'll release that even if you don't pay for a beer, the Earth certainly does.

Anyway, this isn't a blog about being green, or reducing your carbon footprint.

Nothing is really free, as in free beer ... the only questions are who pays for it, how much, and when ...

Free, as in free speech

I've used the word free again, but this time to refer to liberty ... This is the freedom we build business on, the freedom that we should really value, and the freedom that has spawned a hundred different licenses.

Who Pays ?

When a programmer releases some software under an open source license, they are not expecting to be paid, at most they are expecting some feedback, and maybe a little user base to form. That user base often pushes the software forward and helps it grow, in turn the user base gets bigger, and if they are super lucky an ecosystem - a self sustaining ecosystem - of developers and users forms. An ecosystem can self sustain when there are enough developers to support the number of users of the software.

In some cases, the user base far outgrows the developer base - by factors of more than a million - at this point, the only person paying is the developer providing the software, they are paying in free time, and sometimes with real world currency (keeping servers and such available).

That's rather over simple, it's likely that the developers children, partners, and friends are paying for it too ... All the time mom or dad spends at the computer writing and maintaining their software, they can't spend with kids, or with their friends.

This erodes the freedom of the developer in a very real sense ... 

It should be obvious that most PHP core developers and extension developers find themselves in this position: Simply by virtue of the fact that PHP and PHP extensions are written in a language that is not widespread in the (PHP) developer community the user base (if it grows at all) will always far outgrow the developer base.

Who Should Pay ?

The liberty extended to you by open source licenses often allows you to avoid financially supporting software which you rely on. But that doesn't mean you shouldn't, and not just for moral reasons and to preserve the liberty of the people providing the software, but for good business reasons.

In the end, a developer that finds themselves at the root of an unsustainable ecosystem is going to have to fold and stop providing that software. What will that do to your business ?

Everyone that wields financial power within their organization should be obliged to audit their stack and find the weakest parts, reach out to maintainers and developers and ask how you can support them.

Why Now ?

Recently two well known community members made known their intention to support the packaging of PHP 8.0 for Debian based operating systems, the post on reddit has one of the highest number of upvotes I've ever seen, and the community rejoiced ... as they should.

That was very cool, and I don't for a moment want to detract from the people doing the work or paying for it to be done.

However, it's a bit upside down ... The maintainer of packaging can't ensure that anything continues to be maintained, they can package whatever is available, they can propose PR's.

Still, there are two people being paid to work on PHP full time, there are numerous extensions of which only one that I know of is supported financially by the ecosystem. There are also two package maintainers for Redhat and Debian ... 

However, in recent years Zend (or whatever it's called this week) was sold and broken apart and while they still employ Dmitry to work on PHP, they don't have the spending power they did. Microsoft have also walked away from providing support ... while that's not a knockout blow, it's a noteworthy fact. Other big players are certainly less vocal than they were in the past, if they are involved and the extent to which they are involved is not well understood.

These facts don't come together to describe a healthy ecosystem, and while it's true that PHP has existed for the last 20 years under more or less the same conditions, it's also true that 20 years ago, any C programmer familiar with standard C could have picked up PHP and run with it. 20 years on PHP is a very complicated beast, and the number of people that can run with it can be counted on your fingers, as a result it is in a much more precarious position today.

The problem of funding open source is widespread, but since I (we) have built careers on the freedom PHP has provided, that's what I think about and care about right now.

The solutions to these problems are going to be different for every ecosystem, while we all thought that Patreon, and Github Sponsors were going to solve everything, they haven't ... They've provided another route to support people, and are ignored in exactly the same way as picking up the phone and writing a cheque was before them.

In the case of PHP, if your stack relies on an extension then it should be easy enough for you to find that persons name and contact details and reach out to them as suggested.

If you want to support the maintenance of PHP itself, a few ideas come to mind:

  • Watch carefully and identify the developers doing the kind of work you find beneficial and offer to support them in doing that.
  • Retain someone in your employ that is able to engage internals and allow them to do so on company time.
  • Give someone in your employ that has the prerequisite knowledge (C) the freedom to learn how to engage internals on company time - ProTip, send them to Room 11.
There's talk of foundations and campaigns and other marketing words ... I view this is as a waste of time: For a foundation to form, or a campaign to be run, or any other marketing strategy to be employed, there would have to be someone in charge. There is nobody in charge. Nobody has the authority to do that stuff, and I hope they never do.

If you want to help, and see the importance of doing so, then the simple fact is: you have to do the leg work.