Friday, July 17, 2009

General Project Status

I get asked a lot what the project status is, and when i can release a beta. First let me say that this question is rather pointless. No, not because I want to be cruel and keep it a secret. It's because I really do not know and have no way of knowing. I work on this in my free time, so while I can estimate the percentage completion of the project, I cannot estimate the time remaining because I do not have any hard time commitment to this project.

That being said, it is also worthwhile to point out that normally a whole modern OS (even a simple one) is work for hundreds of engineers and a year or two of work, while I am just one guy and working in my free time.

The heart of any OS is the kernel. It provides memory, scheduling, storage, and arbitration of other resources. DGOS kernel is written from the ground up by me over the last few months. IT provides full protected-memory processes with multitasking and support for multiple hardware storage and filesystem drivers. It has a plugin architecture, which functions in a way not unlike the way microsoft windows drivers work. The kernel works, and I do not forsee much more work in it coming up, since all new things will be loadable kernel plugins, and not work on the kernel itself. The kernel is written in C and arm assembly and is compiled by the metrowerks codewarrior compiler. All plugins have to be compiled by GCC. (There is no support in CodeWarrior to produce working plugins, though with enough effort, it can be done)

Close to the kernel are the drivers. They provide various services and methods to work with hardware. DGOS kernel currently best supports the PXA270 processor (such as the one in a Palm LifeDrive). There are drivers for timers, real time clock, LCD, sound and touchscreen, the notification LEDs, the built-in hard disk, and the SD card. This, of course, leaves out WiFi, Bluetooth, and USB. Work on USB is ongoing, and WiFi and bluetooth will be done later or provided by PalmOS drivers wrapped in special DGOS wrappers (not unlike ndiswrapper does on linux). Currently written drivers are in the kernel, all future ones will be loadable plugins.

Above the kernel sits RtLib. It's the userspace library that wraps the usually-strangely-called system calls into ARM-EABI compatible function calls, as well as providing basinc runtime services like heap management. You can read all about it in a recent post about RtLib => [here] <= . RtLib is still being written, but it already provides many useable things, and simple apps have run on top of it.

Userspace apps run on top of RtLib and may use any number of other libraries, as they wish. Currently two uch libraries exist. The DGOS port of jpeglib (which is interesting in that it required no code changes and built form the original source just fine, and ran) and GfxLib (which is a simple library that currently provides abilities to draw rectangles, lines, circles, and a very very simple fixed-width font). In the future it will probably be expanded slightly, but in general it's expected to be the basic simple drawing library.

The UI will be provided by UiLib, which still needs to be written. Luckily this is not a huge effort, since a lot of SkinUI code can (and will) be reused for it.

PalmOS compatibility will be provided by an application whose job will be to
  • Provide a full R9-table of functions that NAtive PalmOS apps need
  • Host such apps and handle their hardware accesses in appropriate ways
  • Parse and access PalmOS's data structures on disk, so that PalmOS and DGOS can share PalmOS files(reboot into PalmOS and your datebook has the entries you just added in DGOS
  • Allow Palm's PACE to run, or implement DGOS's own version of PACE
  • Provide access to things like network and expansion cards

Of course no OS is complete without its own userspace apps, and an SDK. The SDK is hard since putting one together is a monumental task. Luckily for DGOS this is not hard, since almost any linux library will run on DGOS is recompiled for it. Of course the UI toolkit will be different, BUT to PalmOS programmers the UI apiw ill be familiar and simple, so the SDK will be a mix of linux standard APIs and PalmOS UI apis, with a mix-in of user-requested features I choose to implement.

So so summarize, the project is doing well, and there is a chance of a release of something of interest to developers (but likely not to final users yet) really soon.


Coffee-Turtle said...

This was a really great read and source of information! I thank you for taking the time to write it and update us.

One question I have (and sorry if I missed the point), are you suggesting that you will have a bit of a dual-boot environment for the LifeDrive?

You said:

"...PalmOS and DGOS can share PalmOS files(reboot into PalmOS and your datebook has the entries you just added in DGOS"

I may have misunderstood, but if this a hint towards a dual-boot system, that would be awesome!

Currently, I still find the LifeDrive pretty slow not only with long boot times but overall functionality and application switching (probably because of PalmOS itself). Have you found a way to overcome that obstacle and help to speed up the LD, maybe to the point of instant access even after a reboot?

I think your removing the the need for flushing and the like should greatly help, no?

Dmitry Grinberg said...

Well, my LD right now is dual boot. Certainly possible to completely evict PalmOS from it, but why?

Flushing and such are not obstacles because my OS has no such things as DbCache

Daremo said...

Great update, Dmitry. Keep up the good work, and kudos.

Winston said...

You also said that USB work is ongoing. I assume that this means client mode for syncing. Are there any plans on "forcing" a USB Host mode given that drivers can be more easily written in you OS?

Thireus said...

Great news. =)

If you need some help, I'm here!

Gorod said...

Dual-boot DGOS and Palm OS... cool... but what about running Palm OS apps from within DGOS, like using the Palm OS Datebook from DGOS? Is this possible at all?

There are so many great Palm apps out there, it would be nice if at least a few could work directly over DGOS.

Dmitry Grinberg said...

There whole point was to run PalmOS apps in DGOS, read the paragraph beginning with "PalmOS compatibility will be provided"

Palm-Sounds said...

Thanks for the explanation of what you're trying to do. A big help.

Gorod said...

Oh, that's what I thought from the beginning, it's just that your reference to dual-boot had me fooled.

So, what you mean is that
a) Palm OS apps can run from within DGOS


b) we can also boot into Palm OS itself, and the file system is shared so that PIM data, etc. is the same as within DGOS.

Got it now. I think :-)

Coffee-Turtle said...

That was music to my ears! I am with you on the Dual-boot environment. Being able to go back and forth to Palm OS 5 is pretty neat.

The death of dbCache! Yey!!

I wish I was an PalmOS programmer. I would love to make the first third-party applications for your DGOS!

Dmitry Grinberg said...
"Well, my LD right now is dual boot. Certainly possible to completely evict PalmOS from it, but why?

Flushing and such are not obstacles because my OS has no such things as DbCache"

Chris2.0 said...

Hiya mr, thanks for the update!

Looking FWD to the final release! Knew there was a good reason for still keeping my LD around!

Have you thought about pricing structures for DGOS?

brum said...

Thanks again DG!

Hari Seldon said...


I remember having read somewhere that DGOS would be able to run Windows Mobile applications. Is that true? In that case, could we finally run Skype on a TX?


404 said...

Keep up the great work man! It gives all the older Palm owners something to look forward to =)

What devices will be compatible (if any) other than the lifedrive?

david said...
This comment has been removed by the author.
david said...

Make new PDA with this system?