A note on further development and maintenance

As main author of aRts, having after some time finally come to the conclusion that I won't continue to work on the project, I think its better to announce this publically than to walk away silently. Thus, whoever wishes to carry on work or rely on the code will also have an idea on the reasons why I no longer work on it. In general I hope that this contribution to the free software community has been beneficial, and might continue to be so, to those who wish to use it as a whole or its parts.

So why do I discontinue working on it at this point?

Two years ago, I became really distracted by real life issues, so that I was unable to find time and patience to work on the code at all for quite some time. Now, that I again have the time and patience to work on stuff, I find myself no longer sharing quite some of the basic assumptions that led to the design and way of the project, so its probably better not to continue - as Richard Stallman said at some point: "if you're not happily working on your free software project, its unlikely that you will produce great software, and then its better not to work on it" (I quote this from memory, so maybe the wording is not exact).

So what are the basic assumptions, and why do I no longer share them?

"I told you so..."

Thanks for doing it, its quite helpful if not everybody just says "great software". In fact, there also has been some criticism from users and developers. I think its always this way when struggeling for the right thing to do, there are arguments for doing it this way or the other. I wouldn't even say that aRts has no shining aspects of its design; while this text may not really emphasize the strengths it has, I still think it does quite some things quite well. Its just that I find other ideas more promising to work on right now.

So how to proceed from here?

Personally, I will continue to work on free software, as time permits; some of the ideas I have developed while working on aRts will go into BEAST - a pure music synthesis software - in fact, you'll find much of the ease of defining plugins with an IDL based system in BEAST already (I put some work in the idl compiler), and the first aRts plugins have been ported, I am working on fresh synthesis plugins for it.

BEAST has also much less the problem that it tries to solve lots of issues at once; it does music synthesis, and only this; which allowed Tim Janik (the main developer) to already come up with an impressive GUI, compared to what aRts has, in much the same time frame I spent on working on aRts. As it seems a bit inconsequent to switch from KDE to Gtk based development to some people, I can help to provide what needs to be provided to develop applications based on the BEAST synthesis core - BSE - with Qt, if somebody is interested in working on a Qt GUI. I have put some work into plain C++ language bindings already.

However, the sound server and media framework question I will have to leave to others; as for the first one, I'd recommend a pure sound server, which is not too heavy, so that it may possibly become a standard shared by GNOME and KDE; MAS or Polypaudio come to my mind, but there may be other interesting candidates.

As for the second one, I think a media framework like GStreamer might be useful, which can handle both, audio and video, and should be bindable to Qt, thanks to the object technology, whereas for GNOME it is already a native approach. There may be other candidates here, too.

In either case, I don't think desktop specific solutions make sense; whatever gets used should be shared. Just imagine how unconvenient it would be if KDE and GNOME would use different, incompatible X servers.

For a media framework, for some time it might be useful to support multiple solutions or leave applications the choice; for a sound server - as discussed above a "one size fits all" approach may not even be useful. Rather, it might be possible to standarize on a common API to output sound (for most applications, that is; music applications and other sound intensive code may still need to access the low level APIs directly), and then leave the choice of the sound server (or no sound server, as in the case of hardware mixing or kernel mixing) to the user.

I have once designed CSL together with Tim Janik to become such a common API for sound, and we wrote a paper about it, but we currently don't actively work on it; however, I have been pointed to PortAudio, which might be another candidate for a common API for sound, and ALSA, which although not currently portable to other UNIXes (and thus, uninteresting for a portable desktop such as KDE) may be portable in the future. Again, there may be other candidates.

As for the time frame to migrate to something other than aRts, KDE3 is still bound to support aRts by binary compatibility restictions; KDE4 might make fresh choices. However, as the philosophy for KDE has always been: "those who write the code make the design decisions", I will leave the choices KDE makes to others.

aRts maintainance and support

Of course, there is some kind of gap now, which means

might not be handled by me any more. Maybe somebody else might want to take over some or all tasks; maybe not. At least I will try to respond to mails to me from people who try to do work on aRts, as I see that sometimes no documentation exists.

I know that some other people involved one way or the other with KDE have already started filling the gap, during the time I didn't work too much on aRts, and I hope everything will continue to go well.

Stefan Westerfeld, 2.12.2004


links by topic