-
Notifications
You must be signed in to change notification settings - Fork 163
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?
After discussion, Saulius Krasuckas started off by trying to contact several people at SAP. He didn't immediately have any success, but (either due to this, or others getting in touch) SAP eventually took notice.
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.
The arguments in favour, such as shipping in mainstream Linux distributions apply equally, both for v1.9 and v2.0. The good news is relicensing has been embraced by both communities.
Version 2.0 was of course forked from v1.9. Hence permission for relicensing (etc.) from the many v1.9 contributors, up to that date, is also required for v2.0.
Michal Necasek (the maintainer of v1.9), David Ryskalczyk (who helped a similar effort with MAME) made a very strong initial pass at contacting contributors. There were almost certainly others involved who I don't know (sorry). Later, Saulius Krasuckas and Iain Nicol helped track down the remaining contributors.
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 |
|
Some third-party code is distributed with Open Watcom, in source or binary form. This code is under its own licenses.
The relicensing project motivated us to take a closer look at the licensing of third-party code. Sometimes we have been able to convince the authors of such freeware projects, to relicense under proper open source licenses.
Path | Open source? | License | Elaboration |
---|---|---|---|
bld/redist/builder.ctl |
Yes | Same as Open Watcom proper | This is not third-party code; it is first party build system code |
bld/redist/causeway/ |
— | — | Moved to bld/causeway/ , and then forked. See the original source code directory in contrib/extender/causeway/
|
bld/redist/dos32a/ |
— | — | See source code directory in contrib/extender/dos32a/
|
bld/redist/dos4gw/ |
No | Freeware | Widely used by commercial games such as Doom in the 1990s. The author, Terry Colligan, granted permission to update the version distributed with Open Watcom. Unfortunately this cannot be open sourced: sadly, Terry Colligan died in 2018 |
bld/redist/files.dat |
— | — | Same situation as bld/redist/builder.ctl
|
bld/redist/lang.ctl |
— | — | Renamed in Open Watcom v2, see bld/redist/builder.ctl
|
bld/redist/pmodew/ |
Yes | MIT | PMODE/W DOS extender. This was originally commercial, then freeware for a long time. Source available since 2018. In July 2023 the authors, Charles Scheffold and Tomasz Pytel, kindly relicensed to MIT. Their website was updated accordingly |
contrib/awk/ |
Yes | MIT-CMU | The famous original implementation of AWK. AWK is named after its original authors: Al Aho, Brian Kernighan, and Peter Weinberger. Copyright by Lucent Technologies. Finally, note this directory was not deleted in Open Watcom v2, merely moved to bld/awk/
|
contrib/bzip2/ |
Yes | bzip2-1.0.6 | The famous compression library bzip2, by Julian Seward |
contrib/dostrace/ |
Yes | Apache-2.0 with LLVM Exceptions | Originally the license of trace looked a lot like a short permissive license. However, actually, the license did not grant the right to modify the software. In July 2023, upon request, the author Diomidis Spinellis put trace on GitHub. He relicensed it to Apache-2.0. Moreover he (by email to @iainnicol) granted permission to use the LLVM Exceptions, for the version included in Open Watcom |
contrib/extender/causeway/ |
Yes | Public Domain | Archived homepage. By Michael Devore. The Public Domain dedication mentions three caveats. These are regarding “Runtime libraries for CauseWay for Clipper 5, CauseWay for Clarion 2.1, and the trap file source for Watcom”. Thankfully, none of these are problematic. A grep suggests neither of the first two is in the directory, neither in source nor binary form. Moreover, the binaries for Clipper were later released in a proprietary redistributable form, so clearly are not in this prior release. Finally, the Watcom trap file is built from source in the main bit of the Open Watcom repository, so is accordingly licensed the same as Open Watcom proper |
contrib/extender/dos32a/ |
Yes | DOS/32 Advanced DOS Extender Software License | Archived homepage. Originally proprietary, it was open sourced in 2002 by the author, Narech K. The license is like Apache-1.1 without the original clause 4. Note the final numbered clause requires you to rename the software if it is modified. Because the upstream website no longer exists, the author was asked in July 2023 if he thought the renaming clause was still required. It is the author’s desire (which we must respect) that the clause remains. (Note that although the clause is a minor inconvenience if you want to make a trivial fix, it does not stop the software being FLOSS. Ultimately, you can rename the software without too much bother.) |
contrib/libzip/ |
Yes | BSD-3-Clause | Homepage. The authors are Dieter Baron and Thomas Klausner |
contrib/mp3lib/ |
Yes | Public Domain | Archived homepage and a more-recent homepage. MP3 Decoder Master’s Thesis, by Krister Lagerstrom |
contrib/tinyxml/ |
Yes | ZLib | By Lee Thomason, Yves Berquin, Andrew Ellerton, et al. The abandoned but open source v1 of TinyXML is on SourceForge. The original author has also written a newer version, TinyXML-2. TinyXML-2 is under the same license and is on GitHub. |
contrib/torture/ |
Unclear | Worst case: lcc; best case: possibly Public Domain | These are “C Reference Manual Tests”, sometimes (less uniquely) called “C Torture Tests” or ctt. The origin of this test suite was initially unclear, simply that it was old and somewhat well known. However, it transpires that the lcc compiler redistributes these tests as test/cq.c , even in old versions. Chris Fraser is an lcc author. His best recollection is cq.c was written by Fred Grampp, who worked in the same center at Bell Labs. This concurs with a 1987 survey of C test suites, which talked of an “CQ (Grampst)” test suite at AT&T. Chris confirmed they had permission from AT&T to distribute cq.c with lcc. This means cq.c can certainly be redistributed, by following the lcc license. Whilst the lcc license is not open source, it allows non-commercial redistribution. Note that these tests are part of the Open Watcom repo, but they are not redistributed with the binaries. Besides, @iainnicol has his suspicions (this is not legal advice) that the test suite may actually be Public Domain. The test suite dates back to 1987 or earlier, so predates the U.S. implementing the Berne Convention on 1989-03-01. Moreover the files seemed to have been widely shared without copyright headers. For example, the Golden Orchard CD includes the test suite in the directory GO-Programming/GNO Sources/c.torture/ . The timestamp on the readme dates to less than two months after after the implementation of the Berne Convention; maybe there is proof of earlier public release. |
contrib/wattcp/ |
Eventually | Freeware; likely MIT or a BSD variant, when open sourced | This is the TCP library Watt-32, by Gisle Vanem. It was forked from WATTCP by Erick Engelke, and, in turn, tinytcp by Geoffrey Cooper. For a long time these were all freeware (context makes clear tinytcp was only ever “public domain” in the sense of being public, not free of copyright restrictions). Later, tinytcp and then WATTCP were relicensed to the LGPL (see the file include/copyrigh.h of wat1104.zip). Not knowing this, in July 2023, @iainnicol asked the authors of both to MIT license their code. They agreed (including to the pedantic request to give this permission for old versions, as forked by Watt-32). There is also a desire to give Watt-32 a proper open source license. The maintainer is happy in principle, but this might require more effort, namely to seek permission from other contributors (where required). Finally, note this directory was not deleted in Open Watcom v2, merely moved to bld/watt32/
|
contrib/zlib/ |
Yes | ZLib | The famous compression library zlib, by Jean-loup Gailly and Mark Adler |
redist/causeway/ |
— | — | Moved, see bld/redist/causeway/
|
redist/dos32a/ |
— | — | Moved, see bld/redist/dos32a/
|
redist/dos4gw/ |
— | — | Moved, see bld/redist/dos4gw/
|
redist/lang.ctl |
— | — | Moved, see bld/redist/lang.ctl
|
redist/pmodew/ |
— | — | Moved, see bld/redist/pmodew/
|
We haven't yet done a thorough audit of the rest of the code base. It is plausible there is some permissively licensed third-party code included, such as in libc math functions. Perhaps this information should be collected into one place.
Moreover, the Open Watcom docs already have some copyright info for third-party components. This is an obvious document to check and extend.
Separately, we can probably upgrade the SGI Free License to a newer (FLOSS) version, in the old w32api directory.
As I said, we haven't recently done a thorough audit.
- 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