Tuesday, November 14, 2006

How to ask me for technical support

Note: If I sent you a link to this post, please please please don't take is personally. It is just my way of trying to keep up with things I do. Please read this post through and follow the instructions displayed here.

As some of my readers (why do I bother with plural form?) know, I manage several free software projects. Most notable of these are PgOleDb and rsyncrypto. These are the project that have actual users, but there are several other pieces of code I decided to post up on the net for everyone to use, or just projects managed by others that I have contributed to.

As you may also know, I am also founder and CEO of a small open source consulting company called Lingnu Open Source Consulting. This company makes money from providing services, such as support, for open source projects. These include general FOSS projects, such as Linux or Wine, but this also includes the FOSS projects written by me, on company time, mentioned in the previous paragraph.

Every once in a while, someone will send me an email, to a personal email address, with a question or a request for support for one of the projects I manage. This page is up mainly so I can explain how (and when) I answer such support requests.

In a nutshell, there are two types of support requests I will take.
  1. Each and every project I manage has a mailing list. The list is pointed to from the project's home page. Community based support (including by myself) is available, free of charge or commitment, on the lists.

  2. Current or prospective customers of Lingnu are free to approach me in private for specific requests for my time.

If I sent you a reply pointing you to this page, it usually means that you contacted me, in private, asking for support without offering to pay for my time. Such requests will simply not be answered. Either re-send your request to the mailing list (and, yes, most of the mailing lists I manage require you to be a subscriber, for spam filtering reasons), or specify that you are looking for commercial support.

One common mistake people make is to reply to me, in private, to emails with information I send in reply to emails sent to the mailing list. In other words, people ask a question on the mailing list, I answer on the list, and people hit "reply" and ask a follow up in private. When you answer emails I send to a mailing list, please be sure to hit "reply to all", so that the list will have a copy of your email. Failing to do so will cause me not to answer your email.

I hope this makes things clearer.

And Now the Why....

I know that this policy may seem arrogant. Alternatively, it may seem that my intention is to "dry out" the community support for my FOSS projects, so that people find themselves compelled to pay for my time. I am really truly sorry about that. Please allow me to assure you all that neither of these are my intention.

I would very much like for a community to develop around all of the FOSS projects I started, and thus, I do not wish to discourage using the community channel to get free of charge support. However, when a question is asked on the public mailing list, two things happen:
  1. All people subscribed to the list see the question, and get a chance to answer

  2. The question, and answer, get public recoding in the list's archive, and will subsequently get picked up by search engines

The above two are crucial for the development of a community that rely on more than my (very limited) time for support. Since asking me a question in private effectively prevents both from happening, I refuse to spend time on questions sent in private.

What Should You Do if You Were Directed Here?

The answer to that is very simple. Simply open your original email for editing, set the "to" to that of the relevant mailing list (please do NOT CC me personally), and hit "send". That's all. I promise you that I do my best to answer all questions arriving on the mailing lists for all of my projects.

If the email you originally sent was a reply to an email from me sent to the list, it's ok for you to CC me. Just make sure that the mailing list address is in there, and make sure to hit "reply to all" the next time you want to reply to my public emails regarding community support.

If you feel that you need me to dedicate time to your problem, and you are willing to pay for this time, and you still got a reply pointing you here, then allow me first to apologize. Please re-send the email stating, at the start of it, that you are seeking commercial support, and ask for a quote.

I'm hoping that this page serve to create better communication.


Saturday, November 11, 2006

Project Alky is dead

Or - why reinventing the wheel is not an automatically good thing to try and do.

A while ago, the internet (ok, just the FOSS world) was temporarily ablaze with talk of a new project. The project was called "Alky", and it was to do what Wine have not managed to do, even after over eleven years of development. It was to allow Linux users to run Windows binaries.

The reason I'm not giving a link to the Alky project's web site is not because I like Wine and I find the Alky's developers approach naive (and slightly arrogant). The real reason is that the project's web site is dead. On IRC, on the Freenode network, the #alky channel holds the following topic: "http://www.alkyproject.com/ - The alky project appears to be dead and cremated; the web site is gone, as was the channel for a while. If anyone knows anything else, please add it to the topic."

When alky launched, it spread healthy amounts of great promises. It said that Wine, while doing a decent enough job in it's own niche, is not fast enough to run games. They said that the reason is the need for each Wine process to communicate certain operations with the wineserver, and that they will preprocess the binaries so that this is not necessary.

Except, of course, they didn't. Instead they closed the project down, public interest nonwithstanding.

And the sad truth is that alky was pretty much doomed from the start. Here's why:
It failed to take on the experience of predecessors.

Wineserver, while indeed a performance bottleneck, has a function. Others (such as Transgaming) did offer other solutions to the same problem that wineserver is after solving, but the simple point of the matter is that some solution needs to be offered. Alky never got around to saying what their solution is going to be.

In a nutshell, Wine is composed of three major sections. One is the PE loader, capable of taking Windows executable or DLL, and mapping it into memory and resolving dependecies the same way that Windows does. The second is the wineserver, that allows synchronization between different processes. The third is the Win32 implementation itself. The last part is, by far, the greatest one. Over 90% of the code in Wine is taken by the implementation of the various DLLs that compose the thing amorphically called the "Win32 API".

Alky got as far as as implementing an alternative to the PE loader (which was done, in Alky, as a preprocessor for the files). It then defined the problem as 90% solved, and went public. As you can understand, the problem was, at best, only 10% solved.

So the project is now dead. Though it may not sound so from my post, I'm actually sorry to see it go like that. At the very least, it would have been nice to still have access to the work already done, and see whether Wine can benefit from it.

Alky, June 2006 - Oct 2006.