libwebsockets.org-logo.svg

Major update for lws (and new logo)

Libwebsockets has been going for ten years now, it’s slowly growing in popularity in an organic way. Since it’s FOSS and freely available, it’s difficult to know how many users it has since they typcially just clone it and start using it, and only talk to me if there’s a problem.

The stats that are available are a bit indirect, it has 2.5K stars on github, consistently > 200 subscribers to activity notifications there, and > 200 people on its mailing list for many years now; there’s somewhere between 1 - 2000 clones a week. Occasionally I happen to find out by contributions, accident, by @xxx emails, emails from IP lawyers, or affiliations that it is in use at many major names, and is part of at least tens of millions of devices working well in the field, I can guess the real number is many times the ones I know of.

License change to MIT

Earlier in 2019 I changed master’s license to MIT after announcing it on the ml and waiting some weeks for objections; at that time I made a v3.2 release which was the last LGPLv2.1 version. The new v4 release is the first stable release using MIT.

The license change has its risks but I am guessing it will increase uptake, although at the same time make usage of it even more opaque since MIT can be silently used in proprietary firmware pefectly well. And generally, the more relevant lws is, the more chance I can continue to get paid to work on FOSS.

Since the change, contributions have continued to appear at about the same rate as when it was LGPLv2.1, which is a relief; it also suggests that in my situation anyway, trying to mandate contribution via the license is maybe no more effective as having strong forward progress in the project and constant cleaning / refactoring. As well as reducing the risk of non-sharing forks possible with MIT, these factors also tend to make keeping Out-of-tree (OOT) patches very expensive and scary and by contrast, giving fixes upstream so they are already there and tested by others when you update is highly preferable to users, whatever the license. Typically these contributions are not some huge IP grant, they are just cleaning up my mistakes, so there’s no downside for contributors. And companies in regions that tend to not care much about license details, may be more responsive to practical considerations.

Anyway we will see over time if that was a good decision.

New and not well-known lws features

There are a huge number of features in lws that are just in there and hidden away, many or off by default in CMake and people are unaware of the cool things that are available and just a CMake config setting away. So I hope to use this post as a placeholder for pointers to a series of blog posts exploring individual feaures and philosophical approaches in lws.