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
Your contributions keep Groklaw going.
To donate to Groklaw 2.0:

Groklaw Gear

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


To read comments to this article, go here
Microsoft Grabs Some Code for its ODF Plugin... From the ODF Fellowship
Monday, July 10 2006 @ 06:32 AM EDT

It seems that when Microsoft was looking to build its new ODF plugin, it took a short cut. It seems to have grabbed some code from the OpenDocument Fellowship's program that converts ODF to HTML, written by J. David Eisenberg. His code is released under a dual license, the LGPL and the Apache 2.0 license. Microsoft has put it into its ODF plugin, which is licensed under the BSD license.

Is that allowed? It's nice Microsoft endorses the value of the ODF Fellowship code, since they are forever telling us their own code is better. But we're trying to parse out which license Microsoft thinks it is complying with. Not the LGPL, I trust. My question, and I'm no Apache guru, is what about Apache sections 4.1, 4.2, 4.3, and maybe 4.4, plus the required form of notice in the Appendix? It's certainly possible I'm missing something. But it seems it may be Microsoft that neglected to notice some requirements.

I know. It's so funny. Naturally, David will be filing a major lawsuit asking for billions and gazillions in damages. He'll probably wait about 5 or 6 years though, until lots of folks are using the Microsoft plugin, and in the interim, he'll donate some code to the Microsoft project and distribute it himself, and *then* he'll announce he's shocked, shocked to discover his code inside the Microsoft plugin, call a press conference and let the media know he will be suing Microsoft. They have deep pockets, after all, and he has to consider his shareholders. A man can't just sit around the camp fire singing Kumbaya when there's money to be made.

And of course he'll also have to sue corporate end users and petition the courts to shut down their businesses under the DMCA, and he'll issue sanctimonious press releases about his stolen Most Holy IP and how Microsoft is made up of a bunch of lunatic fringe criminals who don't respect other people's intellectual property. Maybe he can grab some headlines by sending a letter to Congress. Those Congress critters need to know how dangerous and damaging Microsoft is to the economy, don't you think? And then, presto! David's stock will take off to teh moon!

NOT. He isn't planning on suing anybody, and he's glad to have people use the code, if they find it useful. After all, we're all trying to find a way to interoperate with Microsoft so the world will have an easier time of it. There may need to be some adjustments made to get fully in harmony with license terms, though. For one thing, they didn't spell his name right. It wasn't David's intention to release his code under the BSD license. He gave me this statement:

"I'm not the world's biggest fan of BSD, as it allows proprietary commercial use of freely-given software. Nonetheless, since this code is fairly obvious (anyone solving the problem independently would have come up with almost identical code), and they want it, I guess I could work it out to let them use it under BSD. Please fix the typo on my surname; I'm certain there's no H in it (obligatory Heisenberg joke)."

The Apache license terms could be followed more exactly, or, if necessary, David could grant special permission to use the code under the BSD license, which would probably qualify him for an award for having the most licenses on any 15-line piece of code.

If you'd like to compare what Microsoft did with the two licenses that this code is released under, here are the Apache 2.0 license terms. And here's the LGPL.

You can download Microsoft's plugin code here. The Fellowship plugin written by J. David Eisenberg is here. Both are zip files. Open them both up, and compare Microsoft's OdfConverter/source/OdfConverterLib/resources/document.xsl line 430 onward with David's odt_to_xhtml/odt_to_xhtml.xsl beginning with line 453 and here's what you'll see -- at a minimum, some sweet inspiration.

Note I had to change the lines to put the code inside this kind of brackets -- [] --instead of the usual because otherwise Geeklog kept stripping out all the code.

********************************

Microsoft David
[!-- Extra spaces management
from J. David Heisenberg --]

xml:space="preserve"]
[/xsl:variable]

[xsl:template name="extra-spaces"]
[xsl:param name="spaces"/]
[xsl:choose]
[xsl:when test="$spaces"]
[xsl:call-template
name="insert-spaces"]
[xsl:with-param name="n"
select="$spaces"/]
[/xsl:call-template]
[/xsl:when]
[xsl:otherwise]
[xsl:text] [/xsl:text]
[/xsl:otherwise]
[/xsl:choose]
[/xsl:template]

[xsl:template name="insert-spaces"]
[xsl:param name="n"/]
[xsl:choose]
[xsl:when
test="$n [= string-length($spaces)"]
[xsl:value-of
select="substring($spaces, 1, $n)"

xml:space="preserve"/]
[/xsl:when]

[xsl:otherwise]
[xsl:value-of select="$spaces"/]
[xsl:call-template
name="insert-spaces"]
[xsl:with-param name="n"]
[xsl:value-of
select="$n - string-length($spaces)"/]
[/xsl:with-param]
[/xsl:call-template]
[/xsl:otherwise]
[/xsl:choose]
[/xsl:template]

[xsl:variable name="spaces"
xml:space="preserve"]
[/xsl:variable]

[xsl:template match="text:s"]

[xsl:choose]
[xsl:when test="@text:c"]
[xsl:call-template
name="insert-spaces"]
[xsl:with-param name="n"
select="@text:c"/]
[/xsl:call-template]
[/xsl:when]
[xsl:otherwise]
[xsl:text] [/xsl:text]
[/xsl:otherwise]
[/xsl:choose]
[/xsl:template]

[xsl:template name="insert-spaces"]
[xsl:param name="n"/]
[xsl:choose]
[xsl:when
test="$n [= 30"]
[xsl:value-of
select="substring($spaces, 1, $n)"/]

[/xsl:when]

[xsl:otherwise]
[xsl:value-of select="$spaces"/]
[xsl:call-template
name="insert-spaces"]
[xsl:with-param name="n"]
[xsl:value-of
select="$n - 30"/]
[/xsl:with-param]
[/xsl:call-template]
[/xsl:otherwise]
[/xsl:choose]
[/xsl:template]


  View Printable Version


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 )