TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

A Brief, Opinionated History of the API [pdf]

103 pointsby Adrockover 10 years ago

8 comments

fslothover 10 years ago
Thank you for referencing this outstanding historical presentation. Perhaps one day we shall get out of this strange amnesia software engineering seems to have as a field (or pop culture as Alan Kay poignantly put it). I find it odd I discover the good stuff only when I have practiced programming over ten years while I consider myself a fairly voracious autodidact.<p>Why is it that we are offered snake oil like UML, RUP, GoF patterns and other cargo cult or just otherwise trite nonsense when these basic ingredients of proper programming - simplicity, understandability, minimization of labour, difficulty of reusability - seem to come as great surprise and revelation only after working quite some time.<p>I find the reusability fallacy particularly offensive as a trumpeted design paradigm since it&#x27;s so hard to get it right, especially since it is often sold as a project feature based on the hypothesis of cost savings. If one achieves practical reusability in ones components, that is a thing to be celebrated, truly. But you cannot say, we shall write this generic domain specific widget _ and make it reusable _ without the understading that this will probably need a lot more design and research than just implementing the domain widget as a stand alone module.
评论 #8491874 未加载
jameshartover 10 years ago
Wasn&#x27;t sure I&#x27;d want to read an opinionated history til I realized this was by Josh Bloch - an opinion worth paying attention to. As one useful reference point, he was responsible for the Java Collections API.
评论 #8491634 未加载
评论 #8493462 未加载
dangover 10 years ago
This is so good. Among many things I didn&#x27;t know: the first stored program computer (EDSAC) was programmed in assembly language. So for programs that were actually executed, assembler predates binary.<p>He also says that they&#x27;d implemented higher-order functions on that same machine by 1952. That&#x27;s astonishing. Can anybody tell us what form they took?
评论 #8493698 未加载
michaelvkpdxover 10 years ago
This is a fantastic presentation, and if I were developing a history of software class, I&#x27;d reuse this presentation for a unit on API&#x27;s and libraries, given the author&#x27;s permission. I&#x27;ve never seen such a concise and informative presentation on the history of any aspect of software development (languages, methodologies, human interface, etc...)<p>Really, really well done. I still think that Oracle has a pretty strong legal leg to stand on, unfortunately. And they have the legal team to pretty much guarantee victory. API specs deserve the same copyright protections we provide for other forms of intellectual property.<p>The bigger problem that needs to be confronted is the ridiculous scope and corporate bias of US copyright law, which is the ultimate root of the maladies that strangle creativity and punish artists and working engineers in this country. I believe that API specs deserve the same legal protections as song lyrics, plot devices, and poetry. But I think those legal protections, buttressed by lawyers from Disney and Oracle, have gotten out of control and now penalize the people they were supposed to protect.
评论 #8494041 未加载
penguindevover 10 years ago
Man, if you thought there were too many lawyers in programming already... just wait until we have retroactive protection of (corporate owned) APIs (and instruction sets?). Talk about a &#x27;submarine&#x27; attack.
throwawaykf05over 10 years ago
Regarding the legal digression:<p>1. &quot;We&#x27;ve always had the right to re-implement interfaces&quot; is a red herring. At one point one could have as well said &quot;we&#x27;ve always had a right to own slaves.&quot; Also, re-implementing APIs may be valuable, but there may be even more value in re-inventing APIs instead, many of the reasons for which are mentioned in TFA itself. Case in point, being locked out of Java, Microsoft went ahead and built (by most accounts) a superior programming ecosystem, including a better API.<p>2. Not a lawyer, but from my limited understanding: Copyright law as currently defined is, IMO, not a good protection mechanism for code, resulting in cases like this. Whatever arguments you could make to exempt APIs from protection applies equally to code. In general copyright cannot protect anything &quot;functional&quot; in nature, but all code is functional! For instance, the exemption from 102(b) highlighted in TFA for &quot;methods of operation&quot; applies equally well to code. What is code if not a method of operation of the hardware it runs on?<p>Copyright only applies to the creative aspect of anything, including written code, and as such APIs can have as much (or more) creative input as any implementation. In fact, often (and hinted at in TFA), if the API, or indeed any spec, is defined well enough, it&#x27;s implementation becomes straightforward and requires little inherent creativity! Yet that code automatically qualifies for copyright.<p>(Note that copyright will only protect the expression of an idea, not the idea itself. So when discussing copyrighting of APIs, remember that we are not discussing protecting, say, the concept of opening a file, but protecting the specific expression &quot;new File(fileName)&quot; or &quot;File.open(fileName)&quot; or &quot;open(fname, &#x27;r&#x27;)&quot;. While this is a simplistic example, think of how this permeates the rest of the APIs.)<p>3. The case law for exemptions for interoperability in interfaces (Sega etc,) is, as far as I can tell, for <i>systems</i> to interoperate with each other. APIs on the other hand, are mainly for <i>humans</i> to communicate with each other when building systems that interoperate. Bloch even calls it out multiple times when he harps on the importance of documentation. As such, APIs are primarily a means of expression between humans - from those who provide the interface, to those who use it. So from a copyright perspective, I don&#x27;t see how binary interoperability between systems, which is purely functional, can compare to textual expression between humans.<p>In my mind, points 2 - 3 mean that Judge Alsup got it wrong and the Federal Circuit got it right. If this is something to be fixed, I&#x27;d say the real problem is the use of copyright law to protect code.
评论 #8494014 未加载
评论 #8493171 未加载
评论 #8493049 未加载
ExpiredLinkover 10 years ago
There must be a presentation to this?
justifierover 10 years ago
i found the decision : <a href="http://www.cafc.uscourts.gov/images/stories/opinions-orders/13-1021.Opinion.5-7-2014.1.PDF" rel="nofollow">http:&#x2F;&#x2F;www.cafc.uscourts.gov&#x2F;images&#x2F;stories&#x2F;opinions-orders&#x2F;...</a><p>linked from an eff.org article : <a href="https://www.eff.org/deeplinks/2014/05/dangerous-ruling-oracle-v-google-federal-circuit-reverses-sensible-lower-court" rel="nofollow">https:&#x2F;&#x2F;www.eff.org&#x2F;deeplinks&#x2F;2014&#x2F;05&#x2F;dangerous-ruling-oracl...</a><p>i read the slides, then the decision, and then i got confused.. so i read alsup&#x27;s ruling: <a href="https://www.scribd.com/doc/95480891/Oracle-v-Google-API-Order" rel="nofollow">https:&#x2F;&#x2F;www.scribd.com&#x2F;doc&#x2F;95480891&#x2F;Oracle-v-Google-API-Orde...</a><p>and now i&#x27;m really confused<p>alsup&#x27;s ruling ::<p>&gt; This order does not hold that Java API packages are free for all to use without license.It does not hold that the structure, sequence and organization of all computer programs may be stolen. Rather, it holds on the specific facts of this case, the particular elements replicated by Google were free for all to use under the Copyright Act. Therefore, Oracle’s claim based on Google’s copying of the 37 API packages, including their structure, sequence and organization is DISMISSED<p>which seems to contradict this from the eff.org article:<p>&gt;In May 2012, Judge William Alsup of the Northern District of California ruled that APIs are not subject to copyright<p>it seems instead that alsup is saying that current understandings of code copyright stand but goog&#x27;s use fell under fair use<p>federal circuit&#x27;s decision ::<p>&gt;Ultimately, we conclude that this is not a case in which the record contains sufficient factual findings upon which we could base a de novo assessment of Google’s affirmative defense of fair use.<p>which reinforces that this is moreso an issue of fair use :<p>&gt; Section 107 contains a list of the various purposes for which the reproduction of a particular work may be considered fair, such as criticism, comment, news reporting, teaching, scholarship, and research. Section 107 also sets out four factors to be considered in determining whether or not a particular use is fair.<p>The purpose and character of the use, including whether such use is of commercial nature or is for nonprofit educational purposes The nature of the copyrighted work The amount and substantiality of the portion used in relation to the copyrighted work as a whole The effect of the use upon the potential market for, or value of, the copyrighted work &gt;&gt; <a href="http://www.copyright.gov/fls/fl102.html" rel="nofollow">http:&#x2F;&#x2F;www.copyright.gov&#x2F;fls&#x2F;fl102.html</a><p>fair use is only applicable on copyrighted material, if something were uncopyrightable then examining it&#x27;s derivatives for fair use would be unnecessary, but here alsup is using fair use to excuse goog&#x27;s use of the java api, implying the api is subject to copyright<p>so regardless of what an api is or whomever thinks whatever thae think an api is is moot to this legal hearing<p>to argue this decision in favor of your opinion you&#x27;d have to focus on the referenced snippets and analyse them for fair use, because that is what alsup ruled it<p>if the code oversteps fair use then you have to agree with the decision<p>at this point, in all honesty, this whole thing seems so beyond me..<p>just makes me wonder why goog wrote android in java<p>why would anyone write anything in java?<p>is that oracle&#x27;s goal?
评论 #8492109 未加载