Loud ramblings of a Software Artisan

Friday 30 September 2005

Replies from the software vendor

A follow up on that potential GPL Infringment. Someone commented with the reply made by the vendor. The interesting thing is that neither Dom nor I have had any direct reply from them; they just e-mailed people that did e-mail them.

But here come the arguments:

"We do have test functions that use Cocoa, wvWare, MacLinkPlus and several others _to compare_ our output to theirs for quality control. Mariner Write will have paths to these source files in our project but the dead code stripper should remove all trace of code in our shipping version (if not, there would be hundreds of references to wvWare)."

Given that the disassembly I got was from the result of a gdb breakpoint, I would hardly call that dead code. The code was being run when I disassembled it. It is there and really there.

"With Tiger (OS 10.4) deprecating most legacy code we have started using cocoa."

The current version I have in hand, that is available from their website does not link against Cocoa. Here the output of otools -L which equivalent to ldd on Linux:

$ otool -L Mariner\ Write
Mariner Write:
       /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
       /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 47.0.0)
       /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.3.0)
       /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
       /usr/lib/libmx.A.dylib (compatibility version 1.0.0, current version 92.0.0)
       /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.0.0)

That's it. I did analyze published versions, because that is what matters. And it was done of MacOS X 10.3, because that is a version that the program run on.

Note that everything is just evidence I found, and the actually side by side code comparison of the assembly is for me sufficient. The "path" found was just a clue to start digging a bit, and probably the fatal clue.

Tuesday 27 September 2005

History of a GPL violation

Once upon a time, in the Free Software Galaxy there was AbiWord. AbiWord was the first Open Source word processor to have a decent MS-Word import filter, thanks to wv, the GPL licensed library from wvWare.

On some planet, there was a "sailor" who had a proprietary word processor for a proprietary operating system that didn't have the main marketshare, cruising through out the galaxy. That word processor was in need of a real word import filter. Circa 2002 the "sailor" released a version of his new ship, in beta, with a dynamic library wv. Immediately he was notified that using wv this way was a violation of wv copyright because wv is licensed under the GPL and not the LGPL, thus linking against it is considered as a derived work, and should comply with GPL.

The final version of his application got shipped with a separate application whose use was to convert MS-Word documents to RTF (note, it does not convert to their native file format). The source code of the application was released, but not the library source code, which had been modified. The following entry point from wv were renamed:

  1. wvInitParser
  2. wvText
  3. wvOLEFree

I won't take any risk and provide you with the renamed name, but be aware that they are stored.

It was in July 2002, and at that present moment the GPL is somewhat no longer violated. It must be noted that at this stage, Dom, who own the copyright of the code, offered the software vendor to purchase a license of the library with a licensing that was compatible. That offer got rejected.

In Frebruary 2003, a new beta version of the product is release. It now features a MS-Word import feature. So curious that I am, I start cheking, and a strings (1) on the binary reveal this string: wv-0.7.1/oledecod/oledecode.c which is obviously a path name to a source file of wv. That started looking suspicious. So I went further and deeper. It appears that the functions named above are still there, with the renamed name, and disassembling the initialization function of the parser really show the exact same logic as wv. I compared a few more and still the same clues. The assembly is not exactly the same probably because they use CodeWarrior as as compiler but later versions come closer as at one point they switched over to gcc, that I also use for AbiWord. Side by side comparisons show that code, but AbiWord has a few error message dumps in the middle. Last clue: some known buggy documents exhibit the same behaviour in both case (Actually wv has been fixed since).

So far, as of today, September 2005, the latest version of that application still apparently use this camouflaged wv version, and so far they never dared to reply to Dom's cease and desist letters. Far from accusing, evidence show a blatent GPL license violation, and in that case, their ignorance cannot be used as an excuse, They prefer to ignore rather than risking to be found guilty. I'm not giving their name because I don't want to advertise them.

I didn't talk about that publicly but Dom's statement made me do otherwise. Now that he disclose publicly I'm doing it too.

Monday 26 September 2005

I <3 Ubuntu

I really love Ubuntu, the Linux distribution. Debian packaging with a user / UI oriented setup.

I have been lately uploading a few package in REVU for inclusion in Universe. So far, the only one that went thru was dcraw that is just an updated upstream version.

Pending either needing work or due to the freeze are:

  1. hugin
  2. autopano-sift
  3. enblend
  4. libimage-exiftool-perl
  5. libiptcdata

You'll notice the trend toward digital photography tools...

And I'll attend Ubuntu Below Zero at least to some extent (I still haven't figured out about the days off).

Geek the planet

What could happen if you are a geek in the London tube...

Sunday 25 September 2005

Lies, lies, lies

Microsoft, in a letter sent by Alan Yates, showed that their only defense now against the decision of the state of Massachussetts to go with OpenDocument, is to misinform. And one of the obvious misinformation is pretending that KOffice is based on OpenOffice.org code base. Maybe it is just a lack of information from their side. But it is what it is. See the KOffice Open Letter to reply to this obvious mis-argument.

And also read Newsforge and Tim Bray replies to the other arguments.

Original link: ruurd blog

Thursday 22 September 2005

Viruzilla

Some moron decided to post a virus for Windows in AbiWord's bugzilla. Since we can't delete attachment in bugzilla (with good reason), I went to set the attachment blob to null using the following magic in MySQL:

mysql> uses bugs;
mysql> update attachments set thedata="" where attach_id=1234;

Replace 1234 by the real attachment id as shown in the web interface. I didn't delete the actual row because I didn't want to risk the database to be inconsistent. I also disable the guilty account. Lately we have had two person posting "test" bugs...

And to paraphrase Nat, this person gets my middle finger of the week.

Another camera using DNG

Ricoh GR Digital is another camera that use the documented DNG file format for RAW files. After Leica Digital module R and Hasselblad digtal backs for medium format cameras. But the Ricoh is the first to not be in the top end price range, ie much less than $1,000.

Wednesday 21 September 2005

Copy unprotected CDs?

Message about copy protection on CDs, or lack thereof.

We learn that:

  1. artist do not have the choice. It is the disc company.
  2. that non Windows users are somewhat safe with some protection systems. The lack of interest for Linux and *BSD will still keep us apart at some point, happily.

That is not news in fact. But perhaps people should really start to care? Fortunately the success of the iPod might help moving in that direction as no one provide iPod ready CDs (they all give proprietary DRM WMA file which put customers into a vendor silo), and with the copy protections making things less easy for iPod owners, they might get annoyed. I myself am careful to not buy any product of this kind. I stick to oldies :-)

Tuesday 20 September 2005

TWiki to MediaWiki

I started to implement what I was talking previously: migrating from TWiki to MediaWiki. The tools are Perl, Rcs, DBD.

I decode the TWiki topics, now I need to understand the MediaWiki SQL schema to feed it.

Why am I doing that? To move away from TWiki for AbiWord. Off course, I'll release the code once it is done.

Apple closing XML file format?

Tim Bray point out that Apple release the documentation for developer around iWork, their office software suite including Keynote 2, the presentation software and Pages, the DTP/word processing software.

The documentation states:

This document does not describe the complete XML schema for either Pages 1.x or Keynote 2.x. The complete XML schema for both applications is not available and will not be made public.

Wow. I love so much openness. Keynote 1.0 had an open format, but not Keynote 2.0. OK it is XML so more readable than binary files, but it is still lot of work to reverse engineer.

That remind me when I requested Apple the AppleWorks file format documentation. The reason why they didn't want to provide it is "we don't want people to write buggy documents that would crash our software", which is the opposite from Macromedia about flash b.s. (read on, I got it as a comment).

Now people brought the debate in the mailing list. Apple product manager reply is awesome:

We're not trying to sell iWork to CIOs and government agencies that are pursuing long-term document archival strategies a la Office XML. We're selling it to consumers and creative professionals who want Apple's legendary ease-of-use and innovation.

So because you are not a fortune 500 or a government you are not allowed to recover your data later? So much for the lost manuscript of some famous (to be) author (Jules Verne for example whose manuscript written in the 19th centure was found and publish in the mid 90's of the 20th century), etc.

Sorry Apple, but you are making yourself ridiculous. Even more than Microsoft, because in that case you don't have a de-facto monopoly associated to a vendor lock in.

Monday 19 September 2005

Various news bits

A few interesting bits of news I have found:

  • Kingsoft is "attacking" Microsoft by offering a low-cost-cheap office software for both Linux and Windows in Chinese. Its target is to compete with the "pirated" versions of Microsoft Office that you find in China for $2... And who said illegally copied software were harming companies like Microsoft?
  • Mark R Hinkle likes AbiWord. Mark R Hinkle is vice-president and CIO of Win4Lin and LinuxWorld Magazine Editor in Chief.
  • Dave Coursey give his strongly biased opinion about the commonwealth of Massachussets going with OpenDocument. I'm far from agreeing with all the content of this article. For him it is people who should adapt to Microsoft goodwill (remember they were the one that pulled the documentation off the web because people where using it to compete) and the the other way. For me the decision is a good thing.

Wednesday 14 September 2005

Hidden API for MacOS X

As I mentionned before, Apple released WebKit as an open source project. WebKit is much more than WebCore, as it also contains all the MacOS X specific rendering code for the HTML engine that is KHTML. I was enjoying to have a look at the code as it would should me how to achieve a fast text renderer on MacOS X like I need for AbiWord (currently, AbiWord text renderer is really buggy on MacOS X).

So I took a deep breath and dug into the code. I'm getting depressed.

First it looks like there is not one true way to render text as they have 2 methods to draw text with 2 different cases that they determine with shouldUseATSU() based on the content of the text run. From what I can say (comments are really sparse), it depends of the Unicode chars to be rendered. But they have a switch back when alwaysUseATSU is set to YES that makes ATSU being used all the time. I wonder if Safari doesn't set it all the time using the "private API". But why? Is using CoreGraphics directly way faster but much more limited? That what I'll try to figure out.

At one point I thought about using CoreGraphics, but in 10.2, the API do not allow to draw non ASCII char, or you have to get CGGlyph, which seems to be uneasy, and the font selection does not seems to be doable from a Cocoa NSFont as there is not method to get a CGFontRef from a NSFont. All the searches on google point to an undocumented method from NSFont, but as always, avoid that is it might break in future releases.

So I had a look at WebKit, and they use WKGetCGFontFromNSFont. Perfect. I look closely and realise that this function is in a damn libWebKitSystemInterface.a binary ! Yes. No API for a much needed feature, and when Apple's open source code actually need it, it is in a damn closed binary library...

Now getting the metrics fast. Same thing. Private function in the binary library.

Why can't Apple release this APIs ? Question about how to do that has been asked for years on various mailing list with Apple engineer always responding the same B.S.. With this they demonstrate that these APIs are usefull, so why do they have to be kept secret? I can't use a binary library like that for AbiWord.

I filed bug 4257530 for that, without any hope.

And years ago, there was an attempt of a lawsuit to Microsoft for the use of unpublished Windows APIs to stiffle the one bit of competition they can't stand for...

Tuesday 13 September 2005

Ads for SUN that you won't see

Sun posted their rejected ads, which proves that the advertising staff has a lot of humour....

Perhaps we should start to design some for GNOME or AbiWord :-)

Friday 9 September 2005

Know your enemy

There is an old proverb: "Know your enemy to better fight it."

For Microsoft, one of the enemies is the Open Source movement, with Linux as a head (remember, more than 50% of the webservers on the internet run Apache, and in that number, a really good number is on Linux). So in order to comply to that strategy, they apparently tried to hire Eric S Raymond, after having successfully hired Daniel Robbins, Gentoo Founder. ESR declined, with a good reason, but the fact that Microsoft offered to hire him at one point prove that they are willing to try to:

  1. understand Open Source better
  2. hire Open Source contributors to tie them up and have stop them to contribute

This leads to the second proverb: "Don't beat them, join them." Looks like they are trying to move smart to undermine the whole Open Source effort. "There are things that money can't buy. For the rest, there is Microsoft".

Off-course, this is only gratuitous speculation. Perhaps they just want to release Windows as Open Source Software and are seeking for advisors :-)

Thursday 8 September 2005

New iPod, new tax ?

Yesterday Apple announced a replacement of the hard-drive based iPod Mini by a flash based iPod Nano with similar capacities.

But new iPod, new taxes in France. There have been some complaints about the iPod-dollar being 60% more expensive than the real USD. First the the iPod price in France include 19.6% VAT, which allow us to account roughly 20% of difference with the displayed price. In US or Canada, the displayed price does not include tax. But there is also something interesting: the "tax" for private copy is also completely different. According to hardware.fr, the "tax" on a 4GB hard-drive iPod Mini was 9.57EUR, while on a 4GB flash iPod nano, it is 51.44EUR because it is flash memory. Do you find that fair?

For once Apple is not to blame. Lobbies are.

Fortunately in Canada, the levy has been declared void, and you can even get a refund.

Wednesday 7 September 2005

The AbiWord font bug

I have been working on bug 6616 today, bug that involve a problem with font metrics. Here is the visual problem:

You see that Times is drawn under the font baseline, on the descent line. I have checked the code, and the metrics returned, everything seems to be normal, as prove the line that are drawn. Weird.

Positive side #1: I found a huge bug that does not seems to have had a huge consequence: AbiWord graphics code draw strings with the Y origin on top of the bounding box, while Cocoa does it on the baseline. Update Sept 12th, 2005: No, this bug above is not a bug. I just misread the documentation

Positive side #2: I started to look at WebKit source code. Exactly what I wanted, I should have looked at it sooner: they have a complete text rendered, and since it is fast, it is worth looking at. But looking at hit gives me some head aches. Wow it is really damn complicated (the code is nice and readable however). Something that upset me is the hack involving "Times" and "Times New Roman" fonts with this comment (WebTextRenderer.m):

// Special case hack to use "Times New Roman" in place of "Times".  "Times RO" is a common font
// whose family name is "Times".  It overrides the normal "Times" family font.  It also
// appears to have a corrupt regular variant.

Does that mean that Times is corrupted?

Tuesday 6 September 2005

Why I hate Flash?

Sometime I really get asked why I hate Flash? Question come from people not using Free Software and that "find Flash cool" because "it allow such cool things", or from people that clain that since it is really widespread, it can't be that bad... That last argument is seriously flawed, because viruses and spyware are really widespread, but they aren't any good. If that argument was true we would all be eating fecal matter.

Here is a summary:

  • Flash breaks the principle of hypertext because. It is often mis-used to replace HTML and/or pictures in an open format, and that complete breaks the principles of the World Wide Web set for hypertext navigation accross documents.

Can I use the File Format Specification to create a SWF interpreter or player?

No, the File Format Specification is provided for the specific purpose of enabling software applications to export to the Macromedia Flash File Format (SWF).

In short you can download it, but you can't use it to make your player. That breaks the rules about IETF standard or w3c standards. Wait. It isn't one, but some people tends to believe it is.

2 b. You agree that Macromedia may audit your use of the Software for compliance with these terms at any time, upon reasonable notice. In the event that such audit reveals any use of the Software by you other than in full compliance with the terms of this Agreement, you shall reimburse Macromedia for all reasonable expenses related to such audit in addition to any other liabilities you may incur as a result of such non-compliance.

Well not exactly, as it is only if you infringe their unclear licensing terms about usage. Unclear because they talk about desktop, not laptop, etc. And on the otherside, it is buggy, it crashes, it mess up with your sound card on Linux (freezing the browser), and stuff like that. Bad quality, that no one can fix.

I see people saying "But there are free (open source) Flash viewers!" As far as I know they don't even support correctly the previous format that were documented, and no one can't blame them. But it is useless as everything is Flash 6 or 7. If you want to know more go to Open Source Flash. I can see: Flirt which does not seems to be anywhere, GPL Flash which seems to have started again, swfdec that gstreamer use and that people seems to be happy with even if it is far from working everywhere, and gameswf which does support Flash 6 to some extent according to its own documentation... Don't take that as a bashing of these projects, it is not, and the only thing I can do is be pragmatic.

  • Flash does not make the content really accessible to people with visual deficiencies. That for all these website that think that it is a good idea to use Flash for navigation. And I'm talking about website from public institutions, those paid with tax payer money.
  • Flash does not cope well with search engine. Well I personnaly don't care, I don't use Flash, and don't intend to ever use it.

Some random googling bring some random and valid argument as well as examples: A well known camera manufacturer, about his product, even more goes to ask you about having it, while it should just "detect it". So much for marketing. Same marketing studies that show that 80% of the consumers hate Flash intros. I don't if it is true, but I'm one of these.

I really hope Adobe kick Flash to the curb with the merge. The only positive thing with Flash is that lot of ads are made with it, so without Flash I don't get bothered with the ads.

But how can we replace it?

  • For vector graphics, use SVG. But most of the time you shouldn't need vectors.
  • For images, JPEG. I have seen people using Flash to make slideshow of pictures...
  • For interactivity: HTML + CSS + JavaScript, w3 compliant.
  • For sound? Just don't. There is nothing more annoying than sounds on a webpage.

And the last question: when will Microsoft screw up things more by bringing their own version since they missed the Macromedia purchase deal?

Friday 2 September 2005

GNOME Canada

With the help and influence of Behdad and desrt, and jdub as a BOFH, we have created gnome-ca-list to discuss about GNOME in Canada. Feel free to join us.

That is the starting point to officialize GNOME presence in Canada.

The announcement of UbuntuBelowZero in Montreal is also a good news as there is not enough events happening here.

And if you want to find a reason to visit Montreal (like if you needed one), Linux Expo will be held on October 26 and 27 2005 in Montreal. More info later.

Thursday 1 September 2005

Grammar checker in non-English

One of the new features of the upcoming AbiWord 2.4 is the English grammar checker based on Link Grammar a free software syntax analyzer for English. But here comes the question:

Does anyone know a grammar checker for other languages, like German, Spanish, French, etc. that would be available under a Free (free software) license?

There used to be a proprietary French grammar checker named Correcteur 101, but since 2003 it is no longer developed on Linux for Intel (I think they also had a PPC version).

Computing in motion

New laptop seems to have motion sensors for various usage.

Robert Love has written a driver for the IBM motion sensor as well as a couple of hacks: a GNOME applet, a GL viewer

But it does not stop there.

Johannes Berg announced that he had reverse engineered the driver from MacOS X for the Apple Motion Sensor found in some PowerBooks. Stelian Pop wrote an experimental HID driver and Amit Singh put up some documentation about using these devices.

Now guys you know what is left to do: merge all these things so they can have the same APIs so that we can all use motion sensor when they do exist whatever the platform we run on.

And I need a new laptop...