For Redis to be "open core", Redis Labs would have to be the owner and copyright-holder of the Redis codebase (like, say, NGINX Inc. is the owner and copyright holder of the Nginx codebase, and therefore are able to split Nginx arbitrarily into the Nginx "core" vs. Nginx Plus.)
But Redis Labs don't own Redis. Redis Labs—despite employing antirez—are just 1. a sponsor of the open-source development of Redis, and 2. a participant in the ecosystem of ancillary Redis products.
A closer analogy than "open core" is the thing RedHat, IBM, Dell, etc. do with OpenStack. They all make their own "distributions" of it, which combine the core FOSS OpenStack project with their own proprietary add-ons. OpenStack itself is a FOSS project, and is not "open core."
Similarly, Ubuntu and RHEL are corporately-developed Linux distributions. Is the Linux kernel, therefore, "open core"? No. Those distributions don't own Linux. They just bundle it together with their own stuff, and sell the bundle.
Red Hat is not the example you claim, everything in our products is open source, no piece of Open Stack or RHEL is proprietary software or open core. Even when we acquire proprietary software companies, we open source everything.
This model works very well for us, but I appreciate that it can be hard to replicate.
When it comes to open-source compliance, I would say RHEL follows the letter of the law but not its spirit. Although the source is available, and I’m sure it’s licensed in a way that meets OSI’s technical definition... it’s unreasonably hard to make useful modifications, contribute them back, or redistribute them.
In fact Red Hat deploys specific obsfucation techniques to make it harder for competitors to redistribute RHEL, while technically respecting the OSI definition of “open-source” [1]. I understand the business motivation for playing these sorts of games... but it kind of deflates the notion that Red Hat’s model is anything special or worth emulating.
Assuming Redis Labs will accept pull requests and generally follow the process of collaboration casually known as “open source” for their proprietary modules, even if it doesn’t meet the OSI’s technical definition of open source... Then as far as I’m concerned the Redis Labs model
is more open, in practice, than RHEL’s.
As the above poster said, Red Hat open sources everything. They buy proprietary software companies and open source the software. Red Hat officially sponsors the CentOS project.
I'm very familiar[1] with the "obfuscation" you linked to, and I think you are missing context. Red Hat used to ship their Linux kernel source RPMs as vanilla Linux kernels plus a series of patches. They switched to releasing the source RPMs as a fully patched kernel tree. They did this because Oracle started providing commercial support for RHEL (not just Oracle Linux), which is how Red Hat makes money. This had no impact on open source redistributions of RHEL, like CentOS, because they just compile the kernel source without modifying it. AFAIK the kernel is the only package they do that with.
[1] There was a kernel bug between RHEL 6 RC and GA, the RCs had individual patches, the GA kernel source RPM was pre-patched. Lack of patches made it harder to track down, but it was still possible by applying the patches to the RC kernel, then diffing the patched RC source against the GA source.
I don't understand, why did Red Hat need to start shipping their RHEL kernel source pre-patched just because Oracle started providing commercial support for RHEL? I don't understand how shipping pre-patched vs not pre-patched kernel source is related to Oracle providing support.
The GPL requires that source be distributed in the preferred form for making modifications. One of the FAQ examples is that if you have a perl script that generates C code you can't just distribute the C code, you have to distribute the perl script that generates it.
IMO distributing only the pre-patched source of the kernel is the same kind of violation. The preferred form for making modifications is the original source plus separate patches, that's what the people who are working on that code use.
IANAL, but I work on the Red Hat kernel. I don't need the patches of the Red Hat kernel in order to make modifications to it. I need the patches from the upstream kernel in order to copy them to the Red Hat kernel, but I often use "--depth=1" clones of git trees, in other words clones without the "patches", and make modifications to them.
Patches are useful, of course. They are useful to understand the evolution of the software, to support it, etc. But they are not necessary in order to make modifications to the software. Ten-fifteen years ago it was actually the norm that open source software had private source control repositories and only made periodic releases as tarballs.
Sure, it's possible to work without the patches. Equally it's possible to make modifications to code that was generated by a Perl script - or even to modify binary code directly without having the source at all (I've seen it done). The salient question is: what is the preferred form for making modifications to the work? And certainly I'd always want to have the patch history available when working on a codebase.
Working on a codebase however is not what the license says. It says specifically "making modifications".
If you have the Perl script that generates C code, you get a benefit from being able to modify the Perl script rather than the C code. So the Perl script is the preferred form for making modifications.
If you have the history, you don't get any benefit from modifying the history. In this sense, having the history is not relevant to making modifications, only to studying the code (for example to make the same modifications on another branch/fork of the code, like I do with upstream patches, or like Oracle could do if they had the Red Hat patches).
Your could say that this phrasing is shortsighted, but note that neither Red Hat not Debian or anyone else has ever given the complete history to Linux or any other piece of software they distribute, but they had to give the complete base source tarball as distributed by the upstream project.
> In this sense, having the history is not relevant to making modifications, only to studying the code
Studying the code is the first step in making modifications. I would always want to have a working "git blame" before trying to modify a codebase, so that I could understand lines in the context of the changes they were part of before I modified those lines. I consider it considerably harder to modify a codebase when I don't have proper version control history available.
My intuition is the same as yours, but I also note that Oracle didn't sue Red Hat over it. This even though they are also among the Linux kernel copyright holders and are one of the most litigious companies known to the tech industry, PR consequences be damned.
So maybe their lawyers disagree with us? Or maybe they're institutionally allergic to being a GPL enforcement plaintiff, even in their own strategic interest.
Not sure that suing is in their strategic interest. Do they publish the oracle Linux kernel prepatched? If so, they wouldn’t want to set a precedent that Red Hat is breaking the GPL.
> Redis Labs would have to be the owner and copyright-holder of the Redis codebase
This is actually an interesting argument but I'm not sure this statement is necessarily or obviously true. What has been put forth in this blog posting is that Redis Labs has created proprietary modules for features that antirez has no intention of accepting into Redis core (like JSON and a full-text search engine). So why does it matter whether or not Redis labs owns the code? NGINX Inc. sells modules for features they aren't putting into the core product as well.
It doesn't appear like owning the full copyright to the core makes any difference.
Citus makes proprietary modules for it, and likely employs some postgres devs. I wouldn't consider postgres "open core" by any means. I would consider Citus "a proprietary extension".
If the majority of the development of an open source product comes from proprietary extensions then it's open core. That's the project's particular monetization model.
In this case, it seems like that is the monetization model for Redis (and plenty of other open source projects). It's not the case, as far as I know, for Postgres.
> Would you consider postgres "open core" as well?
Its not entirely bizarre to say that, though it's farther from undisputable open core than Redis is, as there isn't a single proprietary vendor with as significant a relationship to the open source project as is the case with RedisLabs.
> Citus makes proprietary modules for it, and likely employs some postgres devs.
And EntrepriseDB. And a number of other proprietary downstream vendors that sponsor significant Postgres development. If PG is open core, it's radically decentralized open core.
> therefore are able to split Nginx arbitrarily into the Nginx "core" vs. Nginx Plus.
Anyone can split the Nginx core codebase arbitrarily into A and A Plus.
"Nginx" is trademarked, just as "Redis" trademarked, but I don't think we're talking about trademarks. I think we're talking about code, and the BSD open source code bases can -- in theory -- be changed and evolved by literally anyone.
---
> Those distributions don't own Linux.
With such permissive OSS licenses, there is little of the traditional concept to the word "own".
> Similarly, Ubuntu and RHEL are corporately-developed Linux distributions.
Hypothetically, suppose Ubuntu was responsible for over 90% of Linux development, and Ubuntu maintained extensive non-OSS additions to Linux.
Or suppose CloudBees was responsible for over 90% of Jenkins development, and CloudBees maintained extensive non-OSS additions to Jenkins.
Then yes, in both cases I would absolutely call it open-core.
I don't think that's a dirty word; it simple describes the realities of the situation.
You seem to be making a distinction with a difference.
> For Redis to be "open core", Redis Labs would have to be the owner and copyright-holder of the Redis codebase
Cloudera (Hadoop), MapR (Hadoop), Elastic (Lucene), LucidWorks (Lucene/Solr), DataStax (Cassandra), and DataBricks (Spark) are all companies with an "open core" business model around Open Source projects hosted at the Apache Software Foundation. (Those are just off the top of my head -- there are plenty more.) All ASF projects have many copyright holders.
I think part of the confusion is that we are assigning an attribute to an API that can and should be willfully ignorant of the ecosystem around it. The APIs are not open core but the companies around them are using an open core business model.
antirez as the creator of redis is stating that redis is not open core. antirez as an employee of Redis Labs is working for a company that has adopted an open core strategy, and which is using redis as their core, which doesn't make redis the API open core.
Redis labs employs antirez, the Redis trademark is owned by antirez but used by Redis Labs and the open source project has a page for commercial support which directs you to Redis Labs and no other potential commercial support options. The ties between the open source project and a single company are much stronger than any of the examples you have provided. I would argue strong enough to warrant classifying Redis as open core.
For Redis to be "open core", Redis Labs would have to be the owner and copyright-holder of the Redis codebase (like, say, NGINX Inc. is the owner and copyright holder of the Nginx codebase, and therefore are able to split Nginx arbitrarily into the Nginx "core" vs. Nginx Plus.)
But Redis Labs don't own Redis. Redis Labs—despite employing antirez—are just 1. a sponsor of the open-source development of Redis, and 2. a participant in the ecosystem of ancillary Redis products.
A closer analogy than "open core" is the thing RedHat, IBM, Dell, etc. do with OpenStack. They all make their own "distributions" of it, which combine the core FOSS OpenStack project with their own proprietary add-ons. OpenStack itself is a FOSS project, and is not "open core."
Similarly, Ubuntu and RHEL are corporately-developed Linux distributions. Is the Linux kernel, therefore, "open core"? No. Those distributions don't own Linux. They just bundle it together with their own stuff, and sell the bundle.