News

Mueller Defends Java Android Code Claims; Analysts Weigh In

A headline-grabbing claim of the discovery of new evidence supporting Oracle's allegation that Google infringed on copyrights related to the Java Platform in its Android mobile operating system sparked a hot debate in the blogosphere over the weekend.

On Friday, Florian Mueller, the founder and former director of the NoSoftwarePatents campaign, claimed on his FOSS Patents blog that he had found files in the Android code repository bearing Sun copyright headers identifying them as proprietary and confidential. Mueller argues that those files, which form part of Froyo (Android 2.2) and Gingerbread (Android 3.0), show the same pattern of direct copying that Oracle is alleging.

"I think Google has a lot of explaining to do in the court case," Mueller told ADTmag in a phone interview last week, "but they also have to rectify things between themselves and the Apache Software Foundation, because these six files contain a notice that suggests that it belongs to the ASF."

Mueller's post was picked up by a number of media outlets Friday and generated a lot of attention. It also elicited a fierce rebuttal from Java programmer Ed Burnette, who declared on the ZDNet's Dev Connection blog that Mueller's conclusions were "much ado about nothing." Burnette, whose bio describes him as a veteran programmer, Eclipse committer, founding editor of EclipseZone.com, and author of Eclipse IDE Pocket Guide (O'Reilly Media, 2005), wrote, "I downloaded and examined all the files he wrote about, and my analysis as an expert developer comes to a completely different conclusion than Mr. Mueller."

Burnette argued the files (PolicyNodeImpl.java, AclEntryImpl.java, AclImpl.java, GroupImpl.java, OwnerImpl.java, PermissionImpl.java, and PrincipalImpl.java) are located in the unit test area of the source code tree. "As any programmer will tell you," Burnette wrote, "you don't ship your unit tests with your product. Unit tests are tools used internally to ensure the quality of the software before you ship it."

In an update to his original blog post, Burnette added that Google deleted PolicyNodeImpl.java from the source tree on Oct. 30, 2010, and that the other six java files were deleted on Jan. 14, 2011. Also, the commit comment from developer Dan Bornstein reads, "Remove pointless tests."

In a follow-up e-mail to this site sent late Friday, Mueller shot back that Burnette had posted "inaccuracies and unsubstantiated claims" that muddied the waters.

"He doesn't even dispute that the files and notices I found exist," he said in the e-mail. "Concerning the 'removal' of them from an Android tree, he talks about the Android 3.0 tree, but that doesn't change the fact that the files are in the Android 2.2 and 2.3 trees -- the currently relevant versions…"

Mueller added: "More generally, [Burnette] fails to understand the significance of an unauthorized license change of software. Once you put something out on open source terms for the world to use on them, it's completely beyond control what will happen. He just believes that those files were never built into anything -- but he can't prove [it]. Since the code contained in those files isn't unit testing code but security and wireless code, those files can definitely be used for serious purposes, not just testing."

Mueller posted a detailed rebuttal on his blog Sunday that can be read here.

This debate is about the copyright aspects of Oracles claim against Google. (The suit also alleges patent infringement.) In particular, Exhibit J of Oracle's amended complaint. That amendment contains a synopsis of source code shipped by Google and Sun's original Java code.

Mueller also identified 37 files marked "proprietary/confidential" by Sun, and a copyright notice file that reads "do not distribute!" Those files appear to relate to the Mobile Media API of the Sun Java Wireless Toolkit, Mueller said.

Many of the industry analysts contacted for this story declined to comment directly on this new Internet dustup, but a few offered some general thoughts.

"There's a lot in here that's best left to the lawyers," said George Reese, CTO of enStratus and author of Java Database Best Practices (O'Reilly Media, May 2003) in an e-mail interview. But he added: "Whether or not these classes represent unit tests is irrelevant. [Google is] infringing by having these things in the Android source tree, regardless of whether they are unit tests (assuming, they are in fact proprietary files and not covered by some licensing arrangement). The fact that the license headers have been changed is uninteresting. Tools like Maven will just go through a source tree and replace license headers, so any replacement of license headers was likely not malicious in intent. That the files were deleted from the repository does not change the fact that they were infringing at the time of the complaint. It may help with respect to damages and such, but that's a lawyer's question."

"I don't know who is right," he said. "But it smells like someone with the ASF or Google did something stupid, probably not willful, and ultimately not terribly important to the function of Android."

Writing for Ars Technica, Ryan Paul concluded that Mueller does offer several new files that weren't known before, "but it's still basically the same stuff that Oracle presented in its previous filing that everyone dissected back in October." (Mueller takes issue with this article in the aforementioned Sunday rebuttal post.)

Pamela Jones, creator and editor of legal news site Groklaw, wrote on her blog: "The bottom line is this: none of us in the public would know at this point if any code was infringed or not, not you, not me, not Florian. Even if Oracle were feeding him inside information, he still wouldn't know, because Oracle doesn't know yet. Neither does Google. We are all in suspension until discovery is done and analysis of the code by the experts in the court case."

About the Author

John K. Waters is the editor in chief of a number of Converge360.com sites, with a focus on high-end development, AI and future tech. He's been writing about cutting-edge technologies and culture of Silicon Valley for more than two decades, and he's written more than a dozen books. He also co-scripted the documentary film Silicon Valley: A 100 Year Renaissance, which aired on PBS.  He can be reached at [email protected].

comments powered by Disqus

Featured

  • VS Code v1.99 Is All About Copilot Chat AI, Including Agent Mode

    Agent Mode provides an autonomous editing experience where Copilot plans and executes tasks to fulfill requests. It determines relevant files, applies code changes, suggests terminal commands, and iterates to resolve issues, all while keeping users in control to review and confirm actions.

  • Windows Community Toolkit v8.2 Adds Native AOT Support

    Microsoft shipped Windows Community Toolkit v8.2, an incremental update to the open-source collection of helper functions and other resources designed to simplify the development of Windows applications. The main new feature is support for native ahead-of-time (AOT) compilation.

  • New 'Visual Studio Hub' 1-Stop-Shop for GitHub Copilot Resources, More

    Unsurprisingly, GitHub Copilot resources are front-and-center in Microsoft's new Visual Studio Hub, a one-stop-shop for all things concerning your favorite IDE.

  • Mastering Blazor Authentication and Authorization

    At the Visual Studio Live! @ Microsoft HQ developer conference set for August, Rockford Lhotka will explain the ins and outs of authentication across Blazor Server, WebAssembly, and .NET MAUI Hybrid apps, and show how to use identity and claims to customize application behavior through fine-grained authorization.

  • Linear Support Vector Regression from Scratch Using C# with Evolutionary Training

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the linear support vector regression (linear SVR) technique, where the goal is to predict a single numeric value. A linear SVR model uses an unusual error/loss function and cannot be trained using standard simple techniques, and so evolutionary optimization training is used.

Subscribe on YouTube