en.swpat.org is a wiki.   You can edit it.   May contain statements End Software Patents does not endorse.

November 2014: About Microsoft’s patent licence for .NET core

SitemapCountriesWhy abolish?Law proposalsStudiesCase lawPatent office case lawLawsuits


Editing Oracle v. Google (2010, USA)

From en.swpat.org
Jump to: navigation, search

Warning: You are not logged in.

Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 37: Line 37:
  
 
::: ''Any derivative work of the OpenJDK needs to be distributed under GPLv2. Harmony however is published under the Apache License, so it cannot be a derivative work.''
 
::: ''Any derivative work of the OpenJDK needs to be distributed under GPLv2. Harmony however is published under the Apache License, so it cannot be a derivative work.''
 
::: ''How can protect one set of open source software under the GPLv2, while preventing another independent piece of software under the Apache licence v2 which has stronger patent protections from doing the same. Wouldn't the same rules apply in both cases --- Oracle is bound by its own patents if they prevent Google from using Oracle's patents. Under the SCO Ruling did they not make the case that SCO could not distribute Caldera Linux under their own protection racket because by doing so they violate the GPLv2''
 
  
 
=== Would switching to IcedTea or OpenJDK make Android safe from Oracle? ===
 
=== Would switching to IcedTea or OpenJDK make Android safe from Oracle? ===
Line 179: Line 177:
  
 
This sounds exactly like the mechanism specified in CORBA Security (see above), and for similar reasons.
 
This sounds exactly like the mechanism specified in CORBA Security (see above), and for similar reasons.
 
This sounds like using protected memory in a multitasking OS, dating back to System/360 in 1964.  An execution stack is given a key (or multiple keys) that must match the data location (disk, RAM or whatever) being accessed.
 
  
 
=== 5,966,702 / 1997 ===
 
=== 5,966,702 / 1997 ===
Line 212: Line 208:
  
 
Obvious avenues to check: shared object libraries and symbol tables in OSes such as IBM S/38 and Multics (?); Symbolics and similar large Lisp/CLOS systems.
 
Obvious avenues to check: shared object libraries and symbol tables in OSes such as IBM S/38 and Multics (?); Symbolics and similar large Lisp/CLOS systems.
 
Also Python (1991).  Python's developer (Guido van Rossum) is a Google employee.
 
 
Excuse me, but isn't this a perfectly abstract description of a simple dictionary compression? Haven't we had this for decades? And applying a simple dict-based compression to a particular structured file format by exploiting its structure *should* come as obvious to any programmer.
 
  
 
=== 7,426,720 / 2003 ===
 
=== 7,426,720 / 2003 ===
Line 244: Line 236:
  
 
Same deal with Apache and it's worker processes, the configuration file ('source') is only read by the master process, the worker processes are forked in a state where they are immediately ready to handle requests and don't have to each reread the configuration. And the worker's memory state is copy-on-write wrt. the master process.
 
Same deal with Apache and it's worker processes, the configuration file ('source') is only read by the master process, the worker processes are forked in a state where they are immediately ready to handle requests and don't have to each reread the configuration. And the worker's memory state is copy-on-write wrt. the master process.
 
This isn't just fork(), but fork() with file descriptor passing thereafter to distribute requests.  Poll()/select() serve also on Unix variants to recognize not just read and write but also "accept" for new connections, which are then passed to clones of the master process via file descriptor passing.  This mechanism was present in Unix SVR3 and thereafter in the STREAMS subsystem, and in a different form in BSD.  Clone processes can be created all at once via fork() along with the master process which owns a "well-known" port, and it selects a clone to pass a connection to as they arrive.  All wait in poll/select loops on IPC connections (e.g., pipe/FIFO or socket) to the master. 
 
 
This was first done privately on Linux before Alan Cox replaced Fred van Kempen's original TCP/IP stack with a BSD-compatible stack, but the method has been available in Linux publicly since about a year after that, when Alan finally implemented file descriptor passing using the BSD API.  I don't recall the dates, but a prior STREAMS-style version of FD passing was used to get httpd-1.4 (predecessor to Apache) working in multi-process mode on Linux.  It was somewhere in the '92-96 time frame.  Cf. [http://email.gcom.com/home/linux/lis/ Lis' (Linux STREAMS)] later implementation of FD passing, by the same author.  Both were original code, working only from the SYSV reference manuals with no access to SYSV source code.
 
  
 
Reads to me like a description of old-school UNIX fork with copy-on-write memory mapping. Reference: S. Leffler, M. McKusick, M. Karels, J. Quarterman: The Design and Implementation of the 4.3BSD UNIX Operating System, Addison-Wesley, January 1989, ISBN 0-201-06196-1
 
Reads to me like a description of old-school UNIX fork with copy-on-write memory mapping. Reference: S. Leffler, M. McKusick, M. Karels, J. Quarterman: The Design and Implementation of the 4.3BSD UNIX Operating System, Addison-Wesley, January 1989, ISBN 0-201-06196-1
Line 272: Line 260:
 
</pre>
 
</pre>
  
This is simply dynamic shared library loading and usage, also well known and understood in the science of informatics since the early 80s. For evidence you could also look at Linux Kernel version 2.0 published 1996.
+
This is simply dynamic shared library loading and usage, also well known an understood in the science of informatics since the early 80s. For evidence you could also look at Linux Kernel version 2.0 published 1996.
 
+
ELF - executable and linkage format - does this.  ELF was originally implemented for Unix SYSV and adapted to Linux by Eric Youngdale to replace the classic a.out binary format as the default binary format for Linux [http://www.linuxjournal.com/article/1059 (Linux Journal #12 April 1995)].
+
 
+
::As a point of info, the patent claim specifically describes dynamic linking ''during'' execution, which is lazy linking. Not all ELF implementations support this or use it as default, but earlier implementations of dynamic linking on the ''a.out'' binary format usually performed lazy linking by default. This is illustrated via the binder() function in [http://cvsweb.netbsd.org/bsdweb.cgi/src/libexec/ld.aout_so/Attic/rtld.c?rev=1.1&content-type=text/x-cvsweb-markup&only_with_tag=MAIN rtld.c] from NetBSD and FreeBSD in 1993. Arguably however, Sun itself had art of its own prior to this (in SunOS 4), so something even earlier may need to be found.
+
  
 
''Looks like a p-code interpreter http://en.wikipedia.org/wiki/P-code_machine to me''
 
''Looks like a p-code interpreter http://en.wikipedia.org/wiki/P-code_machine to me''
  
Note: The author of this patent James Gosling, who is not in favor of his patent being used in this manner anyway, might be worth asking for help in finding prior art. (Gosling is now a Google employee.)
+
Note: The author of this patent James Gosling, who is not in favor of his patent being used in this manner anyway, might be worth asking for help in finding prior art.
  
 
=== 6,910,205 / 2002 ===
 
=== 6,910,205 / 2002 ===
Line 319: Line 303:
  
 
* [http://portal.acm.org/ft_gateway.cfm?id=857077&type=pdf A Brief History of Just-In-Time] provides a description with all just-in-time implementations so far.
 
* [http://portal.acm.org/ft_gateway.cfm?id=857077&type=pdf A Brief History of Just-In-Time] provides a description with all just-in-time implementations so far.
* [http://en.wikipedia.org/wiki/Just-in-time_compilation#History Wikipedia] identifies McCarthy's LISP (1960) as the first just-in-time compiler, using the above paper as a source.
 
  
 
=== 6,061,520 / 1998 ===
 
=== 6,061,520 / 1998 ===
Line 344: Line 327:
  
 
Ok, this one sounds like crap. It's so specialised, that it probably can't at all be rebuilt by anyone and google could have never used this if sun hadn't open sourced java an released under the GPL itself ..
 
Ok, this one sounds like crap. It's so specialised, that it probably can't at all be rebuilt by anyone and google could have never used this if sun hadn't open sourced java an released under the GPL itself ..
 
Python (1991), but the Java method may indeed be so specialized as to not be easily infringed.
 
 
Check also CLOS (Common Lisp Object System, pre-1988).
 
 
MATLAB? (1984)
 
  
 
Or maybe constant-folding in any C compiler when initializing an array?
 
Or maybe constant-folding in any C compiler when initializing an array?
Line 395: Line 372:
 
* [http://www.kdedevelopers.org/node/4309 Defending Free Software against Oracle's attack], by '''Richard Dale'''
 
* [http://www.kdedevelopers.org/node/4309 Defending Free Software against Oracle's attack], by '''Richard Dale'''
 
* [http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html My Thoughts on Oracle v Google], by '''Charles Nutter'''
 
* [http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html My Thoughts on Oracle v Google], by '''Charles Nutter'''
* [http://www.groklaw.net/article.php?story=20110621192510777 Oracle v. Google - Updating the Reexams], 21 June 2011, '''Groklaw'''
 
 
 
In 1991, a company called First Pen Systems briefly sold a product that supported on-demand dynamic loading of compiled and interpreted classes from shared libraries and text files.  The product ran on top of GO Corporation's PenPoint Operating System.   
 
In 1991, a company called First Pen Systems briefly sold a product that supported on-demand dynamic loading of compiled and interpreted classes from shared libraries and text files.  The product ran on top of GO Corporation's PenPoint Operating System.   
 
Perhaps this would be useful for prior art claims.  For further information, contact David Beberman at dbeberman@gmail.com.
 
Perhaps this would be useful for prior art claims.  For further information, contact David Beberman at dbeberman@gmail.com.
Line 433: Line 408:
  
 
{{footer}}
 
{{footer}}
[[Category:Lawsuits and patent aggression]]
+
[[Category:Court cases and litigation]]

Please note that all contributions to en.swpat.org are considered to be released under the GNU Free Documentation License 1.3 (see en.swpat.org:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)

Templates used on this page: