decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
No application or program written for the J2SE platform runs on Android. | 380 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Corrections here!
Authored by: fredex on Thursday, May 24 2012 @ 08:25 AM EDT
Please place any corrections here.

[ Reply to This | # ]

No application or program written for the J2SE platform runs on Android.
Authored by: ThrPilgrim on Thursday, May 24 2012 @ 08:26 AM EDT
Who's up for that challenge?

---
Beware of him who would deny you access to information for in his heart he
considers himself your master.

[ Reply to This | # ]

Is Dilbert working in the stupid lawsuit department?
Authored by: SirHumphrey on Thursday, May 24 2012 @ 08:29 AM EDT
http://www.dilbert.com/strips/comic/2012-05-24/

[ Reply to This | # ]

Off topic
Authored by: SirHumphrey on Thursday, May 24 2012 @ 08:32 AM EDT
Such as the price of Tea in China

[ Reply to This | # ]

Oracle v. Google - Now Back to the Copyright Question and How Oracle Fragments Java
Authored by: Anonymous on Thursday, May 24 2012 @ 08:33 AM EDT
"longer symbolic but static" ? What does that mean?

[ Reply to This | # ]

News picks
Authored by: feldegast on Thursday, May 24 2012 @ 08:34 AM EDT
Please make links clickable

---
IANAL
My posts are ©2004-2012 and released under the Creative Commons License
Attribution-Noncommercial 2.0
P.J. has permission for commercial use.

[ Reply to This | # ]

"applications and programs written for the J2SE platform will not run on Android"
Authored by: Anonymous on Thursday, May 24 2012 @ 09:02 AM EDT
Oracle - "applications and programs written for the J2SE
platform will not run on Android"...

So, Sun's CEO didn't seem to care.

AND, Google doesn't care either.

If they did care, then they would have followed SUN's idea
and rules, where they would have to check for compatibility
using SUN's program.... and on top of that, could call the
whole thing "JAVA". However, they took the Harmony route,
and could make their own, and not call it JAVA, and not make
it perfectly "like" JAVA from a compatibility point of view.

All that SUN CEO thought about, and approved of as being ok,
... as SUN CEO said and meant in court, is that, the real
benefit of folks using JAVA and knockoffs of JAVA, knockoffs
via the free license that SUN allowed others to develop and
program under, is, that the folks out there in the computer
world were using something other than using Microsoft's
government supported Monopoly lock-in software - that SUN
could not compete with if it was "TOO STRONG" and used by
everyone - for fracturing is good, Microsoft ONLY is very
bad. Got it now.

FACT - one reason why GPL software exists, as FREE software
was the only thing for a while that seemed able to exist
without fear of MS building the same thing, and putting you
out of business (or just buying you out, and killing off the
software in favor of their own version). Then, like Fox Pro
... killing their own MS software to move people to buy
something else costing business a lot of money that they
would not have to spend if MS just would support what they
had out there, even if it wasn't making then new license
money.

So, SUN knew about MS, and knew that FREE software (as in
Speech), was one way they could use, so used, to get their
software USED enough so that they could play and license a
little bit (depending) for tools etc as well. AND, maybe
then MS didn't grow anymore into spaces where SUN was
already... including putting their SUN UNIX out of business
via MS OS being so profitable due to APPs and TOOLs, that
none would use the SUN software, or hardware, bye bye SUN.

Free was the only option... remember, the US government and
the courts never really corrected the MS Monopoly, they just
made it look like something was done, but in reality,
everyone in the computer business, who were techs saw the
reality that the lawyers, and judges, and US government
Justice Dept lawyers, could not see (as the lawyers, like in
this case about APIs and SW Patents, don't understand
either).

SW patents, should not exist. Software is MATH. That is a
fact.

[ Reply to This | # ]

Could Google have got a license from someone other than Sun/Oracle?
Authored by: ais523 on Thursday, May 24 2012 @ 09:09 AM EDT
There's something that didn't really resonate in the coverage of the trial for
me, but which seems pretty clear from the jury questions. There's a huge number
of questions all on the same subject: could Google have copied the APIs from
some free-to-use source which wasn't Sun or Oracle? (Apache was mentioned
frequently.)

I'm not sure how I'd have answered these, had I been in the judge/lawyers'
positions.

[ Reply to This | # ]

  • Could Google have got a license from someone other than Sun/Oracle? - Authored by: Anonymous on Thursday, May 24 2012 @ 09:41 AM EDT
  • They did. - Authored by: Anonymous on Thursday, May 24 2012 @ 09:42 AM EDT
    • They did. - Authored by: Anonymous on Thursday, May 24 2012 @ 11:23 AM EDT
      • They did. - Authored by: Mark Haanen on Thursday, May 24 2012 @ 11:31 AM EDT
        • They did. - Authored by: Anonymous on Thursday, May 24 2012 @ 04:26 PM EDT
      • They did. - Authored by: Anonymous on Thursday, May 24 2012 @ 12:38 PM EDT
        • They did. - Authored by: Anonymous on Thursday, May 24 2012 @ 12:47 PM EDT
          • They did. - Authored by: Anonymous on Thursday, May 24 2012 @ 03:01 PM EDT
            • They did. - Authored by: PJ on Thursday, May 24 2012 @ 03:28 PM EDT
          • They did. - Authored by: Anonymous on Thursday, May 24 2012 @ 03:08 PM EDT
            • They did. - Authored by: PJ on Thursday, May 24 2012 @ 03:31 PM EDT
              • They did. - Authored by: BJ on Thursday, May 24 2012 @ 04:18 PM EDT
              • Interesting ... - Authored by: Anonymous on Friday, May 25 2012 @ 08:06 AM EDT
                • Interesting ... - Authored by: Anonymous on Wednesday, May 30 2012 @ 09:25 PM EDT
              • They did. - Authored by: AlexWright on Friday, May 25 2012 @ 11:23 AM EDT
      • They did. - Authored by: Anonymous on Thursday, May 24 2012 @ 01:46 PM EDT
      • They did. - Authored by: PJ on Thursday, May 24 2012 @ 03:30 PM EDT
      • you missed the point I think - Authored by: Anonymous on Thursday, May 24 2012 @ 04:51 PM EDT
Oracle v. Google - Now Back to the Copyright Question and How Oracle Fragments Java
Authored by: Anonymous on Thursday, May 24 2012 @ 09:09 AM EDT
From OraGoogle-1191/ page 3
In Android, Google could have created different exception lists using supertypes of the
listed exceptions. “For each checked exception that can result from execution of the body of a
method or constructor, a compile-time error occurs unless that exception type or a supertype of
that exception type is mentioned in a throws clause in the declaration of the method or
constructor.” TX 984 at 221 (emphasis added). For example, in the case of the verify() method
listed above, all of the listed exceptions are subtypes of java.security.GeneralSecurityException.
TX 610.2 at /docs/api/java/security/GeneralSecurityException.html. The method would still
compile if the throws clause had included only GeneralSecurityException.

Oracle doesn't tell the whole truth. In order to stay compatible Google must throw the same Exceptions.

Otherwise Code (which would compile), would wait for the wrong Exception.

This simple example would no longer work correctly.
try {
  verify(publicKey, sigProvider);
} catch (SignatureException ex) {
  LOGGER.warn("Signature Exception", ex);
} catch (GeneralSecurityException ex) {
  LOGGER.error("Other verify exception", ex);
}

[ Reply to This | # ]

Google leaves no stone unturned
Authored by: PolR on Thursday, May 24 2012 @ 09:09 AM EDT
Google says:
because the SSO of the 37 API packages is functionally required for compatibility, Google was entitled to use that SSO, regardless of whether its use made Android fully compatible or not.
So the SSO doesn't become magically copyrightable if compatibility is not implemented. Nice observation.

[ Reply to This | # ]

Oracle v. Google - Now Back to the Copyright Question and How Oracle Fragments Java
Authored by: Anonymous on Thursday, May 24 2012 @ 09:26 AM EDT
Document 1191, page 9 (10/14)
Google undermined interoperability by creating an incompatible fork of the Java platform. The
uncontroverted evidence at trial was that Google is the only company that is commercially using
the Java APIs that has not taken a license. See, e.g., RT 293:8-294:21 (Ellison); 385:20-386:8
(Kurian), 487:10-488:7 (Page).

What is Oracle refering to?

I thought HP had its own jvm and that there are others too?

Am I missing something?

[ Reply to This | # ]

Interfaces
Authored by: Anonymous on Thursday, May 24 2012 @ 09:33 AM EDT
To respond to Oracle, even J2SE does not distribute all classes that
implement the interfaces defined in the JAVA API.

Interfaces are defined so that the API can call code (classes and methods) not
yet implemented. When you create a class in a modern IDE and state that it
implements an interface, that IDE will copy the SSO of that interface to help
you. If interfaces are copywriteable, then IDEs such as Eclipse are inducers to

infringement. In fact, code that uses an interface requires that it has the same

SSO as defined to even include the fully qualified name of that interface.

The public methods on a class are considered to be the interface of that class.

The only difference is that you cannot declare a class as implementing
another class.

This shows that APIs are generally considered to be uncopywriteable subject
matter by the industry.

[ Reply to This | # ]

Oracle v. Google - Now Back to the Copyright Question and How Oracle Fragments Java
Authored by: Anonymous on Thursday, May 24 2012 @ 09:38 AM EDT
Love this line from Oracle's brief:
Copying to lure a competitor’s developers is not the same as reverse engineering to ensure interoperability.
First, "lure"--having a subset of Java skills apply to both Android and Java is actually of benefit to Oracle. Consider a developer who must decide whether to invest in learning Java or in learning Objective C.

Second, "competitor"--where exactly can I buy that Pure Java smartphone?

[ Reply to This | # ]

Interesting original Jury notes: Many of them were never answered?
Authored by: Anonymous on Thursday, May 24 2012 @ 09:41 AM EDT
It's fascinating to see those original handwritten notes from
the Jury. Thanks so much, PJ!

It's interesting that many of those notes don't seem to have
received answers. Wonder why...

[ Reply to This | # ]

Oracle v. Google - Now Back to the Copyright Question and How Oracle Fragments Java
Authored by: darlmclied on Thursday, May 24 2012 @ 10:27 AM EDT
Just read this: FUD filled article on zdnet.com

Author claims to have been in the courthouse, I suspect they were in a different trial.

[ Reply to This | # ]

It's interesting the way the claims are being moved around during this ca
Authored by: Anonymous on Thursday, May 24 2012 @ 11:16 AM EDT
It's an interesting strategy. Oracle have forced Google to
defend so far on the basis of "no it's not Java, it was
never intended to be compatible with Java", in order to now
try to get them in trouble for not producing a compatible
implementation

Both in terms of implying fragmentation, and denying fair
use for compatibility.

I wonder if this was actually a clever strategy. Still
hoping for a ruling that it's not copyrightable anyway, so
getting fair use on this might not be the best result
(though it would be good result for Google)

[ Reply to This | # ]

But does it run on Android? The new Paradigm.
Authored by: argee on Thursday, May 24 2012 @ 11:27 AM EDT
Clearly, if things go Google's way, the tables will
reverse. It will be the Java boys that will have to
conform their Java programs to run on Android, or
their products will start to lose functionality and
marketability.

Far do the mighty fall.


---
--
argee

[ Reply to This | # ]

JSE programs can run on Android
Authored by: Anonymous on Thursday, May 24 2012 @ 11:55 AM EDT
Android consists of two main components:
  1. Linux Core
  2. Android Runtime
    1. Anrdoid apps are hosted applications (like J2EE apps but not exactly) and the developer does not directly code a main method (Is there a implied call to main by the Android runtime when a process is started?).

      At the Linux level the dalvikvm command is equivalent to the java command from the JRE. It is possible to run dalvik bytecode programs with a main method from the linux command line. See here:

      Da lvik VM Invocation

      It is possible for Google, OEM's, Carriers, and programmers with rooted devices to run any JSE program with main and using the 37 API's that has been converted to Dalvik bytecode on an Android device.

      [ Reply to This | # ]

I would love to see Google give an alternate way to write apps for Android..
Authored by: Anonymous on Thursday, May 24 2012 @ 12:13 PM EDT
I pushed off learning Java for so long.. and the only thing that actually made
me try was Android. This trial has made me question that decision. I know
Google has a C API for Android, but my understanding was that it is more for low
level libraries that need lots of control. Is it possible to write a full app
in C? Or possible to write in something other than Java without using a cross
compiler that spits out Java or Java bytecode?

[ Reply to This | # ]

What is meant by "compatible"?
Authored by: Anonymous on Thursday, May 24 2012 @ 12:50 PM EDT
All valid Java byte-code can be directly translated to a valid Android
byte-code. Therefore the two systems are compatible.

All this talk about not having implemented the complete API or differences in
the main() method are irrelevant.

[ Reply to This | # ]

Oracle wants to kill compatibility?
Authored by: Anonymous on Thursday, May 24 2012 @ 12:53 PM EDT
This case seems more about winning an argument than considering what they really
want or need from the outcome. If Oracle were to prevail in all of its
arguments, it would likely mean a migration away from Java. Sure, there'll be
some holdouts for legacy reasons, but any new development work would first have
to reconsider whether Java would be a good choice. Perhaps I am missing
something, but I don't know of too many languages with this type of problem.

[ Reply to This | # ]

serialization, deserialization and JSON
Authored by: IMANAL_TOO on Thursday, May 24 2012 @ 01:49 PM EDT
From microsoft.com/en- us/library/system.web.script.serial ization.javascriptseriali zer.aspx:
"Provides serialization and deserialization functionality for AJAX-enabled applications."
What are AJAX-enabled applications in this context? Do they have any bearing to what is fragmentation and what is not? Especially since Turing-complete languages probably can be translated on-the-fly with some speed penalty:
JSON (JavaScript Object Notation) is a lightweight data- interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.

JSON is built on two structures:

- A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
- An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.

These are universal data structures. Virtually all modern programming languages support them in one form or another. It makes sense that a data format that is interchangeable with programming languages also be based on these structures.
To me it seems any language difference is not so relevant, if they are Turing-complete. But, here I'm in deep water, deeper than usual... :|


---
______
IMANAL


.

[ Reply to This | # ]

New signature for "Winter"
Authored by: Anonymous on Thursday, May 24 2012 @ 02:25 PM EDT
Always liked Winter's signature: "Some say the sun rises in the east, some
say it rises in the west; the truth lies probably somewhere in between."

I propose a new one: "Some say software is mathematics, some say it isn't;
the truth lies probably somewhere in between."

[ Reply to This | # ]

Interoperability Upstream vs Downstream dependencies
Authored by: Anonymous on Thursday, May 24 2012 @ 03:54 PM EDT
The JSE libraries use many techniques to get services from the host platform when running a JVM.

One technique is known as bridging. The JSE does not implement a feature itself but acquires the feature from the host platform.

Classes in java.awt.* depend on the underlying windowing system of the host platform. In particular, java.awt.Component is a bridge to an actual drawable surface from the host windowing system. Also in java.awt, button, checkbox, choice and all other classes descendent from Component are bridged to native window components, they are not implemented in Java - they are implemented in Windows, or Linux, or whatever.

Java adapts to the host platform it can not dictate to the host platform. Image Oracle / Sun telling Microsoft how they must implement the API for the Windows platform.

Android linux does not include a native windowing system (i.e) one that runs purely as a native process. This is a host operating feature system-level decision and does not need to consider the needs of the Java API.

Since java.awt depend on bridging to a native windowing system and android linux does not include a native windowing system there is no need to implement java.awt. Also it makes no sense to implement any packages that depend on java.awt: these include java.swing, java.applet and easily argued java.print.

Many Operating Systems can run without a WindowManager (a GUI) including all variations of UNIX (Solaris, AIX, ...), Linux, and Windows Server. Many datacenter servers running java programs do so without running a WindowManager and no java programs depending on awt, swing, applet or print will run on them.

Are all of the Fortune 100 companies in violation of their java licenses because they run servers without WindowsManagers and therefore can not run any of the GUI based demos described in Oracle brief, however, HelloWorld should run.

Some other bridges in the JSE (remember, where Java defines the interface and somebody else puts in the effort of actually building the code that works) include: JDBC (java.sql), Java Sound (java.sound.*), XML parsers, JNDI (javax.naming.*), Cryptography (java.crypto.*).

Is there any original SSO in any of these bridging interfaces, since many were designed to do exactly what Oracle is claiming that google is trying to do: Get to market by leveraging someone else's work!!

[ Reply to This | # ]

Oracle spouting more nonsense
Authored by: Anonymous on Thursday, May 24 2012 @ 04:30 PM EDT
In particular, under the Court’s construction, a reference could be symbolic as to some data and numeric as to other data. Indeed, so long as the reference is symbolic as to some data, then it “identifies data by a name other than the numeric memory location of the data” and the reference is a symbolic reference, regardless of whether it identifies other data by location.
References point to ONE thing. _ONE_ You can't put two different values in the same location in memory! It's either the numeric memory location of the data or it is not. Oracle is asking for jury instructions saying that up is down.

[ Reply to This | # ]

Oracle v. Google - Now Back to the Copyright Question and How Oracle Fragments Java
Authored by: Anonymous on Thursday, May 24 2012 @ 08:19 PM EDT
If you follow Oracle demonstration, JME is not compatible with JSE: There are API in JME which are not in JSE and not all the JSE API are in JME.

However see what Sun has written (2006) in the official CDC doc: With respect to APIs in the java.* packages, it is a subset of the Java 2 Platform, Standard Edition (J2SE), version 1.4.2. Applications written to these APIs in Personal Profile 1.1.2 are therefore upward-compatible to J2SE 1.4.2..

[ Reply to This | # ]

Oracle vs Google : The score so far
Authored by: Anonymous on Thursday, May 24 2012 @ 10:31 PM EDT
The dust hasn't settled yet, but when it does we will have a scenario something
like this.

Oracle has lost:
- several patents revoked by USPTO
- a lot of money on lawyers
- credibility and goodwill with many Java developers
Oracle has gained:
- ?
Google has lost:
- a lot of money on lawyers
- pocket change for infringing 9 lines of RangeCheck code
Google has gained:
- confidence that Android can be defended when necessary

And the winner is - the lawyers. Almost all the money that will change hands
will go to them.

[ Reply to This | # ]

  • MAD - Authored by: celtic_hackr on Thursday, May 24 2012 @ 11:53 PM EDT
    • not MAD - Authored by: Anonymous on Friday, May 25 2012 @ 04:58 AM EDT
      • not MAD - Authored by: Wol on Friday, May 25 2012 @ 09:59 AM EDT
        • not MAD - Authored by: Anonymous on Friday, May 25 2012 @ 09:52 PM EDT
    • Oracle tried for MAD.... - Authored by: Anonymous on Friday, May 25 2012 @ 06:11 PM EDT
How patents (don't) work
Authored by: cricketjeff on Friday, May 25 2012 @ 06:36 AM EDT
A very clever man invents the toggle wibbler, it is a device that society has
been crying out for, toggles can now be wibbled at a rate of 60 toggles a minute
rather than 60 minutes per toggle. He gets a patent and grants licences.

Another man sees the toggle wibbler and sees that by ungroobing the flange
werter toggles can be wibbled at a rate of 120 a minute, he gets a patent and
grants licences.

A third man sees the improved toggle wibbler and sees that a left handed bonk
knocker could get production up to 150 toggles a minute, he gets his patent and
grants licences, thus far all is working as it should but now a large toggle
wibbling company starts to feel concerned, people are making money from wibbling
and it isn't them so they pay an engineer to come up with their own machine. The
design cannot use the original patented technology so it is slow and
inefficient, it can only manage 30 toggles a minute, the bosses speak to a
clever lawyer who says
Rather than a toggle wibbler why do you not create a tiggle wobbler, this will
not be covered by the patent, further we can patent it ourselves and since we
are rich we can go to court and force all toggle wibbling companies to pay a
licence fee to us.
"But there is no such thing as tiggle wobbling""
"There will be after I write the patent"
"aren't patents supposed to reveal useful inventions to the world at
large?"
"Not the way I write them"
So now tiggle wobbling has been patented
Another large toggle wibbling concern is, well, concerned. They speak to their
engineers saying we need defensive patents, the engineers invent, lawyer weave
spells and taggle waggling, teggle wuggling and tyggle wyggling are patented,
but the patent office spots a pattern and they have to modify the final patent
to say "on Tuesdays"

Eventually a toggle wiggler is bought by a litigious lunatic who goes to court
and ...

---
There is nothing in life that doesn't look better after a good cup of tea.

[ Reply to This | # ]

The Copyright Question is moot...
Authored by: Anonymous on Friday, May 25 2012 @ 07:40 AM EDT
The Judge will follow the European Court's lead and decide that API's are not
copyrightable. He is NOT going to put US copyright law at odds with European
copyright law...

[ Reply to This | # ]

Oracle Java Programs run cross-platform on Andoid, RIM and Windows
Authored by: Anonymous on Friday, May 25 2012 @ 08:01 AM EDT
Oracle SQLite Mobile Client runs cross platform on:
  • Android 1.5 (based on Android/Harmony)
  • RIM 5.0 (based on JME)
  • Win32 (JRE 5.0)
  • Windows Mobile 2003 (using IBMJ9 or CtErne JDK 4.1)
  • Windows Mobile 5 (using IBMJ9 or CtErne JDK 4.1)
  • Windows Mobile 6 (using IBMJ9 or CtErne JDK 4.1)

The user guide is here: Oracle SQLite Mobile Client Guide

How large is the common java library shared by the different versions.

How does Android fragment Java again?

[ Reply to This | # ]

Fragmentation is a meaningless PR facde
Authored by: Anonymous on Friday, May 25 2012 @ 08:43 AM EDT
Anytime Oracle want they can implement J2(?)E on android, there is nothing
stopping them and then Java WORA will also include android.


Nothing Android has done in anyway affects the current java
environment/ecosystem for programmers.

If Oracle did port J2?E to Android, Java programmers would be happy, Android
programmers would also carry on just like they are, though I do wonder just how
much interest was generated in using Android NDK.

An API is a concept, an SSO of a concept is a just a bigger more complicated
concept, but a concept nonetheless.

Concept: A general idea derived or inferred from specific instances or
occurrences. The Spec, The Source, The Library, The Application are each
specific instances and are protected as such.

The concept is not protected. The Jury instructions were specific, concepts are
not covered.

It really shouldn't be that hard for Judge Alsup to have come to that
conclusion.

Software patents exist because the languages of technology and law are
incompatible and lawyers are able to twist the meaning to suit themselves. What
is needed is some plain speaking on the language and terms.

Start with concepts.

[ Reply to This | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )