Yes, The Appeals Court Got Basically Everything Wrong In Deciding API's Are Covered By Copyright
from the fundamentally-not-understanding-that-apis-are-not-software dept
Copyright expert and professor Pam Samuelson, one of the most respected scholars of copyright law, has published a short paper explaining what she calls the "three fundamental flaws in CAFC's Oracle v. Google decision." As you may recall, that ruling was a complete disaster, overturning a lower court decision that noted that application programming interfaces (APIs) are not copyrightable, because Section 102 of the Copyright Act pretty clearly says that:In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work.But CAFC got super confused, and basically ignored 102 while misunderstanding what an API actually is. After the White House itself got confused, the Supreme Court refused to hear the case. This means that the CAFC ruling stays in place, despite it being at odds with lots of other courts. And this might not be a huge problem, since most copyright cases won't go to CAFC. The only reason the Oracle case went to CAFC was because it started out as a patent case, and CAFC gets all patent appeals, even if the appeal has nothing to do with patents. Except... of course, now there's incentive to toss in a bogus patent complaint along with a questionable "interface copyright" complaint just to get it into CAFC's jurisdiction.
Samuelson's paper is a good read (and we'll get to it), but I'd actually argue it's a bit too tame, and leaves out the really fundamental flaw in the CAFC ruling and in the White House brief: these non-programmers don't realize that an API is not software. Almost all of the mistakes stem from this simple fact. They assume that an API is software. And this is highlighted very clearly in the CAFC ruling where they quote Pam Samuelson out of context and then completely miss what she's actually saying. Here's from that ruling:
Google argues that “[a]fter Sega, developers could no longer hope to protect [software] interfaces by copyright . . . Sega signaled that the only reliable means for protecting the functional requirements for achieving interoperability was by patenting them.” ... (quoting Pamela Samuelson, Are Patents on Interfaces Impeding Interoperability...). And, Google relies heavily on articles written by Professor Pamela Samuelson, who has argued that “it would be best for a commission of computer program experts to draft a new form of intellectual property law for machine-readable programs.” Pamela Samuelson, CONTU Revisited: The Case Against Copyright Protection for Computer Programs in Machine-Readable Form.... Professor Samuelson has more recently argued that “Altai and Sega contributed to the eventual shift away from claims of copyright in program interfaces and toward reliance on patent protection. Patent protection also became more plausible and attractive as the courts became more receptive to software patents.”...But this is just wrong. If you actually look at Samuelson's quotes, she's talking about interfaces not software. Notice in every quote she is not actually talking about the software itself, but "interfaces," "functional requirements" and "program interfaces." The absolute worst is the first quote, where Samuelson writes "interfaces" and CAFC inserts a "[software]" to imply that it's the same thing. It's not. The two paragraphs are not actually at odds. It is entirely reasonable to argue that interfaces shouldn't be protected by copyright (thanks to Section 102) and that software should not be patentable.
Although Google, and the authority on which it relies, seem to suggest that software is or should be entitled to protection only under patent law—not copyright law— several commentators have recently argued the exact opposite. See Technology Quarterly, Stalking Trolls, ECONOMIST, Mar. 8, 2014, http://www.economist. com/news/technology-quarterly/21598321-intellectualproperty- after-being-blamed-stymying-innovationamerica- vague (“[M]any innovators have argued that the electronics and software industries would flourish if companies trying to bring new technology (software innovations included) to market did not have to worry about being sued for infringing thousands of absurd patents at every turn. A perfectly adequate means of protecting and rewarding software developers for their ingenuity has existed for over 300 years. It is called copyright.”); Timothy B. Lee, Will the Supreme Court save us from software patents?, WASH. POST, Feb. 26, 2014, 1:13 PM, http://www.washingtonpost.com/blogs/the-switch/wp/ 2014/02/26/will-the-supreme-court-save-us-from-softwarepatents/ (“If you write a book or a song, you can get copyright protection for it. If you invent a new pill or a better mousetrap, you can get a patent on it. But for the last two decades, software has had the distinction of being potentially eligible for both copyright and patent protection. Critics say that’s a mistake. They argue that the complex and expensive patent system is a terrible fit for the fast-moving software industry. And they argue that patent protection is unnecessary because software innovators already have copyright protection available.”).
It only looks like they're disagreeing if you're confused and you think that an API is the same thing as the software itself. But that's like saying a recipe is the same as a meal or that a dictionary is the same as a novel that uses those words. It's not the same thing.
So while Samuelson's new paper is great, I still feel like she holds back on that key issue, which is so just blatantly wrong, and seems to underline why non-technical people (including the judges in this case) got so confused. Of course software is copyrightable. The argument is over whether or not an API necessary for interoperability is copyrightable. And, as Samuelson's paper notes, it had been widely accepted prior to the CAFC ruling that the answer is no because they're "procedures, processes, systems and methods" under Section 102.
A second flaw was the CAFC’s overbroad view of the extent to which the “structure, sequence and organization” (SSO) of computer programs are protectable by copyright law. During the 1980s, some courts regarded program SSO as having a broad scope of protection under copyright law. But in the last two and a half decades, courts and commentators have recognized that the SSO concept is too imprecise and misleading to be useful in software copyright cases. The SSO concept does not help courts make appropriate distinctions between protectable and unprotectable structural elements of programs. Procedures, processes, systems, and methods of operation, almost by definition, contribute to the SSO of programs that embody them. However, this does not make those elements protectable by copyright. The design of many program structures, including APIs, is inherently functional and aimed at achieving technical goals of efficiency. This disqualifies them as protectable expression under U.S. law.Anyway, the rest of the paper is a good read, and hopefully it means that eventually this issue will get back to the Supreme Court -- and one hopes, at that time, someone can at least get through to them that an API is not software.
Thank you for reading this Techdirt post. With so many things competing for everyone’s attention these days, we really appreciate you giving us your time. We work hard every day to put quality content out there for our community.
Techdirt is one of the few remaining truly independent media outlets. We do not have a giant corporation behind us, and we rely heavily on our community to support us, in an age when advertisers are increasingly uninterested in sponsoring small, independent sites — especially a site like ours that is unwilling to pull punches in its reporting and analysis.
While other websites have resorted to paywalls, registration requirements, and increasingly annoying/intrusive advertising, we have always kept Techdirt open and available to anyone. But in order to continue doing so, we need your support. We offer a variety of ways for our readers to support us, from direct donations to special subscriptions and cool merchandise — and every little bit helps. Thank you.
–The Techdirt Team
Filed Under: api, apis, cafc, copyright, copyrightable subject matter, pam samuelson, software
Companies: google, oracle
Reader Comments
The First Word
“APIs aren't a "computer program"
Another way of putting this is that APIs aren't a "computer program" under the definition in 17 U.S.C §101 -- and since APIs aren't a computer program, they don't qualify for copyright protection **at all**, even before you get to §102(b). You can use APIs when you write a computer program (the implementing code), and APIs have to be expressed in a form that the compiler/interpreter will understand them (the declaring code), but that doesn't make APIs eligible for copyright protection under either §102(a) or §102(b). This is true for the menu commands in Lotus v. Borland, and for the java APIs in Oracle v. Google.Subscribe: RSS
View by: Time | Thread
[ link to this | view in chronology ]
What makes Software so special?
[ link to this | view in chronology ]
Re: What makes Software so special?
[ link to this | view in chronology ]
API IS PART OF CREATIVITY; though technical details, it's still valid for copyright -- IF the creator wants -- because ESSENTIAL to the whole. Much work went into it.
Sheesh.
Where was I? Oh, yes. -- And why the hell didn't Google just pay the pittance asked instead of go through this long expensive process of LOSING? You're always talking expediency, but they really dug in on this FOR NO OBVIOUS REASON. -- Google is arrogant and believes it can grab anything it wants. From headlines in Spain to content of old US books. And believes itself above the law, so if challenged, doesn't do what would be cost-effective, but digs itself a hole.
[ link to this | view in chronology ]
Re: API IS PART OF CREATIVITY; though technical details, it's still valid for copyright -- IF the creator wants -- because ESSENTIAL to the whole. Much work went into it.
[ link to this | view in chronology ]
Re: Re: API IS PART OF CREATIVITY; though technical details, it's still valid for copyright -- IF the creator wants -- because ESSENTIAL to the whole. Much work went into it.
[ link to this | view in chronology ]
Re: API IS PART OF CREATIVITY; though technical details, it's still valid for copyright -- IF the creator wants -- because ESSENTIAL to the whole. Much work went into it.
"In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work."
[ link to this | view in chronology ]
Re:
It's a good thing you're not a lawyer.
[ link to this | view in chronology ]
Re: API IS PART OF CREATIVITY; though technical details, it's still valid for copyright -- IF the creator wants -- because ESSENTIAL to the whole. Much work went into it.
Spewing your usual lies and bullshit which got you reported right away. Of course NOONE here expected a jackass like you to understand the basics of programming so there's that.
[ link to this | view in chronology ]
YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
[ link to this | view in chronology ]
Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
[ link to this | view in chronology ]
Re: Re: YOU
[ link to this | view in chronology ]
Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
[ link to this | view in chronology ]
Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
That depends.
For example, presumably you are reading this in a Web browser. Your Web browser has an address bar, and in that address bar, you will see something like https://www.techdirt.com/articles/.... That is a URL. It is interpreted by the Web browser and used to retrieve the HTML for this Web page (which in turn contains other URLs for things like images).
The interface used for the communication between the Web browser and the Web server is the Hypertext Transfer Protocol (HTTP) and related protocols. These are defined via specifications and are independent from any particular implementation. A copyright on the specification would not extend to an implementation, any more than the copyright on the specification for a bolt would extend to an actual bolt.
Similarly, many programming languages (e.g., C, C++) have clear separation between interface and implementation.
Now, what harms Google here is that Java is not one of those languages. Interface is much more tightly intertwingled with implementation in Java.
> It's not just arbitrary inputs that anyone could come up with in a couple seconds.
That depends entirely on how fast you type. I certainly have defined APIs "in a couple seconds".
[ link to this | view in chronology ]
Re: Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
There have been at least four different implementations of virtual machines conforming to the Java VM specification at least in large part, so I'm not sure that's true.
[ link to this | view in chronology ]
Re: Re: Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
It's not true. I understand how this confusion comes about, but it's confusion.
[ link to this | view in chronology ]
Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
[ link to this | view in chronology ]
Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
An API is not a piece of code - the IMPLEMENTATION of the API is a piece of code. An API is a contract specifiying what actions will be taken if a set of functions (and possibly data structures...) with specified names is called with certain specified parameters. It is completely abstract and divorced from any actual code. The actual code is not the API, it is one possible implementation of that API.
If you can't accept that from Mr Masnick because he is NOT A PROGRAMMER, take it from me - someone who has made his living from real life programming for over 35 years.
[ link to this | view in chronology ]
Re: Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
What people -now- call an API has been called different things through the ages ("interface", "system subroutine library", "library function", "supervisor call", etc) and has always been the recipe, not the cake. That's why you can take, say, FORTRAN code from one system, compile it on another, and it'll generally do what you expect.
[ link to this | view in chronology ]
Re: Re: Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
[ link to this | view in chronology ]
Re: Re: Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
[ link to this | view in chronology ]
Ignorance is bliss.
An API allows *real* programmers to not care about the code it interfaces with. It lets us treat that code as a black box, which is why you can build programs out of discrete chunks of (eg.) Assembly, C/C++, perl, python, etc. As long as my code, written in whichever language, calls that box correctly supplying arguments it expects to be supplied with, it'll work.
Go back to school. It appears you've slept through too many classes. AND LEAVE THE DAMNED CAPSLOCK ALONE, idiot!
[ link to this | view in chronology ]
Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
[ link to this | view in chronology ]
Re: Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.
[ link to this | view in chronology ]
[ link to this | view in chronology ]
"Software interfaces" are not software
Someone unfamiliar with APIs might think, from the term, that software interfaces are interfaces *made out of* software.
Which of course, they're not. They're interfaces *for* software.
It's like the difference between an electrical connector and electricity. Or a plumbing fitting and water.
[ link to this | view in chronology ]
Re: "Software interfaces" are not software
You can't create the software without a defined API. You're either providing one, or using one - there really isn't any other alternative.
If you're the one providing one, by necessity, it's required to allow others to use it, copy it, or otherwise inter-operate with it... It's like saying you made up a new word, and nobody else can use this word in their writing - only you and those people you authorize to use it can.
[ link to this | view in chronology ]
Re: Re: "Software interfaces" are not software
Uh, yes there is. No API's. maybe you are confusing language with api? ever done assembly?
[ link to this | view in chronology ]
Re: Re: Re: "Software interfaces" are not software
Just because the language does not support validation of APIs does not mean that they do not exist. They will be defined in a text file, and/or in the comments. Here is the definition of the assembler level DOS API.
[ link to this | view in chronology ]
Re: Re: Re: Re: "Software interfaces" are not software
the assembler level DOS API.
[ link to this | view in chronology ]
Re: Re: Re: Re: "Software interfaces" are not software
Try this mind experiment. Imagine you are writing your own operating system. All you have is the instruction set. I guess you can call the instruction set an API, but thats a stretch.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: "Software interfaces" are not software
[ link to this | view in chronology ]
Re: maybe you are confusing language with api?
The U.S. legal system is one of economic feudalism. Legally distinguishing between one data set and the next is just a matter of defining boundaries between various fiefdoms. The most screwed up API's out there are the legal processes themselves, which have been periodically forked a few times since Socrates, but haven't been rewritten in any serious way since then.
Seeing the code is more of a discipline than a skill. It transcends the sciences.
Hopefully somebody will AGILE the whole phracking worldwide legal code base into a publicly available repository; github all of the worlds law libraries. Then we can start whittling out the self defeating avarice that our culture holds in such high esteem.
[ link to this | view in chronology ]
Re: "Software interfaces" are not software
Nobody would confuse the arrangement of the control pedals in a car with the mechanism used to link the gas pedal to the engine throttle setting. But mention software and everyone's brains turn to mush.
[ link to this | view in chronology ]
Re: "Software interfaces" are not software
No it's more like the difference between olive oil and baby oil.
[ link to this | view in chronology ]
Re: Re: "Software interfaces" are not software
/s
[ link to this | view in chronology ]
[ link to this | view in chronology ]
There, I think that's probably as good a demonstration of the problem as you'll find anywhere. In one sentence we have managed to conflate non-copyrightable API, copyrightable implementation of API, and some other stuff. Such confusion does wonders for technically uninformed judges in the federal appeals courts.
They may know the law, but it is patent that they do not understand computing.
Simple example trying to get it fairly close to correct, the classic read(2) system call on something that looks similar to a real machine:
int read(int fd, char *buf, int sz); /* here is the API */
/* here is part of a hypothetical implementation */
mov 6(sp), r1
mov 8(sp), r2
mov 10(sp), r3
trap #2
/* the actual stuff takes place in the supervisor call */
I should mention that 3 years of law school normally includes a grand total of zero hours of understanding how to program computers. Some of the more advanced students will get an extra 50% more programming education. When the beaks on the CAFC went through law school, many years ago, they only got about half this much programming experience.
[ link to this | view in chronology ]
Re:
I see what you did there!
[ link to this | view in chronology ]
APIs aren't a "computer program"
[ link to this | view in chronology ]
Re: APIs aren't a "computer program"
In fact, nowhere in Title 17 is it explicitly asserted that "computer programs" are protected; such a conclusion is implicated from §102(a) and their being considered "original works of authorship fixed in any tangible medium of expression". (Also, their copyrightability is attested by limitations being set forth in §117.)
On a side note, the term "software" does not appear anywhere in Title 17 (other than as part of the name of a cited amendment).
It is not particularly relevant whether or not an API satisfies the §101 definition for a "computer program" (or for "software"), as long as it qualifies as an "original work of authorship".
[ link to this | view in chronology ]
[ link to this | view in chronology ]
Re:
[ link to this | view in chronology ]
[ link to this | view in chronology ]
copyright on language
[ link to this | view in chronology ]
Yes, and unless a higher court decides to reverse this decision this is what we're stuck with for the foreseeable future.
And the higher court has already said they're OK with that verdict then told google to "fuck off" and defend fair use.
So that's that.
[ link to this | view in chronology ]
Re:
Pretty sure CAFC decisions aren't binding on other courts. Does this decision have any broader effect other than unofficially influencing other courts?
[ link to this | view in chronology ]
Sorry, but this is not accurate at all and I'm getting tired of people making the mistake.
First, let's the get the obvious out of the way. The "P" in "API" stands for "Programming", which means software.
Second, people are conflating API with ABI and it's ABI (Application Binary Interface) that cannot be covered by copyright.
All APIs are written in software. No, they are not a program, but they work with programs. They are the fundamental structures which allows programmers to code
for the specific operating system the APIs were written for.
This is why Apple, Microsoft, Linux, Java, and now Android, have their own set of APIs, despite all of them having the ability to work on the same system.
By Google's admission, it took the APIs from Java to work with Android. Google did not write the APIs for Android.By doing this, Android and Java are now completely different operating systems using identical APIs.
What this means: if Google wrote their own APIs and the functions of the APIs are identical to those of Java, there is no copyright protection because the result of the API is the ABI.
It's why software has compilers.
API: program aka software aka copyright covered.
ABI: compiled API aka system code aka not covered by copyright.
This isn't even an issue of "but, but ... they're the same!" No, they are not the same and continue making this claim, and we'll eventually see the results of how companies will eventually push to have ABIs covered, and we do not want this.
If you need additional education, I recommend you read this:
http://www.x86-64.org/documentation/abi.pdf
(first example I pulled, but you can read up on any of them from AMD, Intel, or Qualcomm).
[ link to this | view in chronology ]
Re:
[ link to this | view in chronology ]
Re: Re:
But, she seems to think that Java is an operating system, and seems to think that ABIs are not applied within operating systems, so I think there's some confusion here. I believe the case revolved around the way particular JDKs were used, but that's not exactly an OS unless you're referring to a specific implementation of a VM.
I'm sure she means well, but that "explanation" is just as flawed and confusing as anything else written here.
[ link to this | view in chronology ]
Re: Re:
ABIs do not have functions.
The role of an ABI is to translate the compiled API's machine code and submit and receive the values returned by the chip.
The compiler is what translates the API into the register code expected by the ABI, which then processes the machine code.
This is why every language has keywords. Those keywords are then converted to machine code, which tells the ABI how to process the code.
This isn't hard to follow.
What it looks like people are confusing is the fact APIs can be transferred between software, necessitating their "need" and shouldn't be copyright. Or perhaps they're limiting API to "1+1=2", which means this "function" isn't copyright.
Either argument is wrong. While I certainly agree "1+1=2" shouldn't be copyright, this isn't the issue.
A statement isn't a function.
Which is why any programmer can write their own API (and have it covered by copyright, like it or not).
[ link to this | view in chronology ]
Re: Re: Re:
A compiler translates source code into something (machine code, for example). It does not do anything with an API.
This isn't hard to follow.
Apparently it is. ;-)
What it looks like people are confusing is the fact APIs can be transferred between software, necessitating their "need" and shouldn't be copyright.
I don't even know what you mean by transferring an API between software. That isn't how APIs work. You don't transfer it, you implement it. When Google created the Dalvik virtual machine, they didn't "transfer" the Java API, they created new software that conforms to the Java API.
[ link to this | view in chronology ]
Re: Re: Re:
I know what I'm talking about as a professional programmer for 30+ years, who's also had to write and implement api specifications.
[ link to this | view in chronology ]
Re:
[ link to this | view in chronology ]
Re:
[ link to this | view in chronology ]
Re:
https://www.techdirt.com/articles/20150629/09271731488/supreme-court-wont-hear-oracle-v-google- case-leaving-apis-copyrightable-innovation-risk.shtml#c997
[ link to this | view in chronology ]
Re:
An API on the other hand is basically a contract which list a set of functions, with their parameters, data structures and types for those parameters and data structures along with the actions that calling those functions and changing those parameters and data structures result in. Note that there is no programming mentioned there, simply a definition.
I find it ironic that you snidely suggest others need an education when you yourself are so obviously in need of one...
[ link to this | view in chronology ]
Re: Re:
Me too. its just another 'Application' programmer's view. I think you will find a better understanding with system developers over application developers.
[ link to this | view in chronology ]
Re: Re: Re:
I don't think so, just a confused person's perspective. I'm an application programmer and I think she's way off.
[ link to this | view in chronology ]
Re:
API means Application Programming Interface,and Programming doesn't mean software,Programming is action of making programs,and never in any way describes software.Also Java isn't OS,it is Programming Language,and you cannot write anything in "software",software is itself product.And Android only uses SOME implementations of Java SE API.
Your post needs edit,i was staring onto screen for 15 minutes just to understand what you meant and it is also full of technical mistakes.
[ link to this | view in chronology ]
A compiler is software.
Oh, and software should not be afforded copyright protections.
[ link to this | view in chronology ]
Re:
[ link to this | view in chronology ]
Re: Re:
Basic anyone? Not hard just not especially fast because of the interpreted nature of the language. Yeah, I do know that compiled version exist, thanks!
[ link to this | view in chronology ]
Re: Re:
[ link to this | view in chronology ]
Oracle dooming themselves
They will be the reapers of their own demise.
[ link to this | view in chronology ]
Re: Oracle dooming themselves
Why do you say that?
[ link to this | view in chronology ]
Re: Re: Oracle dooming themselves
[ link to this | view in chronology ]
Why God... WHY?!
That's like asking an electrician to rule on whether you should have a heart transplant or an artificial heart.
And yet... we keep this incredibly flawed system in place because... well... we're both stupid and lazy.
[ link to this | view in chronology ]
Recipe
[ link to this | view in chronology ]
Re: Recipe
[ link to this | view in chronology ]
Re: Re: Recipe
A list is not creative so it would not be eligible for copyright. A quick example would literally be a cooking recipe. Not copyrightable.
[ link to this | view in chronology ]
Re: Re: Re: Recipe
[ link to this | view in chronology ]
Re: Re: Recipe
Oh, and this too:
http://www.copyright.gov/fls/fl122.html
[ link to this | view in chronology ]
Re: Re: Recipe
[ link to this | view in chronology ]
Re: Recipe
[ link to this | view in chronology ]
Re: Re: Recipe
[ link to this | view in chronology ]
Letter writing and envelopes could be a type of api i guess
[ link to this | view in chronology ]
[ link to this | view in chronology ]
Re:
Why is that sad? Building upon the work of predecessors is how human innovation has always worked. Early automobile inventors/innovators didn't re-invent the wheel or the chassis - they used existing trolley, buggy and wagon designs.
Rewriting all the code from scratch on every project would be a colossal waste of time and resources, not to mention the huge interconnectivity problems you would end up.
[ link to this | view in chronology ]
Re: Re:
Here's one such statement for a simpleton
Rewriting all the code from scratch on every project would be a colossal waste of time and resources, not to mention the huge interconnectivity problems you would end up.
See how this person makes such broad assumptions.
Rewritting - maybe the code doesn't exist yet. Maybe it need to be completed at the low level for performance.
interconnectivity - let's just call that connectivity. What if it is a new protocol. never been written, an innovation. or, a private protocol, one where we would like to avoid the conventional approach and especially, don't want to use any pre-existing apis.
Shit, with your approach, we would have live horses in our engine compartments.
[ link to this | view in chronology ]
Re: Re: Re:
That said, I also don't believe you would actually do this since it would leave you no time to be an asshole on the internet.
[ link to this | view in chronology ]
Re: Re: Re: Re:
"it looks like a lot of you programmers can't imagine a world without pre-existing code. That's sad."
You are sad.
90% doesn't satisfy the requirements 100% of the time. just like the other sad sacks here, you think a 90% solution will be satisfactory.
and to top it off, you think I am an asshole because I wont settle for a half-baked argument. I am hero and you are sad.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re:
The best Techdirt retorts
"Um, programmer here. Two degrees and 30+ yrs. experience. You are completely wrong."
Marvel at this fool and his holier than thou approach to debate.
And lets look at this fool,
"First, let's the get the obvious out of the way. The "P" in "API" stands for "Programming", which means software" -Violynne
he/She doesn't even know what the P in API stands for, but, that doesn't stop her from writing a short story on the subject, unfortunately, her knowledge is so shallow she misses the mark by a mile and half (probably not even the coveted 90% rule the other fool seems to appreaciate.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re:
Where was the sound logic, and what was being countered? You seem to have only referenced Violynne's post, yet you attack her directly (without adding anything substantial, it should be noted). Which comments are you defending - not the one you replied to evidently.
Before attacking other for poor debate tactics, shouldn't you at least work out which commenters you're attacking and detail some reason why?
"he/She doesn't even know what the P in API stands for"
Last time I checked, the acronym stood for Application Programming Interface (or Program, depending on which reference you use). Which definition are you using?
Oh, look at this, though:
"he/She doesn't even know (anything) but, that doesn't stop her from writing a short story on the subject"
Hmmm... I replaced a couple of words and you made a fantastic description of the average AC who whines about getting their crap hidden around here. That wouldn't be you, by any chance?
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re:
In some circles, people like this are called, "Big Wooden Spoons." They (for whatever reason) get their kicks from "stirring the shit." Whatever, it' a pretty harmless hobby so I'm thankful he's doing this instead of shooting up churches or planting IEDs, or worse. I don't mind humoring (playing? :-) with him.
Hell, in a way, it can even be considered educational.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re:
In most circles, you would be considered the shit stirrer.
Do you see how you replied to a reply with a personal attack? Really, you should be able to recoginize this fact.
simple is as simple does.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Zzzz ...
Looks momentarily. "Yes dear." Goes back to what she was doing. "Only one more month until he's in kindergarten, then I'll not have to put up with him for more than half a day. Come on, September!"
"Mommy, mommy, look at me. Mommy, look at me. Mommy, look at me! Mommy, look at me!"
[ link to this | view in chronology ]
Re: Zzzz ...
You haven't added one relevant idea/comment and yet, you feel entitled to stir it up and then accuse other of trolling.
What a waste of DNA you are.
[ link to this | view in chronology ]
Re: Re: Zzzz ...
[ link to this | view in chronology ]
Re: Re: Re: Zzzz ...
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re:
...you made a fantastic description of the average AC who whines about getting their crap hidden around here. That wouldn't be you, by any chance?
I also made a fantastic description of a pontificating, blowhard that thinks they know what they are talking about because the 'programmed' a dos batch file in 1991.
Like math, there is often more than one correct answer, but like the other simpletons, you assume your interpretation is the only possible 'correct' viewpoint.
[ link to this | view in chronology ]
Zzzz ...
COBOL Programmer's Daily ToDo List:
Write code.
Write code.
Write code.
Write code.
Write code.
Write code.
...
[ link to this | view in chronology ]
Re: Zzzz ...
This is perfect. His first post calls me a shit stirrer and now he piles on the baseless attacks. At techdirt, he's a 'smart-guy.'
I know the truth hurts, it hurts so much you can't believe I'm not OOB.
Man, Im scoring on you guys left and right, maybe try to think first. Plan your argument, make it real. Im rooting for you guys to get your acts together.
[ link to this | view in chronology ]
Re: Re: Zzzz ...
[ link to this | view in chronology ]
Re: Re: Re: Zzzz ...
Really, I am for you guys, but the BS of 'I know everything and you're a troll' is just dumb. Ignorance can be cured. Please, work on it.
[ link to this | view in chronology ]
Re: Re: Re: Zzzz ...
[ link to this | view in chronology ]
Re: Re: Re: Re: Re:
Who said otherwise? I was responding to this comment:
Let me put this a different way. If I want to write a "Hello World" GUI program in C to run under Windows I'm going to use the Windows API. I can write this program in about 2 minutes.
If you want to spend months writing new code to handle displaying the window and the common controls and everything else, go for it. No skin off my back. Still looks like a colossal waste of time to me.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re:
Hey Gwiz, maybe you could help on my current project. Perhaps I am doing to much coding. We have banks of bit shifters sending a serial stream to an array of attinys. the attinys do some fast analysis and send thier output to a larger programmable controller. Based on the input from the sensors (via the attinys), the programmable controller generates output that stabilizes a physical object moving at 100 mph (via linear actuators). additionally a separate controller (an atmega328) generates a ntsc signal that is overlayed on a live video stream. I 've done a lot ntsc and midi signal generation, but I am having problems syncing the two base wave forms to create the ntsc signa;l.
How would you do this with you windows apis?
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re:
Arrogant? Whatever. 90% of programmers are not writing code for applications that are as narrowly tailored as what you are doing. They are writing games, phone apps and Windows programs.
...and I guess its cause you're a windows guy?
Not really. I've programmed in quite a few languages over the years. BASIC, Lisp, Fortran, VB, Turbo Pascal, C/C++ and a bunch of others I don't really remember anymore. I used to code for a living back in the 90's, but now mainly as just a hobby to keep my skills sharp.
These days, if I need to target Windows, I usually compile with Pelles C running on Wine on my Linux laptop (brave, I know).
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re:
For the sort of system you are working on, the APIs exist as 'C' header files, because whether formally designed as a standard, or informally designed as part of the Internals of a system, that is all an API is, the definition of the interface between parts of a software system.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re:
again, you can't imagine a world without apis
sensors -> usually just a voltage level - no api required.
serial -> is just serial. this is assembly, so we said a right bit and read the bit, then the next one.
actuators -> sometimes pwm, create signal based on 'duty cycles' and send it (hi x% low 100-x%)
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re:
If you do not understand this use of interfaces to decouple different parts of a system from implementation details you will implement a system that is a nightmare to modify. This is also the reason an API is defined, decoupling the logical system from the implementation details, and allowing different implementations to be swapped in and out as needed without having to rewrite the whole damm system.
The use of APIs, and encapsulation of details inside subroutines applies as much to assembler as it does to to high level languages. If you do not understand this, you will always have great difficulties with the systems that you implement.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
Well said. On the other hand, not doing that isn't fatal. It's just expensive in the long run. You'll end up reinventing the wheel over and over again.
Think of Linus Torvald's Linux which he explicitly started developing for Intel 80386 processors. When he began he had no intention that it should run on other CPUs. However, once he saw the possibilities and heard the demand from interested users, he split out CPU specific functionality into discrete block(s), so at compile time the code would choose the correct block to be used based on the target CPU. Linux now runs on damned near everything from cellphones through mainframes to supercomputers. Only those hardware specific blocks are different, while the rest of the OS is common to all, no reinventing necessary. The same is true for all the Gnu userland stuff, most of which was originally designed for proprietary Unix boxes. Abstraction allowed it to be used in Linux as well.
That made it easy to scale from 80386 to 80486 to Pentium, yada yada. It also minimized the transition from 32 bit to 64 bit, Intel to AMD, x86 to Motorola (Apple), & etc.
Funny thing happened back then at IBM. They resented losing control over what they gave away (or failed to lock up), and they tried to supplant it with proprietary locked down Microchannel. Seen any Microchannel PCs lately? They didn't play nicely so were abandoned like the cul de sac they deserved to be. I was hoping to get OpenBSD to support Microchannel at the time, but IBM and its Dog In A Manger attitude killed that. Locked down and proprietary gets you walled gardens ruled by tyrants; pretty silly if you want to expand the market for your products.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
Yes, The Appeals Court Got Basically Everything Wrong In Deciding API's Are Covered By Copyright
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
it looks like a lot of you programmers can't imagine a world without pre-existing code. That's sad.
other than confirm the point.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
2) Without APIs and the ability to re-use code written by other people there would be no sophisticated software, GUI interfaces, or programs that work well together. Even back in the days before operating systems, and software library managers, people were providing and using source code libraries to provide common functions.
3) Start with bare metal, and see just how long it takes to get a working system, no cheating by using preloaded boot loaders, or a development system that run on other machines.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
If you tried talking to human beings rather than whine and shit on every thread, you might get to participate in an honest conversation that does this. Alternatively, most honest, intelligent adults will move to a different conversation if the one in front of them isn't to their taste. Not whine repeatedly about how it's not going the way they want it.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
To give the famous quote: "It is better to remain silent and be thought a fool, than to speak and remove all doubt". Whining and attacks peppered with four letter words remove all doubt.
An intelligent person would either correct what they think is wrong, politely ask for clarification, admit they don't understand at all, or move on to a different discussion more at their level. A dumb child will rant and swear at the person who exposed their lack of specific knowledge. We can only use the evidence in front of us to determine which you are.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
He definitely responded to someone answering (his?) rude, pointless and stupid question with "Thanks for the random info".
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
Dudes, get out of your own existance for a moment. it can be eye-opening, but probably not for you guys. It might be too late.
Im not playing your games.
if you guys think your statements have anything to do with the appeals court decision
or
your statements have any bearing on the hypothesis
Man, it looks like a lot of you programmers can't imagine a world without pre-existing code. That's sad.
show me where, otherwise, STFU
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
True, you are clearly playing a game of your own invention.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
Or will just reply with another non-sequiter, one liner?
let's all wait and see!
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
You don't say what of what I wrote is not understood, you don't bother to quote what I wrote so I've no idea you've replied, you fling insults and epithets for what reason I don't know, and you wonder why I'm replying days/weeks later when I finally notice you're questioning points I've offered for you to think about.
I must assume you're twelve or *maybe* thirteen years old and are just trying to avoid doing your math homework. Do it buddy! It helps you to learn how to think. Yes, it feels difficult, but it's good for you. When you grow up, you'll thank your teachers for insisting you apply yourself to the problems we present to you for your consideration.
Do you actually believe we're surprised by ignorance such as you display? Grow up. Take your time. We'll all be richer from your efforts. Have fun! :-)
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
Its not about understanding what your wrote, its just off topic and (like others here), the purpose of your post(s) is to stroke your own ego.
Yes, API's can save time, but they can also waste time/resources because -- esp at low levels, they could involve more overhead than doing it yourself.
Now for your position (and others), you HAVE to use api's for x reason
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
Now for your position (and others), you HAVE to use api's for x reason, I say stfu 2 u. Go back to your visual studio and continue your worship of M$ or whomever you worship.
Don't confuse design patterns with API's. I want you all to be the best developers ever, just watch your arrogance, it will stunt your growth.
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
I was wondering. No profanity, only one personal attack... huh?
I say stfu 2 u. Go back to your visual studio and continue your worship of M$ or whomever you worship.
Ah, that's more like it.
just watch your arrogance
I love it! Thank you for the advice!
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
[ link to this | view in chronology ]
And?
But you'll all still line up and obediently vote for Hillary anyway, so what's the point in even kicking up a fuss here?
[ link to this | view in chronology ]
Re: And?
If you're under the impression that all TechDirt readers vote Democrat, you're mistaken.
[ link to this | view in chronology ]
Re: Re: And?
"If you're under the impression that all TechDirt readers are American, you're mistaken."
I love it when people try dragging partisan American politics in here, and then attack people who don't even reside on their continent of being on the wrong "team". It's a good sign of how intelligent and thoughtful that person is - if they're too stupid to realise that America is not the world, and that the internet allows everyone an equal say, their opinion is probably ignorant enough to be safely discounted on whatever other subject they decide to weigh in on.
[ link to this | view in chronology ]
[ link to this | view in chronology ]
Re:
That really depends on the API. There are many APIs that are large and complicated, and I doubt even a good programmer would describe the implementation as "not that hard".
[ link to this | view in chronology ]