Out of 6 languages recommended by the NSA, 4 are patended bvy multibillion comanies who can pull the plug on them at any time (and Oracle already tried that).
C# - PATENTED by Microsoft,
Go - PATENTED by Google
Java - PATENTED by Oracle, NOT FREE
Python - not too shabby
Rust - not too shabby
Swift - PATENTED by Apple
People who are saying that these patented languages are open soruce or ISO standardised, have never heard of H.264.
H.264 is both open source and an ISO standard and you'll still get slapped with fees if you try to peddle your own encoder, even if you wrote it from scratch.
Or are you saying "These corporations would never do this to us!" because oh boy, do I have a bridge to sell you!
@sos TIL: Python is older than Java
@sos Interesting, would you mind sharing the patent numbers or linking to somewhere they are listed?
@diazona With all due respect, I believe you're able to look this up yourself.
It's not like it's hidden knowledge, there's a PATENT file in C# (Mono) and Go codebase with a patent exceptions, Java is not really news, and Apple patent seems the shadiest as I coudn't find any info about a patent exception/grant for Swift except for the fact that they did quietly patented it.
@sos Pointing out that there are files in the source code listing the relevant patents is good enough of an answer for me to get started.
@diazona Good luck! I also believe they're covered by mutliple smaller patents covering unique language aspects than a blanket-patent (at least what i've seen from Swift case)
The separate PATENTS file in go.git is no different than the Apache License 2.0 §3 or the GPLv3 §11. If Go were under the GPL or Apache, you wouldn't say "It's clearly there in the COPYING file".
Furthermore, the grant in the PATENTS file (same as GPLv3 or Apache) means that they *can't* use patents to pull the plug on you, as your original post asserts.
The same is probably true of PATENTS.txt in mono.git, but I'm not familiar with it and it's long enough I'm not going read it.
- They probably don't even know if they have patents that apply to Go/Swift/C#. If they did, they'd list them. They know that they have many many patents, and so it's easier (cheaper!) for them to just say "whichever of our patents are relevant to Go/Swift/C# -- you have a license to use those".
- Defensive purposes. The Apache License 2.0, the Go PATENTS, and Mono PATENTS.txt terminate if you try to sue the grantor for patent infringement.
@lukeshu @diazona But it's not impossible for them to start enforcing them. Is it?
Two things I've learned in my time as a developer are:
- You don't trust corporations, even if you have stuff in writing, they'll pay damages and roll all over you
- Software patents are the worst thing in software development and you don't want to be anywhere near anything patented.
- It's impossible for them to renege: just as the copyright license is a legally binding "we won't use the copyright against you", the patent grant is a legally binding "we won't use the patents against you".
- Software patents *are* the worst. Which is why the community demands that modern FOSS licenses include a patent grant, to neutralize the threat of patents. You should be concerned that Python doesn't have a patent grant, not that Go does.
@planettimmy @lukeshu @sos This all touches on one of the things that bothered me about the original toot, too (but I didn't want to mention it without taking some time to consider): technically it's not right (or at least not very useful) to say that "Python is patented" or "Go is patented" or so on. There will be patents covering specific algorithms and features that are incorporated into those languages and/or their standard libraries, but that doesn't mean the language as a whole is patented. (A programming language could probably be patented, I've seen something along those lines, but it's unusual for any language that intends itself to be widely adopted)
When comparing different languages in this axis, it's important to consider how much of what makes up "the language" is actually subject to patent protection and what restrictions that really entails in practice. It's not a binary decision, patented or not.
Yes, it does cost a lot of money to file a patent. But it's mostly chicken feed to these multi-billion dollar companies.
And as for giving up patent IP for humanity. I know they *sometimes* do as they have done it for at least one of my patents. The main rationale is that the idea behind the patent only works with widespread adoption and protected IP usually kills that. c/f programming languages and protocols.
@sos @diazona That's a highly unlikely scenario. Core software frameworks are always liability which you can't really turn into profit. That's the reason why MS is selling service which include the those frameworks as features and that's how they generate value. In other words, if MS drops support for it, they just will dump it as free software and there's that. But that is highly unlikely because .net is part of their cloud business strategy.
@sos MSFT has a community promise that waives the C# and CLI patents though. It's legally binding so they can't revoke it even if they wanted to. In a nutshell the promise says you can do whatever you want with the languages but not sue Microsoft.
@markuslatvala Not really. The waiver only applies to Mono codebase and only if it's used in it's entirety, from what I've seen.
Plus, maybe they cannot revoke them for current versions, but nothing stopping them from doing so for future iterations.
@sos Mono is more about the .NET libraries than C# anyway. Of course it might be possible that there's a loophole that allows them to pull the rug somehow. Proprietary is always proprietary.
@markuslatvala @sos C# was part of the Open Specification Promise, but now c# is an ISO standard. https://www.iso.org/standard/75178.html
@darrel_miller @markuslatvala H.264 is an ISO standard and GUESS WHAT?
EDIT: If you didn't guess, H.264 is patented and even if you write your own codec from scratch you're still subject to fees.
@sos
Current C#/ .NET is also currently MIT licensed.
https://github.com/dotnet each project you can click on is MIT
@bigolewannabe @markuslatvala You are mistaking copyrights and patents. H.264 is open source, but even if you write your own implementation of it, you are subject to patent fees.
@rckoenes @julia @sos @damien Oracle lost the lawsuit (if we are referring to the same). They didn’t just use the language, they provided an alternative implementation for its standard library. Something that Microsoft lost a lawsuit over in the past.
In this case, the supreme court ruled that Google’s usage of the Java APIs was fair use.
@sos why does it matter if it's patented when it's open source?
@mariskus YES. It's the worst kid of open-source.
H.264 is for example open source but patented. Want to write your own H.264 encoder from scratch? Guess what, you gotta pay up!
@sos @mariskus There's a difference between first party and third party patents.
If I patent some technique and use it in some software I release under an open source license, then I've granted a license to use those patents in the context of the software (assuming the license includes an implicit or explicit patent grant).
That's quite different to me releasing some open source code that implements someone else's patented technique, where I'm not in a position to grant a patent license.
@mariskus @sos I might be getting this a bit wrong but off the top of my head:
If something - like an algorithm or whatever - is patented, it means you can't make it or (I think) distribute it without permission from the patent holder (until the patent expires), *period*. That applies regardless of whether you came up with it independently, or whether you have instructions on how to make it, or any other factors.
By some (questionable) definitions of open source, software can be open source in the sense that you can freely download and share the source code despite it being covered by patents that make it illegal for you to actually compile it and run it.
As an analogy, if I patent a particular engine, I have the right to stop unauthorised people distributing that particular enginee (for free or not) in the territory of the patent for the duration of the patent. This is true even if the plans of that particular engine are publicly available on the web, which they will be (at least in the patent application).
This monopoly is the reward for being the first to publicly disclose the particular engine.
@sos The situation for Java, at least, is nowhere near as bad as you make out: https://wiki.endsoftwarepatents.org/wiki/Java_and_patents
@sos But... you can't just patent an entire language, and there's no guarantee that any of the big tech companies don't own patents on techniques currently used in Python, Rust, and other languages.
Furthermore, any patents that Oracle and Google had when they started Java and C# will have expired by now.
@sos Patents only last 17 years, so C# will no longer be patented.
It has also gone fully open source - while they retain (c) I'm sure. So not quite the same here.
Misleading information
Did Oracle not incur fees for enterprises? Please correct me if I'm wrong, I'll edit the post!
But for the patents, this is not misleading, they are there, enforced or not, they exist.
@sos @AstraKernel No, they do not. They have their own build of the OpenSource Java runtime they want to see fees from enterprises for, but the only valid reason to use it is if you use Oracle products and want to get their support.
@sos @AstraKernel You are wrong.
The OpenJDK project, which is the GPLv2+CP licensed source code project that Java is built from, requires that contributors sign a dual-license agreement.
This grants Oracle the right to relicense their contribution & include it in Oracle proprietary builds.
Oracle support fees are for the use of their binaries & there are reports of Oracle pursuing firms who have made use of proprietary builds & not paying.
None of this affects non-Oracle builds of OpenJDK
@sos @AstraKernel There are complexities about whether a binary built from OpenJDK source can legally be called "Java", but that is a *trademark* issue and not due to *patents*.
tl;dr Get your Java from someone other than Oracle (The community-led Adoptium builds from the Eclipse Foundation are my usual recommendation) and you're fine.
@sos Ada it is, then.
(Delphi made Object Pascal owned by a single company so, patented or not, it's living its best life in a walled garden)
@sos (mentioning the two as, depending on which document you find, they are also on the list, and standing out a little )
https://media.defense.gov/2023/Apr/27/2003210083/-1/-1/0/CSI_SOFTWARE_MEMORY_SAFETY_V1.1.PDF
@sos come join us folks busy building a Python & Rust ecosystem for the future!
@sos Isn't Rust largely controlled by Amazon these days?
@soc If it is, they could easily sneak some patents in.
@sos @soc Rust's licensing includes a patent grant that reads almost identical to Go's one (compare https://github.com/rust-lang/rust/blob/master/COPYRIGHT#L105-L119 with https://github.com/golang/go/blob/master/PATENTS).
If Amazon contributed code that made use of one of their patents, then they would also be granting a royalty free license to use the patent that is irrevocable unless you try to enforce your own patents against someone for using Rust.
@sos C# patents can be used freely in open projects. Hence why Mono was allowed to exist, and even commercialize their own C# implementation (they sold it to Unity among others).
Java is a different story. They argued copyright when Google copied their API and lost that case.
@Robin_Van_Ee Well, what stops them from changing "Covered Specifications" and "Convered Implementation"?
@sos Having this kind of stuff in writing would make that very difficult.
Of course they can make any future versions closed source but the same can be said of any FOSS project, and the community is explicitly allowed to fork at least the current version.
@sos Oh yeah, MPEG-LA love their per encoder and per decoder fees.
@sos, did someone steal the brass bridge after all?