-
Notifications
You must be signed in to change notification settings - Fork 160
Relicensing effort
Watcom was open sourced by Sybase, with the help of SciTech Software, back in 2002. Open Watcom is released under the Sybase Open Watcom Public License version 1.0.
Unfortunately this license is problematic. The good news is it is considered to be Open Source. The bad news is it is not considered to be Free Software by either the Free Software Foundation, Debian, or Fedora. This is very unusual: usually Open Source code is Free Software, and vice versa, with the difference between Open Source and Free Software being philosophical.
This can be viewed as a legal or philosophical problem. It is also, immediately, a ‘practical’ problem. To flip it round to a positive: if Linux distributions like Debian and Fedora were to ship Open Watcom, it would increase the number of potential users and contributors.
One major specific problem with the license is the definition of Deploy in clause 1.4. The definition is overly broad and prohibits some private use (without publishing your changes). Moreover, clause 2.2(c) is at the very least annoying, by requiring you to distribute source code for up to twelve months after you stop distributing binaries. This is even if you offered the source code side-by-side with the binaries, back when you distributed the binaries. This is, again, a practical annoyance. There is also concern that clause 12.1 Termination is overly broad, preventing litigation over non-software patents, unrelated to Open Watcom; in contrast, the Apache licence patent termination clause only relates to patent ligitation over ’the Work’.
Finally, it has long been recognised that open source license proliferation is bad, due to redundant choice, and unnecessary incompatibilities. (To be fair to the history of the project: the license which we are relicensing to didn’t exist back when Open Watcom was open sourced. And it is only relatively recently that the free and open source communities have coalesced around a limited number of licenses.)
There is prior art for relicensing large open source projects. Both Mozilla (Firefox etc.) and OpenSSL were relicensed. MAME as well.
Relicensing projects can take years. The basic procedure is that all historical contributors (copyright holders) are tracked down, and contacted. This can be difficult if email addresses were never given, or no longer work. Each contributor is politely asked to relicense their contributions.
If the contributor approves, great.
If not, there are a few options, which aren’t always ideal. The default option is to remove the code. The code can be rewritten, in an original way; the downside being this takes time, especially if somebody contributed a large, or many, changes. Sometimes you might get lucky, in that their contribution has already been removed, or rewritten, with the passage of time. Finally, trivial, few line, bug fixes or typo fixes probably do not meet the threshold of originality for copyright, and so permission may not be required. For example, contributing to GNU Emacs requires assigning your copyright to the Free Software Foundation, but this is generally not required for contributing fewer than fifteen lines of code.
Because of these issues, there has been a desire, for a number of years, to relicense Open Watcom. This has gone (IMHO) from wishful thinking, to an ambitious project, to an almost-inevitability. For the full historical details of this relicensing project, you may wish to skim the GitHub discussion. Certainly, the discussion shows how many people have been interested and involved over the years, because relicensing is a huge project.
With the desire of several people to relicense, the next question is: how?
SAP bought Sybase in 2010. As such, SAP, and only SAP, can create new versions of the Sybase Open Watcom Public License.
It had initially been hoped that SAP could simply put out a formal statement to “clarify” the license. However, the license has sufficiently many issues that a clarification would not be sufficient.
It had then be hoped that SAP could release a new version of the license. This license would have the issues fixed, perhaps by relabelling an existing common free and open source license. Then, under clause 7 of the license, you could choose to use Open Watcom under the new license. The good news is SAP are willing to help. The bad news is SAP (very reasonably) think that they can only relicense their own code, and specifically not code that others have since contributed to Open Watcom. This is disappointing, but we stress that SAP are being reasonable and moreover helpful, so the situation is annoying but it’s nobody’s fault.
SAP are willing to relicense their own contributions under the Apache License, v2.0. Sebastian Wolf from SAP reached out to the community, to say such. This is important, because Sybase/SAP’s code is the original basis for Open Watcom. SAP will likely grant addition permissions, possibly the GCC Runtime Library Exception, or maybe more likely probably the LLVM Exceptions. These additional permissions will reduce the burdens on compiler users when linking against standard library code. SAP are now making a final decision on licensing.
Similarly to the aforementioned Mozilla, OpenSSL, and MAME relicensing, we then need to contact existing contributors, to ask for their permission to relicense their code. As before, the ideal scenario is we can get in touch, and they agree to relicensing.
SAP had originally proposed that they would host a new repository. First, SAP would re-open source Open Watcom v1.0. Then, the Open Watcom history would be recreated, by re-committing changes only from contributors who were happy with the relicensing. This was a very reasonable offer, which was appreciated. Nonetheless, Iain Nicol felt it would be simpler to simply delete (or rewrite) code which cannot be relicensed, as opposed to re-creating a new history. Under this alternative suggestion, SAP would relicense the historical Open Watcom v1.0 code. Fantastic. Then, creating a suitably relicensed version of Open Watcom v1.9 and v2.0 would be left to the community. SAP are deciding which approach to take.
Relicensing is beneficial to both communities. The arguments in favour, such as shipping in mainstream Linux distributions apply equally, both for v1.9 and v2.0. Thankfully it turns out many contributors are in favour of relicensing, in both communities.
Version 2.0 was of course forked from v1.9. Hence permission for relicensing (or failing that, having to rewrite lots and lots of code, etc...) is required of v1.x contributors, to be able to relicense v2.0. As said, relicensing v1.9 should also be beneficial on its own merits, for v1.9.
Michal Necasek (the maintainer of v1.9), David Ryskalczyk (who helped a similar effort with MAME), and almost certainly others who I don't know (sorry), made a very strong initial pass at contacting contributors. Later, Saulius Krasuckas and Iain Nicol joined to help finish the effort.
The great news is all v1.9 contributors have been tracked down, and are open to relicensing.
However, we may need to go back to a few v1.9 contributors, and double check they are ok with the exact licence (depending on how general or specific the permission they have already given is). This is the easy part: it was tracking down everybody which was hard.
In the table below, we note where people are v1.9 contributors. This isn't to make drama regarding the fork. It is simply because their permission was already required for relicensing v1.9 (and relicensing v1.9 is conversely is required for relicensing v2.0).
People who contributed to v2.0 only were specifically asked about their willingness to relicense under Apache 2.0 plus the LLVM Exceptions. Earlier on in the process, there was some uncertainty as to what additional permissions to the Apache license would be granted. But by the time v2.0-specific contributors were approached, there was reasonable certainty that the extra permissions would be the LLVM Exceptions. Regardless, several contributors are pretty relaxed about which specific new (free and open source) license is chosen.
This list of contributors is complete, up to and including 7 July 2023. However, we need to check if there were any new contributors since this date. (Note that for the most part, commit counts were calculated in May 2023, so the current counts may be larger.)
No. commits | Name in git log | Contact/approval status |
---|---|---|
14089 | Jiri Malak | See Jiří Malák, on next line |
356 | Jiří Malák |
|
137 | Jeffrey Armstrong |
|
62 | rdos314 | See Leif Ekblad, on next line |
62 | Leif Ekblad |
|
38 | Michal Necasek |
|
22 | bmanga | See Bruno Manganelli |
21 | unknown |
|
14 | Peter C. Chapin |
|
14 | Bruno Manganelli |
|
14 | Christian Rendina | |
10 | Peter Chapin | See Peter C. Chapin |
7 | Sam Izzo |
|
7 | beketata |
|
6 | sezero | See Ozkan Sezer |
6 | seyko |
|
6 | Alexander Misel | |
5 | Tim Hentenaar |
|
5 | Jeff Armstrong | See Jeffrey Armstrong |
4 | Wohlstand |
|
4 | Stas Sergeev |
|
4 | Jonathan Campbell |
|
4 | Jens Staal |
|
3 | Wayne LaBelle |
|
3 | Cameron Cawley |
|
3 | Andrei Warkentin |
|
2 | Javier Gutiérrez Chamorro |
|
2 | Charlie Root | See Jiří Malák. This was due to default git settings. |
1 | Yvan Janssens |
|
1 | yamori813 | |
1 | Tomasz Konojacki |
|
1 | Th3T3chn0G1t | |
1 | Steven Levine |
|
1 | Stefan |
|
1 | Shiz |
|
1 | Paweł Stankowski |
|
1 | Ozkan Sezer |
|
1 | OW Contributors | This is a (very large!) subset of Open Watcom v1.9 commits, squashed into one giant commit. As such this requires permission from contemporary v1.9 contributors. Thankfully, as above, we have approval from all v1.9 contributors. |
1 | Javier |
|
1 | James Kruth |
|
1 | Jake S. Del Mastro |
|
1 | Detlef Riekenberg | |
1 | Detlef | See Detlef Riekenberg (same email address so isn't a coincidence) |
1 | Delilah Hoare |
|
1 | David Griffith |
|
1 | Davide Pisanò |
|
1 | Count_MHM | |
1 | Christoph Neidahl |
|
1 | Christian Groessler |
|
1 | Bad Sector |
|
1 | Azarien | |
1 | Anders Carlsson |
|
1 | Alexander Udovichenko |
|
- Welcome
- Building
- Open Watcom Documentation
- Notes
- Relicensing effort
- Debugging
- OW tools usage Overview
- OW tools usage with CMake
- OW tools usage with Visual Studio Code
- Open Watcom 1.9 Wiki
OW Development
WGML Development
- WGML
- Augmented Devices
- Binary Device Files
- Common File Blocks
- COP Files
- Device File Blocks
- Device Function Language
- Device Function Notes
- Device Functions
- Directory File Format
- Drawing Boxes
- Driver File Blocks
- File and Directory Names
- Font File Blocks
- Fonts
- GML Tag Notes
- Keyword Statistics
- Macros and User Defined Tags
- Meta Data
- Page Layout Subsystem
- Search Paths
- Sequencing
- System Symbol Notes
- Tabs and Tabbing
- whpcvt Utility interaction