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.?…

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.?).

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.

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.

Filed Under: , , , , , ,
Companies: google, oracle

Rate this comment as insightful
Rate this comment as funny
You have rated this comment as insightful
You have rated this comment as funny
Flag this comment as abusive/trolling/spam
You have flagged this comment
The first word has already been claimed
The last word has already been claimed
Insightful Lightbulb icon Funny Laughing icon Abusive/trolling/spam Flag icon Insightful badge Lightbulb icon Funny badge Laughing icon Comments icon

Comments on “Yes, The Appeals Court Got Basically Everything Wrong In Deciding API's Are Covered By Copyright”

Subscribe: RSS Leave a comment
131 Comments
Anonymous Coward says:

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.

First, is a RE-HASH of this all you’ve got to fill space until 5PM your time when Ho has some nutball trivia? — Still upset that Google got taken down a peg, eh? Hoping won’t on next level, eh? You identify totally with Google’s interest, ever notice that, Google-boy?

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.

Anonymous Coward says:

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.

Here, try reading this again. Slowly. Don’t strain yourself.

“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.”

techflaws (profile) says:

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.

Where was I?

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.

Anonymous Coward says:

Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.

While the English, or other languages are used to write stories, they are not the stories; and an API is a language and not the story (implementation). Like any language controlling its elements destroy its usefulness to society.

Mark Murphy (profile) says:

Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.

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”.

nasch (profile) says:

Re: Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.

Now, what harms Google here is that Java is not one of those languages. Interface is much more tightly intertwingled with implementation in Java.

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.

Anonymous Coward says:

Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.

Rubbish. Give me an API spec and I can code it in C, C++, various assemblers. I can probably write a JNI implementation, definitely a Python implementation (through an extension module), though the latter 2 would be better used to access the API rather than implement it.

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.

z! (profile) says:

Re: Re: YOU "non-programmer" don't grasp what an API is! It's INTRINSIC AND INSEPARABLE FROM OTHER CODE.

Or from me, I wrote my first real program (not “hello world”) in 1975.

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.

tqk (profile) says:

Re: Ignorance is bliss.

YOU “non-programmer” don’t grasp what an API is! It’s INTRINSIC AND INSEPARABLE FROM OTHER CODE.

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!

OldMugwump (profile) says:

"Software interfaces" are not software

I wonder if the whole confusion stems from the term “software interfaces”.

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.

Anonymous Coward says:

Re: "Software interfaces" are not software

It’s a bit like saying each of the individual words that makes up a book is copyrightable.

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.

Anonymous Coward says:

Re: Re: Re: "Software interfaces" are not software

No API’s. maybe you are confusing language with api? ever done assembly?

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.

Anonymous Coward says:

Re: Re: Re:2 "Software interfaces" are not software

Ah yes, DOS. I see. You can not imagine not having an operating system.

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.

Anonymous Coward says:

Re: Re: Re:3 "Software interfaces" are not software

If you are writing your own operating the first thing you do is define, or borrow, and API, as it is the means by which your test programs, and working programs will communicate with the operating system. An API defines the boundary between two pieces of software, and can and should be defined before either piece exists. It is the technical drawing, and not the machined part.

Anonymous Coward says:

Re: Re: Re: maybe you are confusing language with api?

You can move up and down the abstraction layers all you want. The fact remains, that one block of intellectual property is stacked on the other, even at the voltage level, since interpretation of those voltages are dependent on patented mechanisms. Even the hardware is just data in molecular form.

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.

TKnarr (profile) says:

Re: "Software interfaces" are not software

I dunno about that. If I say “automobile control interface”, does anyone think I’m talking about an interface made out of automobile controls? No, people are more likely to think I’m talking about an interface to control automobiles.

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.

Tanner Andrews (profile) says:

What people -now- call an API has been called different things through the ages (“interface”, “system subroutine library”, “library function”, “supervisor call”, etc)

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.

Michael Barclay (profile) says:

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.

saulgoode (profile) says:

Re: APIs aren't a "computer program"

The definitions in Section 101 are just that, definitions. Defining what should be considered a “computer program” says nothing with respect to the actual jurisprudence of copyright presented in subsequent sections.

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”.

Anonymous Coward says:

“Yes, The Appeals Court Got Basically Everything Wrong In Deciding API’s Are Covered By Copyright”
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.

Violynne (profile) says:

…these non-programmers don’t realize that an API is not software.
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).

PaulT (profile) says:

Re: Re: Re:

They’re also far from unique to operating systems as Violynne seems to suggest, while ABIs may be part of operating systems as we as chipset instruction sets.

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.

Violynne (profile) says:

Re: Re: Re:

The conflation between ABI and API is persistent.

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).

nasch (profile) says:

Re: Re: Re: Re:

The compiler is what translates the API into the register code expected by the ABI, which then processes the machine code.

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.

Anonymous Coward says:

Re: Re: Re: Re:

Sorry, but you are wrong. An API consists of two parts, the specification and the implementation, This case is talking about the specification. Only the implementation can be copyrighted, the specification can not, unless you are talking about a particular document.

I know what I’m talking about as a professional programmer for 30+ years, who’s also had to write and implement api specifications.

Anonymous Coward says:

Re: Re:

Violynne, no, the ABI is not the result of the API. The two are related only in that both are computer science concepts. An ABI specifies how any generic piece of software can invoke any other generic piece of software in a paritcular environment. For instance, how parameters are passed (in registers, on the stack…), if on the stack, what order are the parameters pushed (left to right or vice-versa), who cleans up the stack after a function call and so on… This applies, ulitmately to ALL APIs, not one in particular. Many APIs are governed by one ABI in a particular environment (which means, roughly, Operating System on a particular processor/processor family).

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…

ThatGuy (profile) says:

Re: Re:

Umm,actually…

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.

Gwiz (profile) says:

Re: Re:

Man, it looks like a lot of you programmers can’t imagine a world without pre-existing code. That’s sad.

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.

Anonymous Coward says:

Re: Re: Re:

But if they understood how things really work, we wouldn’t have these simple-minded statements that don’t account for vast range of possibilities.

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.

jackn says:

Re: Re: Re:2 Re:

Thanks for giving me the permission to have my own beliefs. Your reply confirms your general bias and proves my original point.

“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.

Anonymous Coward says:

Re: Re: Re:4 Re:

Take a wild ride at techdirt. See sound logic countered by a cast of ignorant simpletons.

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.

PaulT (profile) says:

Re: Re: Re:5 Re:

“See sound logic countered”

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?

tqk (profile) says:

Re: Re: Re:6 Re:

I replaced a couple of words and you made a fantastic description of the average AC who whines about getting their crap hidden

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.

tqk (profile) says:

Re: Re: Re:8 Zzzz ...

Translation: “Mommy, mommy, look at me. Mommy, look at me. Mommy, look at me! Mommy, look at me!”

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!”

Anonymous Coward says:

Re: Re: Re:6 Re:

“he/She doesn’t even know (anything) but, that doesn’t stop her from writing a short story on the subject”

…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.

Anonymous Coward says:

Re: Re: Re:8 Zzzz ...

hail again to TPK, the ignorant shit stirrer.

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.

Gwiz (profile) says:

Re: Re: Re:3 Re:

90% doesn’t satisfy the requirements 100% of the time.

Who said otherwise? I was responding to this comment:

Man, it looks like a lot of you programmers can’t imagine a world without pre-existing code. That’s sad.

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.

Anonymous Coward says:

Re: Re: Re:4 Re:

its still pretty arrogant to assume your patterns will cover 90% of anything – and I guess its cause you’re a windows guy? I am sure you don’t have the kind of performance requirements that I have.

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?

Gwiz (profile) says:

Re: Re: Re:5 Re:

its still pretty arrogant to assume your patterns will cover 90% of anything

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).

Anonymous Coward says:

Re: Re: Re:5 Re:

When dealing with complex and time critical systems, a clean design architecture, and interfaces between sensing, calculation and actuator is required, that is you need to design the APIs between the functionally distinct parts of the system. Failure to design the necessary APIs is what leads to spaghetti code, which may save a few bytes of memory, and run a few cycles faster, but which falls apart if any part of the system is changed, like switching out actuators. Your system is replete with APIs, like sensors, serial coms, and actuators etc.
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.

Anonymous Coward says:

Re: Re: Re:6 Re:

API’s wtf are you talking about?

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%)

Anonymous Coward says:

Re: Re: Re:7 Re:

All ‘C’ header files are a form of API. That is they define an interface that is used by both the implementation of functions, and callers of those functions. In the case of sensors, define a function (or macro) to obtain the reading and convert it to meaningful units. That way you have the basis for a consistent API for reading different types of sensor, and the ability to switch sensors and replace the implementation of one routine, rather than having to go in and modify the control algorithm because different sensors return different volts for the same temperature. It also means you could use sensors that return digital data over one of the serial buses, and again without impacting the code that is dependent on the temperature value. Similar for the actuators, implement routines that provide a distance or angle interface, rather than getting the control algorithm to work directly with the actuator.
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.

tqk (profile) says:

Re: Re: Re:8 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.

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.

Anonymous Coward says:

Re: Re: Re:13 Re:

1) see my comment above, it describes why you should define your own APIs when writing a system to run on naked hardware.
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.

PaulT (profile) says:

Re: Re: Re:12 Re:

It’s called a conversation. Occasionally, a few people talk about a subject, and the conversation will go on tangents that have nothing to do with the main focus, but still follow a natural progression. That’s part of the reason there’s multiple threads to every discussion here

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.

PaulT (profile) says:

Re: Re: Re:14 Re:

Apparently we do, especially if you’re the “jackn” guy who responded to a thoroughly argued explanation of the subject at hand with “what the fuck are you idiots going on about?”, and/or the AC who’s been repeatedly attacking people. It’s unclear, thanks to your refusal to use an identifiable moniker to help people keep track of who’s saying what, but that’s the danger with allowing anonymous free speech.

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.

nasch (profile) says:

Re: Re: Re:15 Re:

especially if you’re the “jackn” guy who responded to a thoroughly argued explanation of the subject at hand with “what the fuck are you idiots going on about?”, and/or the AC who’s been repeatedly attacking people.

He definitely responded to someone answering (his?) rude, pointless and stupid question with “Thanks for the random info”.

jackn says:

Re: Re: Re:16 Re:

I didn’t realize nasch is an idiot too.

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

tqk (profile) says:

Re: Re: Re:10 Re:

what the fuck are you idiots going on about? do you have any purpose? Are you just random generators?

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! 🙂

jackn says:

Re: Re: Re:11 Re:

Nice, Techdirt all the way!

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

Anonymous Coward says:

Re: Re: Re:12 Re:

message seems to have been truncated….

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.

PaulT (profile) says:

Re: Re: And?

Slight edit:

“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.

Add Your Comment

Your email address will not be published.

Have a Techdirt Account? Sign in now. Want one? Register here

Comment Options:

Make this the or (get credits or sign in to see balance) what's this?

What's this?

Techdirt community members with Techdirt Credits can spotlight a comment as either the "First Word" or "Last Word" on a particular comment thread. Credits can be purchased at the Techdirt Insider Shop »

Follow Techdirt

Techdirt Daily Newsletter

Techdirt Deals
Techdirt Insider Discord
The latest chatter on the Techdirt Insider Discord channel...
Loading...