Hacker News new | ask | show | jobs
by iheartmemcache 3734 days ago
I was thoroughly impressed with the judge who presided over the last ruling -- IIRC he went so far as to learn at least the basics of Java to the point where I remember being impressed by the insight of the questions he posed. There are subsets of law one can specialize in ranging from medical malpractice to obscure patent litigation, but as far as I know there are no factors linking a presiding judge to a specific specialty. I really think other judges should follow the example he set and at least develop a core understanding in a similar fashion.

Edit: http://www.cand.uscourts.gov/wha/oraclevgoogle the original Alsup opinion

http://regmedia.co.uk/2014/05/09/oracle_google_appeal_opinio... The appeal opinion -- which, as it stands, rules that programming APIs are in fact copyrightable.

(Also, look at the list of counsel -- heavy hitters, damn.)

  Oracle appeals from the portion of the final judgment entered against it, and Google 
  cross-appeals from the portion of that same judgment entered in favor of Oracle as to
  the rangeCheck code and eight decompiled files. Because we conclude that the declaring
  code and the structure, sequence, and organization of the API packages are entitled
  to copyright protection, we reverse the district court’s copyrightability determination
  with instructions to reinstate the jury’s infringement finding as to the 37 Java
  packages. Because the jury deadlocked on fair use, we remand for further consideration
  of Google’s fair use defense in light of this decision.
3 comments

"I really think other judges should follow the example he set and at least develop a core understanding in a similar fashion."

Many judges probably do, every day, in lots of technically specialized fields, and we're just not paying attention because we're not experts in those fields, either.

Shouldn't assume our field is so much harder for judges to understand than medical, scientific, and other specialized fields judges need to weigh in on.

Not more difficult per se, but more obfuscated. So much brands, paradigms, domain specific metalanguage. Medicine, physics have some kind of shared, time-tested foundations.
>Medicine, physics have some kind of shared, time-tested foundations.

So do programming languages.

You could argue programming really took off in the 80s, and look at the plethora of languages then that are obsolete. Medicine and physics are more than 100 years old; programming is very new in the grand scheme of things and rapidly changing as it "finds itself." It's not very convincing to assert it has "time-tested foundations."
You mean the various kinds of semantics ? in that case yes, otherwise if it's for framework of the day, stack of the day it's hard to reason and compare anything.
Judge Alsup has a long history of handling technical cases. He's no dummy.
I'm aware. I was making a larger critique w/r/t the justice system especially concerning higher level court decisions and the justices (more likely, their clerks) who draft opinions.
Was pretty sure you were aware.

Things could be worse. This could be decided in East Texas, for instance. That well-known hotbed of technical innovation ... /s

On software like JDK, my feeling (without thinking too much) is that the API is actually the most valuable part and the one that requires true expertise to craft.
When I think of API I think of "here is your interface eBNF"

    (interface)* = (class)* 
    (class) = (method_stub)* | (ivar)* | (class_var)*  |(property}* | {delegate}* | {some_LINQy_constructs}* | {other_stuff_from_NETCLR3.5_onwards}* | ... 
    . 
"Alright, now implement IEnumerator OnNext(); bool MoveNext(); IDisposible Dispose();"[1] and your data now has the trait/type-class/whatever of IEnumerable! That's all an API is really -- method signatures and code contracts between the requester/requestee. The real gold isn't in that, but in the implementation details of the JVM (and the greybeards who know the -Xxs256 -Xmm10230 blah blah, I suppose.)

I.e. Azul ZING(tm) and the lot of insanely high-performance and/or hard-real-time-in-the-QNX-sense is priced at... a lot. In finance we used to use it because operations could be bounded deterministically. There was enough value in that that CTOs cut 7 figure checks to run that specific API implementation rather than use the Sun/Oracle JVM.

[1] Yep that's probably gobblydygook. My C# and Java meld together, I always confuse IEnumerable,IEnumerator,IDispose,and all the damn duals smash together in my mind, even worse now with Rx one more tensor rank was added (Time). Gods of the CoreCLR, smite me not. Also I'm not in PL design, forgive my bad BNF.

Why do you think so?

The java.* API is not even that good (it is very verbose to achieve basic things). The only reason to re-implement it is compatibility with existing, third-party software using that API.

If you would come with API, that would be technically better, but doing the same thing, do you think that everyone would rewrite all their libraries, frameworks and apps? No way.

That's the point. The API isn't valuable because of the creative expression (the thing copyright protects), it's valuable because its functionality (the thing copyright doesn't protect) is necessary for compatibility.

Oracle apparently bamboozled the Federal Circuit into deciding that something called the "structure, sequence and organization" of the API should be copyrightable. But of course nobody cares about that part -- the order doesn't matter. You can sort the API into alphabetical order and strip out all the comments and it would make no real difference to anybody. But here is Oracle claiming that the copyrightable part is worth billions of dollars.

If copying the APIs is only valuable for compatibility, why did Google do it? Android isn't compatible with any Java apps.
It's compatible with many Java libraries and IDEs etc. It isn't compatible with Java apps because the UI framework has to be different on a phone. Porting Java apps thereby requires changing only a minority of things rather than everything.

It's like asking why you can write C programs on Windows even though it doesn't provide an X server.

Libraries, though.
Java Map interface specifies: V get(Object key) I was horrified when I realized you could pass any object to get()
interface{}