Logo

Issues

Mar - Oct 2005

Feb 2005
Jan 2005
Dec 2004
Nov 2004
Oct 2004
Sept 2004
Aug 2004
July 2004


Links

Syllable
OSNews

January 2005 Newsletter

Syllable is an in-development open source operating system for the home and small office user. The Syllable Development Newsletters are condensed reports on the past month's activity -- highlighting progress made and other project updates. For previous months, please see the links on the left of this page. Red text below denotes direct quotes from developers.

There were 264 mailing-list posts in January. Plenty of developments all over the source tree this month -- the CD-writing support, kernel work and and Glibc news shifting the project along at a great pace. All the details ahead...

Contents




1. Looking ahead to 2005

As Big Ben's bell bonged to usher in a new year, project lead Kristian Van Der Vliet posted some thoughts on where Syllable is going and what he hopes it will achieve in the coming 12 months:

Happy New Year to everyone in the Syllable Community!

While 2004 still has a few timezones to go as I right this, the datestamp is 2005 and that's good enough for me, so I thought I'd wish everyone a happy new year and talk briefly about Syllable in 2005.

The 0.5 development versions will draw to a close in a couple of releases time, at the current rate of development. This means that we will have a documented and stable libsyllable API which will be labeled version 1.0 and future versions will maintain API compatability with 1.0 As a user this won't have much of an impact, but developers will have a solid target to aim for when writing applications. The end of 0.5 will also mean that we have completed the foundation work which was needed to bring Syllable upto date from the older AtheOS codebase, and many aspects of Syllable should stabalise.

So we will begin with 0.6 at some point, probably close to mid-year. For those who havn't checked the roadmap synopsis on the Wiki, 0.6 will mean ibnet, lib2d, dial-up/PPP support, printing and more. I hope to be able to merge SylSec during 0.6 and start work on cleaning up and tweaking the look of the widgets. 0.6 will probably bring new languages and binding for Syllable system libraries.

I am also going to make myself a personal New Years Resolution. At the end of 2005 I want to be using Syllable as my primary system. For me that means ABrowse must stabalise and improve (Very slightly, though) and I need to make Whisper better. There are a handful of missing tools I sometimes use (E.g. a PDF viewer), but those gaps can be filled. Most of all we need to stabalise Syllable and AFS, so that I can be confident of not losing my work in a crash. So this is the goal I will work towards!

Anyway, enough from me. Happy 2005 to everyone!

Looking back at early 2004, it shows how much excellent progress has been made in a relatively short space of time. The project is seeing new ideas, new developers and plenty of new code -- so hopefully Vanders' goal will be met by Christmas.




2. Various updates

Lots of small changes, patches and updates all over the project this month. Arno Klenke continued his work on the media side with a bunch of fixes:

I hope I have finally fixed the coldfish bugs that caused crashes when playing audio cds. I have also fixed the i855 video overlays.

The updates are available here:

http://www.liqwyd.com/arno/media.zip
http://www.liqwyd.com/arno/video_drivers.zip

PS: I have done a lot of debugging work to get the smp problem fixed. I haven't found a fix yet but it seems that somehow the registers can get corrupted during context switches.

Damien Danneels and Vanders found success playing music files, while Mike Saunders' laptop video problems were now fixed. Meanwhile, Vanders rewrote image viewing tool AView from scratch to take advantage of new libsyllable features. His changelog:

o All new code using the Image classes now available in libsyllable
o A new GUI, complete with toolbar.
o Far less bugs, much more stable
o Handles multiple files gracefully, creating a list of files that you can navigate forwards and backwards through.
o Keyboard shortcuts; Spacebar, Cursor Up and Cursor Right are "Next image", Backspace, Cursor Left and Cursor Down are "Previous image"
o Registrar-friendly; automatically creates filetype entries for PNG, JPEG and GIF files.

He uploaded the source and executable. Additionally, Vanders created a replacement for the sound mixer, together with a Dock plugin for changing the volume (quicker than firing up a separate app). He also wrote a patch for both the new desktop and libsyllable which saved the status of mounted drives and re-mounted them on next boot. Kernel-wise, Arno announced some of his recent changes:

* Added an option disable_acpi=true to disable the acpi madt scan.
* Removed the reflect_irq_to_realmode() call when no handler for an irq is registered. I don't know why this call has been there (probably to pass interrupts to dos tsr programs in the early days of atheos... ) but removing it doesn't seem to change anything on my system except that it saves a lot of switches to realmode.
* Removed some cli()/put_cpu_flags() calls from smp.c and timer.c. These calls were unnecessary because the functions were always called with disabled interrupts. And yes, this makes the kernel bootup on my bochs-smp setup when compiled with -O2 or higher!

http://www.liqwyd.com/arno/kernel.zip

Kernel-meister Jake Hamby and others discussed some of the details. Lastly, Nicolas posted with some info on his port of ImageMagick -- a popular oldie from the UNIX world for tweaking and converting image files:

I've compiled the latest version of Image Magick for syllable. The archive is a but huge as I haven't yet looked to create shared libraries and so the "utilities" directory contains redondancies:). Could'nt login to Kamidake, so I have put the tar.gz file in allatheos.free.fr.

I've also tried to compile the 6.1.8 source with Builder as a new package has been check-in in CVS, but it failed to compile (don't look further). The original patches were 2 changes for "config.sub" and "config.guess" in the Image Magick source directory.




3. DP83815 network driver

Vanders announced his work on a new network driver, adding to the broad range of NICs supported in Syllable. The driver was highly experimental rather than production-ready code:

I've forgotten to pick up my latest Glibc source to work on here for the last two days running, so for a laugh I've had a go at porting the National Semiconductor DP83815 NIC driver to Syllable. It's an amalgamation of the natsemi.c driver from Linux 2.6.5 and the SiS900 driver for Syllable. The result of the last two days work is available from:

http://www.liqwyd.com/syllable/dp83815-bin.zip
http://www.liqwyd.com/syllable/dp83815-src.zip

There are caveats: I don't have a DP83815 NIC so it is very much untested. Just to make things even more interesting, this is the first NIC driver I've ever ported, so it could be just downright wrong in quite a few places too. The only things I can tell you with certainty are:
  • It compiles.
  • It didn't detect any DP83815 cards on my computer.
  • It didn't blow up the kernel when it failed to detect any cards.
  • I'm not as good at this as Michael Krugger or Arno are.
So I'm looking for a brave DP83815 owner to give it a trial; suitable cards include the Netgear FA311 and FA312 fast ethernet NICs. I strongly suspect that one of two things will happen; it won't work, or it'll crash and burn. There is a passing chance that it might work, but I wouldn't bet my house on it. What fun it will be for you to find out though?

Work continued throughout the month; by the 19th, Vanders had debugged most problems with the driver and had it functioning fairly well on a Netgear FA311. He uploaded the new version (http://www.liqwyd.com/syllable/dp83815.zip) and asked others to give it a test run.




4. CD-writing now supported

In his quest to make Syllable his primary OS by the end of the year, Vanders started work on implementing CD-writing support. Even though it's at an early stage and needs to be operated at the command-line, it's a good foundation for further work -- eg a graphical front-end. Vanders' post:

Well I guess that if I'm going to stick with my resolution of using Syllable as my primary OS by the end of the year, I'll need to be able to burn CD's. So I've ported Cdrtools-2.01 to Syllable and added a raw packet interface to the ATAPI layer.

I've just done my first successful tests, so I thought I'd let everyone else play too. First of all you'll need the patched ATA driver from http://www.liqwyd.com/syllable/ata_cdrecord.zip Unzip it and run install.sh, then reboot.

You'll also need the cdrtools package, which includes cdrecord, cdda2wav and mkisofs (Among others). The package is available from http://www.liqwyd.com/syllable/cdrtools-2.01.bin.1.zip

He added a few notes (basic testing had been done, but some scary-looking lines could appear in the kernel log). Shortly after he announced further work on the ATAPI code, adding DMA support, while others looked into DVD-writing tools.




5. Scheduler tuning

Although Syllable's desktop is very snappy and responsive, some of the underlying algorithms were getting on in years and could be updated to utilise new research and developments in other OSes. A bunch of threads started with Vanders discussing his initial efforts:

I've played around with the scheduler today, to see if I could find a solution to the thread-starvation problem. I think I may have a workable solution, which although it is not a complete rewrite as an O(1) algorithm, it does fix the problem.

I've modified the scheduler to use "dyanmic" priorities for each thread. The dynamic priority is calculated for each thread every time the thread execution is completed (E.g. the thread is pre-empted). The algorithm simply works out the amount of CPU time being used as a percentage, based on the time the thread was created (It's total life-time) and the total CPU time it has used so far. If the percentage is deemed to be too high, it's dynamic priority is lowered, using a sliding scale. Well behaved threads which use less than 50% CPU time are re-issued with their "static" priority, which is the priority given to the thread at creation.

He continued with a detailed description of the changes and their effects, stressing that it was experimental code. Daniel Gryniewicz and Vanders discussed some of the technical issues; later on, Daniel posted some info on his own work:

Here's the first in a series of cleanup patches for the scheduler. This is all (hopefully) preperatory to porting Con Kolivas' staircase scheduler from the linux -ck kernel. This is the scheduler I use on all my linux boxes, and it's absolutely great for desktops.

At anyrate, I went about these first two patches backwards. The first patch introduces a new, typesafe list primative, and uses it for the scheduler's thread queues. This should give a slight increase in speed, but it's mostly so I can play around with the queues with a known correct set of list primatives. These are the same list primatives I used in the tmpfs driver. The second one is documentation and some cleanup. I know, they should have been the other way around, but...

Attached is the patch and the list header, which is assumed to be in inc/list.h

I've tested this fairly thouroughly, and it works. The second patch will follow after I've finished testing it. After that, my third patch makes all WaitQueue_s objects use the list primatives as well. After that, I'll start making actual changes to the scheduler.




6. More Glibc progress

Glibc, the GNU C library used throughout Syllable, has been starting to show its age; as a result, Vanders had been working on updating it to the latest release (see earlier newsletters for details). Things were starting to come together -- Vanders posted a promising announcement:

This http://www.liqwyd.com/syllable/glibc233-test1.png may not look exciting, but it is a real, bonafide Syllable application running on top of Glibc 2.3.3 (You have to really pay attention to the screenshot, or just take my word for it!)

This means that the following components are working:

o Glibc 2.3.3 itself, at least 99.9% functional o Gcc 3.4.3, which includes libgcc_s.so.2 and libstdc++.so.6.0.3 o libsyllable.so.6 when built against Glibc 2.3.3 o The C & C++ environments are correct I.E. _GNU_SOURCE is now correctly defined, identical to Linux

Busy as a bee, Vanders followed this up four days later with more fixes and updates:

I have successfully compiled and run AView 1.1 against Glibc 2.3.3 Therefore it is time for me to announce the immediate release of Glibc 2.3.3 for Syllable Beta 3, available from http://prdownloads.sourceforge.net/syllable/glibc-2.3.3_beta3.bin.1.zip?download

*READ THIS*

This is a developer release only. Do not install Glibc 2.3.3 if you do not intend to develop with it, or test against it. If you are a developer YOU SHOULD INSTALL AND TEST WITH GLIBC 2.3.3! Baring major problems we WILL be shipping Glibc 2.3.3 in Syllable 0.5.6, and Glibc 2.1.2 will be removed with the release of Syllable 0.6.0. This means that you will have only a couple of major releases to ensure that your applications can be compiled and run with Glibc 2.3.3, so it is in your best interests to start now.

The (35Mb) package includes:

o Glibc system libraries, libgcc_s.so.2, libstdc++.so.6.0.3, libz.so.2 and libsyllable.so.6
o Glibc 2.3.3 headers and static libraries
o Gcc 3.4.3
o JPEG and PNG translators for libsyllable.so.6
o A simple test suite which can be used to verify your installation

Debug symbols have been left in most libraries so far, as they can be useful during debugging, which accounts for the size of many of the DSO's.

Vanders also listed some of the remaining bugs, along with some notes on debugging. Without doubt, wrestling with a huge piece of software like Glibc isn't fun, so it's great to see the hard work finally paying off.




7. Parallel preloading

Martin Olsson proposed an intriguing idea relating to desktop usage, and countering one of the annoyances users typically come across:

Here is an idea for Syllable which I think can give Syllable an edge if it's implemented right. Unfortunately I do not have the C++ nor Syllable skills to implement this yet, but hey it won't hurt if I share a good idea right?

The one thing I always wished for x-mas but never got it this:

First the bad case (how it today afaik):
1. I click the .doc in my browser and select "open with BLAH_PROG"
2. There is some waiting while it's downloaded into doh.tmp
3. The browser executes "BLAH_PROG doh.tmp"
4. There is some waiting for the app.
5. My doc is done.

Here is how I always _wanted_ it to be instead:
1. I click the .doc in my browser and select "open with BLAH_PROG"
2. The browser tells program BLAH_PROG to launch and wait for a doc
3. Now I wait for the .doc to download parallely to BLAH_PROG launching
5. My doc is done.

See how this would save a lof of time, especially when viewing docs from servers with highload (low bandwidth) and on a client with little RAM (long launch time)? This is something not even Windows has yet!

Brent P Newhall put forward his thoughts on the matter:

A very interesting idea. However, this will have to wait until the implementation of inter-application messaging. As I see it, the browser would launch the word processor and tell it "a file will be coming; wait." The word processor would load and display a "Waiting..." message in the middle of its window. Then, when the browser finishes downloading the application, the browser would send another message to the word processor, saying, "Here's the file you were waiting for," which the browser would then load.

Another solution would be to mandate that all applications for Syllable must load in under two seconds on a standard computer system (which we would define). I'm serious.

Bill Sanders have a thumbs-up to the idea, pointing out that Opera started downloading files as soon as a user had right-clicked on them, while Damien Danneels looked at interaction between the app and the browser:

I agree. The app should launch and become visible under the "download progress" dialog of the browser. If the user cancels the download, he will have to close the app.

The launched app should not be blocked by a "waiting" message.

We could even start downloading the document when the user right-clicks on it (or even when the mouse is over it for a more than 2 seconds for exemple...)

A problem : how to be sure of what program to launch ? Can we rely on the mimetype returned by the server ? Should we wait for the first bytes to be downloaded to get a signature ?

Such an idea certainly has plenty of potential, although getting it spot-on without wasting time and/or bandwidth would be the tricky part of implementing it.



Edited by Michael Saunders. If you have any other Syllable-related news, just drop me a line.