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.
|