Voyager Discussion

From NikiWiki
Jump to: navigation, search

Contents

Discussion

There is now a FAQ about the Voyager project here.

This document is already some kind of discussion, you can add your comments in here as well. For real discussion please consult the mailinglist voyager-dev@netlabs.org, or use the gmane.org web/news interface to it.

Documentation

IBM Redbooks

We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.

Darwin Documentation

There is plenty of documentation available about Darwin, a good start is Kernel Programming, which gives a nice overview about the design of the kernel.

Technologies to study

Kernels

Design Discussion

Creating a binary compatible OS/2 clone may be tempting but is not strictly necessary. Important is the user experience. Which toolkit should be used for primary development?

Graphics Drivers

These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver. We should have a look at HW support when chosing the driver system. For example I've read OpenGL drivers are not that common (often they're not HW accelerated). A viable idea may be to just use OpenGL as the core API on top of something else. There're quite a lot OpenGL implementations running on different low level drivers or even Mesa.

2D API

It seems there are many possiblities here!

We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ... These libraries are (mostly) used for display and printing. So we won't have a consistent graphical subsystem with this multitude.

All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...

Even if we do have to use more than one we should focus on a library that is widly supported, at the moment my impression is that Cairo will win the race. Mozilla is using it for new versions, OOo will use it and GTK+ is migrating into it as well. Also projects like Glitz will dramatically speedup the rendering in the Cairo engine. See some comments of one of the GTK+ developers.

Input Handling and Event Queue

Between the 2D API and the window manager one layer is missing

Questions:

Window Manager

To manage the windows we need some sort of window manager. So far most implementations are done for X, we need to abstract that directly on Cairo.

Ideas for a new Window Manager

What features should a new windows manager have? Discussion was moved to a separate page:

Ideas for a new Window Manager

Started development on Neptune

I started the development of the window manager. The project is called neptune, since this planet is one of those being observed by NASA's initial Voyager I mission. Currently I'm developing under XOrg, and have the physical screens simulated by several Cairo Surfaces (the whole window manager will be based on the multi screen design). Neptune has a to early state to publish anything. Currently I'm just experimenting with different architecture approaches, and am trying to figure out the best way to implement the multiscreen handling. Once everything is done, it should be easy to "port" it to run without the X server, since all the painting is done through cairo. So it should be a matter of having glitz using a framebuffer GL backend instaed of the glx.

CMD

directory)

MM

Toolkits

SOM

Dropping SOM for something better? Creating a poor mans SOM kernel isn't too difficult (Cinc: there's already a working prototype for the basic functionality).

If SOM is dropped, no binary compatibility for old WPS enhancements is given. This may break a considerable amount of OS/2 apps. This may not be an issue if applications have to be recompiled anyway for a new plattform. Cinc: I don't see many OS/2-apps which are worth to be supported no matter how much work it needs. Binary compatibility is out of sight IMHO. Nobody really needs it (anyone really using OD nowadays?).

Cinc: Note for those with reading (well more with comprehension problems): I'm talking here about SOM and WPS programs, not OS/2 programs in general (maybe someone noticed the headline which says "SOM"). Anyone knows any widespread commercial WPS extension except ObjectDesktop??? I don't. I don't believe it's worth to support the almost not existant WPS integration of StarOffice5.xx. Geez, that thing is from the computer stoneage now. So before whining about missing WPS binary compatibility first try to find something needing it... The remaining critics are invited to add binary compatibility if they want it. Nobody will hinder them. Quite the opposite, the toolkit comes with every eCS so just join the effort.

Desktop (WPS)

Work is in progress. See the desktop page.

Note: Don't use the linked page for discussion. If you want to discuss use this section or the discussion page (hey that's what it was made for).

Spirit and Purpose of the WPS

The WPS only shows those parts of the computer system you have to deal with as a user.

Its objects are taken from the user's world of experience. The implementation details are hidden.

It is very intuitive to use. A Graphical GUI shows you, what is possible to do and what not. (Unlike a command line! The unix shell TAB key is a notable exception. But generally this can easier shown with graphics.)

The WPS is only for the user! Programs have DLLs and APIs of their own. (If not, then there is something missing on the system.)

Some WPS objects show or represent system details. That is, because daily administration tasks can also be regarded as "usage".

Security

Security should be a concern when creating the desktop application. GTK isn't secure by design so the desktop won't be either. Nevertheless we shouldn't open additional holes. The concept of the desktop allows arbitrary class and method replacement. So trojans can do whatever they want with it when they manage to get into the desktop app.

Ideas:

Is this sufficient?

REXX

Network Transparency

It would be cool to execute applications remotely.

What we don't want is a distributed operating system like Amoeba or Inferno.

The network transport would be inside Cairo or between Cairo and OpenGL. (Above Cairo makes no sense, because Cairo can also manipulate memory-stored images; below OpenGL is too much data overhead.)

When a user runs an application remotely, he wants to access devices on the client and the server. Examples for devices are

We need some kind of abstraction layer. It would be nice, if everything can be controlled by WPS objects:

Backward Compatibility

The question about backward compatibility is indeed a good one, it's risky to break with the current OS/2 API for religious reasons but one should have a look at that more from a technical point of view. The OS/2 API is not really modern anymore, programming directly on PM is much more work than using a modern toolkit like GTK+.

At the moment it's unfortunately unlikely that PM and WPS source get released by IBM.

Options:

XEN seems to be the most promising one at the moment because it will support dual core CPUs in the future so one can run the guest OS on a separate CPU core. So far one had to alter the guest OS in sourcecode but that changes at the moment because they integrate parts of QEMU sourcecode inside XEN to emulate those parts (memory allocation and such stuff).

Stuff

Lexip: I think this should be no problem, since the WM will feature virtual desktops, which can be placed on any physical screen. Thus, if one places the virtual desktop holding the VM on a physical screen, you have what you want to. It will even be possible to split screens, and let several virtual desktops share one screen.


Questions

Short:

 Eyecandy and advanced/unnecessary features (even when switched off) waste cpu time.

Or even let the objects come out of their hiding place, if they are not visible on the screen or in subfolders?

Implementation

You will find links to pages with some beef here later on. While the Voyager page is mainly for discussion and brainstorming the following pages go into detail and present the actual design decisions, roadmaps etc.

Press coverage

We slowly start to get some press:

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox