|
|
Subscribe / Log in / New account

The .NET API patent, mono, and GNOME

January 18, 2006

This article was contributed by Mitch Skinner

The Mono project pushes a lot of buttons in the free software community. Patents, Microsoft, language choice, and platform choice all generate lots of heat individually, and Mono has them all. In spite of all the debate, there are still some issues that remain unresolved. There are undoubtedly some people who have been avoiding Mono just because Red Hat was; now that Fedora has it (while RHEL is still apparently up in the air) it's tough to know if Mono is safe to use or not.

I'm not a lawyer, but since everyone who has gotten advice from one (or who is one) is being tight-lipped about it, the rest of us apparently have to figure things out the best we can. I asked Red Hat Deputy General Counsel Mark Webbink about the decision to include Mono, and he replied:

I think you can understand that I cannot discuss Red Hat's internal IP policy. I would point out that the decision to include Mono with Fedora was made by the Fedora Foundation and its project folks. I feel confident the determination was made with an understanding of various patent concerns that have previously been posed to Novell but also with an understanding that there are protections available to open source developers, vendors, etc.

"...protections available to open source developers, vendors, etc."--sounds like the patent pools that are intended to create a mutually-assured-destruction sort of scenario for anyone wanting to sue open source projects for patent infringement. These pools have been derided as PR gimmicks, but Webbink's note makes it sound like some people are willing to actually put some trust in them.

This message also makes it sound like the Fedora decision-making mechanisms are finally starting to become separate from Red Hat's. I sent a message to Greg DeKoenigsberg of the Fedora Foundation, and I got the one-sentence official line in return:

"Business considerations that prevented certain Mono components from being included in Fedora previously have now been resolved."

Greg also suggested that more information may be forthcoming soon.

One of the really interesting aspects of the timing is the fact that the main patent application that has been discussed in the media (the API patent application) appears close to being automatically abandoned. The API patent, if it were granted, would be a big blow to the Mono project. Many patents on various aspects of the implementation could have been worked around, but the API implementation not only makes up a significant portion of the Mono codebase (making it a big project to re-do), but is also what all software written for Mono/.NET uses. If the API becomes unusable, you can't hide a work-around in the Mono internals, because the API forms the connection between Mono and the rest of the world.

In October of last year, the patent office issued a "Non-Final Rejection" to the patent application, meaning that Microsoft can try to fix the application. Indeed, if you read the non-final rejection, there are several suggestions the patent examiner makes about how to fix problematic issues. However, there is also a big section of the rejection notice that talks about prior art in the form of two already-issued patents. Those could be harder to work around.

The rejection notice says that the deadline for reply is three months from the date of mailing, which was October 21st, 2005. It has now been almost three months, and Microsoft has not yet replied. According to the rejection notice, if there's no reply before the deadline, the application is automatically abandoned.

What does that mean? Well, ask a lawyer, I guess, but it sounds pretty good for Mono. More importantly, maybe, is what it means for GNOME. In the spring of 2004, there was a big discussion on whether to begin using Mono in the GNOME core desktop. For example, see Havoc Pennington's essay on the topic. Clearly, it would be good to start writing core functionality in something nicer than C; however, the GNOME developers are understandably reluctant to open things up too widely and end up with a large number of different languages in the core desktop. The debate didn't reach a conclusion, with Novell going one way, Red Hat going another, and the community left hanging, with little information with which to make a decision.

Since then, several useful GNOME-targeted applications have been written using Mono. With the confusion regarding whether or not Mono would end up in all the major distributions, though, those applications have undoubtedly not gotten as much support and contributors as they could have. There are also non-Mono alternatives to some of them. While competition between projects is certainly healthy and a good thing in general, one of the strengths of free software is the ability to share and cross-pollinate. If different projects use different languages, libraries, and platforms, though, that sharing becomes much more difficult. Hopefully, some clarity on Mono's risks is forthcoming, and then maybe the split can be resolved.

[The author wishes to disclose that he holds stock in Red Hat, Inc.]

Index entries for this article
GuestArticlesSkinner, Mitch


to post comments

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 1:04 UTC (Thu) by mitchskin (subscriber, #32405) [Link]

I haven't figured out how to link directly to the rejection notice, but if you want to read it, go to the Patent Application Information Retrieval site, select Application Number in the "Search Method" dropdown, and enter 10/087027 in the search box. In the page that comes up, click on the "Image File Wrapper" tab. At the moment, the rejection notice is at the top of the list you get.

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 2:18 UTC (Thu) by louie (guest, #3285) [Link] (3 responses)

Hopefully this falls into 'constructive criticism', but here goes either way. "What does that mean? Well, ask a lawyer, I guess..." Hello? Hello? You guys are journalists. I pay my subscription to LWN so that you can go out and ask these questions for me. If I wanted completely unfounded bloviations on patent law, I'd go read my own blog :)

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 4:21 UTC (Thu) by mitchskin (subscriber, #32405) [Link]

Well AIUI, it means pretty much what it sounds like. Abandoned patent applications don't result in patents. If they miss the deadline due to an unintentional or unavoidable delay, then they can petition to get the application revived. The delay has to be for the whole period they had for replying; an unavoidable delay that crops up in the last week doesn't count.

Sometimes patent applications can be abandoned and continued in a new application (in fact, the one that's about to be automatically abandoned is a continuation of an earlier abandoned application), but you have to file the continuation application before the parent becomes abandoned. In other words, they can't continue after the deadline unless they manage to revive the application. I have a hard time imagining Microsoft showing that they had an unintentional or unavoidable delay, so once the deadline passes I think the chances of them trying to revive the application are pretty low.

In some cases it's possible to try again with a whole new ("substitute") application (even after the original was abandoned), but anyone who does that loses the benefit of the original filing date. The original filing date is important because in the US you have to apply for a patent within a year of publishing the details of the invention. Since Microsoft published the .NET API more than a year ago, they wouldn't be able to start a new application now.

Again, I'm not a lawyer, and this isn't legal advice, but once the deadline passes I personally will feel a lot better about contributing to Mono or any GNOME-oriented project that uses it.

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 9:48 UTC (Thu) by khim (subscriber, #9252) [Link]

No, it does not. The problem with litigations and lawers is that it's impossible to give general answer.

- Can I be sued over this ?
- Sure - it does not even matter what this actually is (see SCO).
- Ok, let's reprase: how high are the risks for my business ?
- Oh, that's different thing - let' talk about your business...

Journalists are not lawyers - and for good reason: they need broad brush and there are not broad brush as far as litigation is concerned...

The .NET API patent, mono, and GNOME

Posted Jan 21, 2006 15:29 UTC (Sat) by bronson (subscriber, #4806) [Link]

You seem to be implying that this story is almost meritless (more precisely, has as about much merit as one of your blog entries) unless Jon can find a lawyer who will offer a professional opinion on this matter.

The chances of finding an expert lawyer to go out on a limb like that? Slim to none. The smarter she is, the less she will speculate on areas like this that have very little precedent.

Is the story still valuable even without professional intepretation? Absolutely. It's got a lot of good information. Your "constructive criticism" in this case is misguided and unrealistic.

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 2:47 UTC (Thu) by smitty_one_each (subscriber, #28989) [Link] (8 responses)

>Clearly, it would be good to start writing core functionality in something nicer than C

Possibly a subjective assertion.

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 4:39 UTC (Thu) by elanthis (guest, #6227) [Link] (3 responses)

Or possibly one born of years of experience writing apps in C and writing the equivalent apps in something else, and seeing how much more efficient writing in something other than C is. 10 lines of Python is so much nicer than 3000 lines of C, especially when they both do the same thing and have near identical runtime efficiency (as most of the work is done in library code, written in C).

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 10:50 UTC (Thu) by smitty_one_each (subscriber, #28989) [Link]

I love Python as well, but the words 'Clearly' and 'core' in the quotation motivated the remark.

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 23:01 UTC (Thu) by bk (guest, #25617) [Link]

'Near identical runtime efficiency' is true only in terms of absolute running time minus startup overhead. The 10 line Python program uses significantly more RAM (and has significant startup delay) compared to the 3000 line C program.

The .NET API patent, mono, and GNOME

Posted Jan 26, 2006 17:57 UTC (Thu) by arcticwolf (guest, #8341) [Link]

10 lines of Python is so much nicer than 3000 lines of C, especially when they both do the same thing and have near identical runtime efficiency (as most of the work is done in library code, written in C).

10 lines of C are so much nicer than 3000 lines of Python, too - what's your point?

And it seems pretty silly to count the library code in when you talk about 3000 lines of C but not when you talk about the 10 lines of Python, *especially* when you actually rely on the fact that all Python really does is call C code in order to be able to assert that Python does not impose a efficiency penalty...

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 16:07 UTC (Thu) by RobSeace (subscriber, #4435) [Link]

Also, that presumes that .Net/C# is "nicer than C", which is something
I'd need some serious convincing to accept... But, I suppose it does
depend on one's definition of "nicer"... By some definitions, I suppose
you could say that Basic is "nicer" than C; but I still wouldn't want to
write any real-world code in it, either...

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 20:31 UTC (Thu) by mitchskin (subscriber, #32405) [Link] (2 responses)

Okay, yes, this one was subjective. I figured that the language/VM controversy that GNOME went through in spring 2004 was fueled by people's desire for something nicer. I mean, part of the reason that Miguel was so into Mono was that writing Evolution in C was painful. And that out-of-process Bonobo components didn't perform as well as he had hoped. It's not just the language, it's also garbage collection and the type/component system that I think was part of the draw.

At the library level, C is a good choice in a lot of contexts, but when you start writing large applications like Evolution that I think people really start to want something different. Maybe "core" was the wrong word; I thought people used it to include things like Evolution, which is how I meant it.

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 23:25 UTC (Thu) by russell (guest, #10458) [Link] (1 responses)

Is it any surprise that evolution is so buggy or difficult to write, when the authors idea of a fix is to blame the tools rather than the design. "Fixing C" is just introducing more problems, i.e. bloat, patent issues, dividing the community, etc, etc. And all for what, because they didn't want to change evolution's design.

The .NET API patent, mono, and GNOME

Posted Jan 21, 2006 15:32 UTC (Sat) by bronson (subscriber, #4806) [Link]

You're saying they wrote Mono because they didn't want to refactor Evolution??

hoooookay, if that's what you want to believe...

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 3:43 UTC (Thu) by njhurst (guest, #6022) [Link] (9 responses)

If we are looking at using a new language, why not consider far more powerful and elegant languages such as Haskell, Lisp, Ocaml or Mercury? Time and time again people discover that these languages pay off quickly, yet Gnome still argues about tired old C derivatives.

(A standard reply to this is that there are no significant gnome or kde projects to use such high level languages making it hard to justify a leap into the dark, but this argument is somewhat self-fulfilling)

actually the standard reply is ...

Posted Jan 19, 2006 4:27 UTC (Thu) by JoeBuck (subscriber, #2330) [Link] (2 responses)

... produce some code, and we'll look at it. You're asking other people to produce code in languages they don't know, because you like those languages. It doesn't work that way.

actually the standard reply is ...

Posted Jan 19, 2006 11:58 UTC (Thu) by rwmj (subscriber, #5474) [Link]

We're producing (proprietary) apps for clients in lablgtk2, the OCaml Gtk interface:

http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html

It works very well, and OCaml programs as just about as fast as C programs.

Rich.

actually the standard reply is ...

Posted Jan 19, 2006 12:46 UTC (Thu) by dcoutts (guest, #5387) [Link]

There's also Gtk2Hs. Having done both, I can assure you that it really is much easier writing GUIs in Haskell than in C.

The .NET API patent, mono, and GNOME

Posted Jan 20, 2006 12:59 UTC (Fri) by massimiliano (subscriber, #3048) [Link] (4 responses)

IMHO, those languages are very nice, but not many developers understand them (or any functional language).

You can argue that they should, but they don't, they think "imperative", and cannot see the value of closures, type inference & co, and just pretend that Haskell, Scheme and Ocaml are nothing more than useless intellectual contortions.

Mono has the potential to get the best of both worlds: C# as a language is anyway good for the "mainstream programmer", but the runtime and bytecode can easily support more evolved languages (and the existence of Nemerle and F# is a practical prooof of this). And having a common platform among languages makes things easier when you mix and match them (try using a Python library from, say, Ruby, and contrast this to using a Boo assembly from Nemerle, which is possible today).

And moreover, C# itself is evolving on the same direction...

The .NET API patent, mono, and GNOME

Posted Jan 21, 2006 16:29 UTC (Sat) by tzafrir (subscriber, #11501) [Link] (3 responses)

Isn't libc such a platform? Why abandon it and force Python, Haskell, Scheme etc. users to use the new platform?

The .NET API patent, mono, and GNOME

Posted Jan 21, 2006 22:32 UTC (Sat) by massimiliano (subscriber, #3048) [Link] (2 responses)

Yes, it is, but it is too low level.

If you think of it, each one of Python, Haskell, Scheme (and others) must implement two things: a compiler and a runtime system. And their runtimes and compilers are all incompatible (again, try using some Python classes from Scheme, unchanged: you can't).

In the .NET world, they should just provide a compiler, and bingo, you have everything you need, and full interoperability. It is the same goal of Parrot, but based on an open standard and an already mature platform...

I hope I made my point clearer... libc is OK, but it's not enough for this kind of goal, you need more, and the .NET ECMA specs provide just that "more".

The .NET API patent, mono, and GNOME

Posted Jan 25, 2006 2:44 UTC (Wed) by zblaxell (subscriber, #26385) [Link] (1 responses)

C++ compiler people (and sometimes even C compiler people) routinely fail to produce compatible runtimes between different versions of the same compiler for the same language, despite fairly strict architectural constraints. They apparently do this for performance or correctness reasons, or perhaps to implement new features.

How can we expect people working on *different languages* to produce compatible runtime code, without that code eventually sucking?

The only thing magical about i386 bytecodes (which is what most of libc is made of) is that it is seriously inconvenient to change; otherwise, there would be new versions of the machine language in the CPU just as often as new compilers come out today.

The .NET API patent, mono, and GNOME

Posted Jan 25, 2006 6:54 UTC (Wed) by massimiliano (subscriber, #3048) [Link]

How can we expect people working on *different languages* to produce compatible runtime code, without that code eventually sucking?

Fairly easy: the people interested in the languages do not produce the runtime code, they use the exisitng one (with clear specifications by ECMA and ISO) and produce only a compiler for their language.

Less work for language people, and less mess for everybody else. And BTW, their compiler does not need to be ported to any CPU architecture, it is the runtime that provides the JIT compiler (and also an AOT one if you want it).

Hopefully, we (runtime people) will provide a runtime that does not suck ;-)

At least this is the .NET vision of things (which, incidentally, is in practice also the Parrot one, even if IMHO .NET and Mono are more mature now).

The .NET API patent, mono, and GNOME

Posted Jan 26, 2006 20:44 UTC (Thu) by renox (guest, #23785) [Link]

-I don't know Haskell but if I remember well, it doesn't have a debugger, which is a big minus.
Also I also remember a guy who tried to make a poker server in Haskell and found it easier to use Erlang.
-Many people dislike Lisp due to its syntax.
-On a more personal case: I've tried to learn Ocaml and finally rejected it due to its syntax too. It's still easier on the eyes than Lisp, but apparently it's not gathering much momentum.. Maybe I'm not the only one to dislike its syntax.
-I don't know Mercury nor Erlang and I suppose many people don't either.

It's a bit like Pascal variants, there are some many different functionnal language that none is gathering steam, so it goes nowhere.

On a side note, Scala seems nice (never used it though), that's the first functionnal language I've read about that has a syntax which doesn't suck IMHO (it's not necessarily the first of course, I don't claim to know each functionnal language).
But Scala is too new to base a framework like GNOME on it..

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 4:00 UTC (Thu) by joedrew (guest, #828) [Link] (2 responses)

> Clearly, it would be good to start writing core functionality in something nicer than C

Might I suggest C++?

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 7:42 UTC (Thu) by ronaldcole (guest, #1462) [Link]

What? When COBOL is practically self-documenting? ;)

The .NET API patent, mono, and GNOME

Posted Jan 19, 2006 11:06 UTC (Thu) by ayeomans (guest, #1848) [Link]

And C++ also supplies backward compatibility for buffer overflows (:-)

The patent

Posted Jan 19, 2006 12:01 UTC (Thu) by rwmj (subscriber, #5474) [Link] (2 responses)

How on earth could someone have granted such an obvious patent?

Claim 1 is just for remote procedure calls, a technique which has been known and used in computing since the 70s (and probably earlier). Claim 2 is for all of client-server computing. Claim 38 (to pick one at random) covers what has been done in X11 since the mid 80s.

Rich.

um...that's what "application" and "rejection" mean

Posted Jan 20, 2006 4:20 UTC (Fri) by roelofs (guest, #2599) [Link]

How on earth could someone have granted such an obvious patent?

Perhaps if you were to go back and reread the article... ;-)

Greg

The patent

Posted Jan 25, 2006 2:55 UTC (Wed) by zblaxell (subscriber, #26385) [Link]

"How on earth could someone have granted such an obvious patent?"

The usual technique is to file the most broad and comprehensive patent claims you think you can get away with, and then respond to specific points as they are raised by the examiner. If the examiner is paying attention, then you address whatever objections they raised in the most minimal way possible. Lather, rinse, pay a few legal fees, repeat until the examiner isn't paying attention any more.


Copyright © 2006, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds