<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.netlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ShadoW</id>
	<title>NikiWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.netlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ShadoW"/>
	<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php/Special:Contributions/ShadoW"/>
	<updated>2026-04-28T21:44:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=GpiEnableYInversion()&amp;diff=3928</id>
		<title>GpiEnableYInversion()</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=GpiEnableYInversion()&amp;diff=3928"/>
		<updated>2006-04-12T12:47:17Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: effect on GPIPartialArc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Definition:&lt;br /&gt;
&lt;br /&gt;
 BOOL APIENTRY GpiEnableYInversion(HPS hps, LONG lHeight);&lt;br /&gt;
&lt;br /&gt;
This function is exported by PMGPI.DLL as ordinal 723.&lt;br /&gt;
You can use this function by loading it dynamically when needed, for example by the following code. (The code assumes that the program uses other Gpi* functions so PMGPI.DLL is already attached to the process!)&lt;br /&gt;
&lt;br /&gt;
 static BOOL APIENTRY (*fnGpiEnableYInversion)(HPS hps, LONG lHeight) = NULL;&lt;br /&gt;
 &lt;br /&gt;
 void GpiEnableYInversion(HPS hps, LONG lHeight)&lt;br /&gt;
 {&lt;br /&gt;
   HMODULE hmod;&lt;br /&gt;
   int rc;&lt;br /&gt;
 &lt;br /&gt;
   if (fnGpiEnableYInversion)&lt;br /&gt;
     fnGpiEnableYInversion(hps, lHeight);&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // Interesting, it doesn&#039;t work with DosQueryModuleHandle(), even&lt;br /&gt;
     // though it returns the very same handle.&lt;br /&gt;
     //   [ rc = DosQueryModuleHandle(&amp;quot;PMGPI&amp;quot;, &amp;amp;hmod); ]&lt;br /&gt;
 &lt;br /&gt;
     // I have to load and free the module instead...&lt;br /&gt;
     rc = DosLoadModule(NULL, 0, &amp;quot;PMGPI&amp;quot;, &amp;amp;hmod);&lt;br /&gt;
     if (rc!=NO_ERROR)&lt;br /&gt;
       return;&lt;br /&gt;
     DosQueryProcAddr(hmod, 723, NULL, (PFN *)&amp;amp;fnGpiEnableYInversion);&lt;br /&gt;
     DosFreeModule(hmod);&lt;br /&gt;
     if (fnGpiEnableYInversion)&lt;br /&gt;
       fnGpiEnableYInversion(hps, lHeight);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Or you can tell the linker to import it, by adding something like this to your *.def file:&lt;br /&gt;
&lt;br /&gt;
 IMPORTS&lt;br /&gt;
    GpiEnableYInversion = PMGPI.723&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Call the function with&lt;br /&gt;
&lt;br /&gt;
 lHeight = height - 1;&lt;br /&gt;
 GpiEnableYInversion(hps, lHeight);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
I think it was introduced with the Open32 API (previously called DAPIE or DAX). It&#039;s purpose is to ease the porting of Windows applications to OS/2. Using this API for a given Presentation Space handle (HPS), all the Gpi functions will be inverted using the given lHeight value.&lt;br /&gt;
&lt;br /&gt;
Please note that not only the coordinates will be top-left based, but the blitting and handling of bitmaps will also be inverted. For example, using the GpiDrawBits() API expects a pointer to a pixel array, which is bottom-up by default. Once this call is used on the target Presentation Space, you&#039;ll have to have the pixels top-up way in your buffer if you want to have your image to be shown correctly.&lt;br /&gt;
&lt;br /&gt;
The current setting of Y-Inversion can be queried with the [[GpiQueryYInversion()]] API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;It seems the aptl[] parameter of GpiBitBlt does &#039;&#039;not&#039;&#039; get inverted! However, the bitmaps themselves &#039;&#039;do&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The output of GPIPartialArc gets mirrored across the Y-axis - the rotational direction changes!&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3908</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3908"/>
		<updated>2006-04-10T07:42:09Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Discussion==&lt;br /&gt;
&lt;br /&gt;
There is now a FAQ about the Voyager project [[Voyager FAQ|here]].&lt;br /&gt;
&lt;br /&gt;
This document is already some kind of discussion, you can add your comments in here as well. For real discussion please consult the [[Mailinglists | mailinglist]] &amp;lt;tt&amp;gt;voyager-dev@netlabs.org&amp;lt;/tt&amp;gt;, or use the [http://dir.gmane.org/gmane.org.netlabs.voyager.devel gmane.org web/news interface] to it.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernelthread.com/software/fslogger/ Filechange notification] in Mac OSX &amp;quot;Tiger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
*[http://www.opengl.org/ OpenGL], [http://freeglut.sourceforge.net/index.php FreeGLUT], [http://www.mathies.com/cpw/about.html CPW] (Application framework for windows, menus etc.). Here&#039;s a [http://www.mathies.com/cpw/textfiles/Cpw.txt Readme text].&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://www.gtk.org/plan/ GTK+ Planning] - a more recent plan of GTK+ development&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
* [http://www.opensolaris.org/os/ OpenSolaris]&lt;br /&gt;
* [http://www.ogre3d.org/ Ogre 3D] The open source real time 3D rendering engine - for nice 3D effects on the Voyager desktop&lt;br /&gt;
* [http://slashdot.org/article.pl?sid=05/11/03/1744230&amp;amp;tid=190&amp;amp;tid=109 Microsoft Singularity] - interesting paper by Microsoft about a concept study of a new OS&lt;br /&gt;
* [http://arstechnica.com/reviews/os/macosx-10.4.ars/13 Quartz and Quartz extreme], nice article giving an overview&lt;br /&gt;
* [http://klik.atekon.de/ Klik]: application bundles for KDE.&lt;br /&gt;
* More about application bundles: [http://mozart.chat.net/~jeske/unsolicitedDave/app_wrappers_yet_again.html http://mozart.chat.net/~jeske/unsolicitedDave/app_wrappers_yet_again.html], [http://mozart.chat.net/~jeske/unsolicitedDave/next_wrapper_description.html http://mozart.chat.net/~jeske/unsolicitedDave/next_wrapper_description.html], [http://mozart.chat.net/~jeske/unsolicitedDave/kde_encap_ideas.html http://mozart.chat.net/~jeske/unsolicitedDave/kde_encap_ideas.html]&lt;br /&gt;
* [http://rox.sourceforge.net/phpwiki/index.php/HomePage Rox] a quite nice desktop environment with features we also seek to implement&lt;br /&gt;
* [http://www.symphonyos.com/ Symphony OS] - a desktop in XUL. We should integrate XUL as good as possible with Firefox&lt;br /&gt;
* [http://www.eyeos.org/ eyeOS] - web based OS&lt;br /&gt;
* [http://www.novell.com/linux/xglrelease/ Novell &amp;amp; Xgl] - some stuff Novell did for Xgl&lt;br /&gt;
* [http://wiki.x.org/wiki/XDevConf X Developer Conference] - some slides about the latest one, interesting stuff there!&lt;br /&gt;
* [http://chabada.sk/better-desktop/ 40+ Suggestions for a Better Desktop]&lt;br /&gt;
&lt;br /&gt;
===Kernels===&lt;br /&gt;
* http://haiku-os.org - OpenBeOS successor&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop without X!)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
* [http://www.scitechsoft.com/products/ent/snap_linux.html SciTech Snap Graphics]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver.&lt;br /&gt;
We should have a look at HW support when chosing the driver system. For example I&#039;ve read OpenGL drivers are not that common&lt;br /&gt;
(often they&#039;re not HW accelerated). A viable idea may be to just use OpenGL as the core API on top of something else. There&#039;re quite a lot OpenGL implementations&lt;br /&gt;
running on different low level drivers or even Mesa.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
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 [http://www.osnews.com/story.php?news_id=9609 comments] of one of the GTK+ developers.&lt;br /&gt;
&lt;br /&gt;
===Input Handling and Event Queue===&lt;br /&gt;
Between the 2D API and the window manager one layer is missing&lt;br /&gt;
* that cares for user input by mouse, keyboard, ...&lt;br /&gt;
* that knows the basics about windows and controls their behaviour (A window manager only modifies this behaviour!)&lt;br /&gt;
* a Session manager that manages the processes which want do to screen output&lt;br /&gt;
* a message architecture that connects everything and enables inter-client communication&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Should we choose X for that? Quasi-standard, but old&lt;br /&gt;
* modify existing(?) systems&lt;br /&gt;
* port Presentation Manager -&amp;gt; access to source code needed&lt;br /&gt;
* code that ourselves?&lt;br /&gt;
&lt;br /&gt;
* [http://xynth.org xynth] might be an option&lt;br /&gt;
&lt;br /&gt;
=== Window Manager ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/Standards/wm-spec Window Manager Specification Project]&lt;br /&gt;
* [http://tronche.com/gui/x/icccm/ Inter-Client Communication Conventions Manual] - Support this standard in order to let X applications run&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fwaimea Waimea] - WM which is using Cairo for all rendering, they write it&#039;s for X so one would have to check if this can be separated from X as well.&lt;br /&gt;
&lt;br /&gt;
==== Ideas for a new Window Manager ====&lt;br /&gt;
What features should a new windows manager have?&lt;br /&gt;
&lt;br /&gt;
Cinc: Obviously these ideas are inspired by stuff usually found on X. The WM needed for this project isn&#039;t the kind of&lt;br /&gt;
WM X uses. I think WM is the wrong word for it anyway. What&#039;s needed is primarily a compositing engine which is in charge&lt;br /&gt;
of allocating surfaces, giving them to the app, the app draws into them and the compositor puts it on the screen.&lt;br /&gt;
Input support is probably needed for this layer, too, so the compositor may move and stack windows correctly.&lt;br /&gt;
The final appearance of the graphics drawn on the surfacces is up to the applications not the compositor. It must be&lt;br /&gt;
that way IMHO because no compositor coder can imagine what app developer will finally do with a given infrastructure.&lt;br /&gt;
E.g. creating close, maximize etc. widgets in the compositor/WM effectively prevents the application developer from&lt;br /&gt;
adding his own widgets or removing the given one. OTOH if there&#039;s a documented way to tinker with (per window) then it&#039;s ok.&lt;br /&gt;
&lt;br /&gt;
The compositor/WM should be inspired by the Presentation manager (PM) found in OS/2. Granted it&#039;s old technology it&#039;s&lt;br /&gt;
unbelievable flexible. It&#039;s possible for the coder to alter the handling of every window/widget by subclassing the window procedures&lt;br /&gt;
provided by the system. For example the information area found in [http://www.os2world.com/cdwriting WPS-wizard] uses&lt;br /&gt;
this feature. PM is directed to order all the window areas differently (titlebar, close/maximize, client area) to give room for the&lt;br /&gt;
information area. The coders of PM never thought about the possibility to add such informations to windows back when they&lt;br /&gt;
did PM. It&#039;s not a hack and there&#039;s no need to change any WM code to get this to work.&lt;br /&gt;
&lt;br /&gt;
Lexip: What about the common look and feel of all the headers of the client windows? I&#039;d like to have a common theme for example, and all apps should have a header (with a little icon, and the close/minimize/... buttons) that paints according to that theme file. &lt;br /&gt;
&lt;br /&gt;
Cinc: ACK. What I mean is the WM should not restrict the developer from adding/removing widgets, from modifying the way how things are done for a particular window (e.g. positioning of widgets). This also applies on how things are painted. If the developer decides to remove all widgets and use an ugly custom theme (which is bad) he should be free to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Main Features =====&lt;br /&gt;
* Built i18n (internationoalization)&lt;br /&gt;
* .prestartup and .poststartup files&lt;br /&gt;
* Multiscreen support (with possibility of virtual desktops 1 being on physical screen 1, while having virtual desktop 4 on screen 2)&lt;br /&gt;
** Preview of desktop X on desktop Y. Like you have one desktop with the presentation on desktop X and on desktop Y (your main display for example) you see a resizable preview so you could have your script on the main display and still step through the slides&lt;br /&gt;
* Anti aliasing&lt;br /&gt;
* Virtual desktops (different layouts and number of desktops - 4x2, 3x3, ...)&lt;br /&gt;
* Storing sessions. Cinc: not sure the WM should do that&lt;br /&gt;
* 100% ewmh complient. Cinc: ???? if this is some X thingie it&#039;s probably not needed -&amp;gt; Lexip: yeah, it&#039;s X stuff, but if we want to support starting Xapps, and we should do that, then we gotta be ewmh complient with our WM/compositor&lt;br /&gt;
* Large desktops (scrolling and paging)&lt;br /&gt;
* Themes with possibility of associating a background image or pattern (i.e. blackbox)&lt;br /&gt;
&lt;br /&gt;
===== Client Window Features =====&lt;br /&gt;
* Client window header can be top/bottom/right/left (with vertical text if necessary).&lt;br /&gt;
* Window manager keeps track of stacking order of all client windows&lt;br /&gt;
* Sticky windows - Possibility to show clients on all or few or just one virtual desktop&lt;br /&gt;
* Virtual desktops with resolutions different from the physical screen resolution.&lt;br /&gt;
* Ability to display multiple virtual desktops on one physical screen.&lt;br /&gt;
* Maximization:&lt;br /&gt;
** Maximize to given area&lt;br /&gt;
** Maximize to actual screen&lt;br /&gt;
** Maximize to more than one screen&lt;br /&gt;
** Maximize vertically only&lt;br /&gt;
** Maximize horizontally only&lt;br /&gt;
* Clients can influence their states:&lt;br /&gt;
** Maximized&lt;br /&gt;
** Stacking order&lt;br /&gt;
** Shading&lt;br /&gt;
** Stickiness&lt;br /&gt;
** Desktop(s)&lt;br /&gt;
* Window in Window handling for MDI applications&lt;br /&gt;
* Edge snapping while move- resizing a client window&lt;br /&gt;
* Client window shading&lt;br /&gt;
* Store client window properties per application (size, position, etc)&lt;br /&gt;
* Client window can drop shadow&lt;br /&gt;
* Application icons in client window headers&lt;br /&gt;
* Different focus models (click to focus, focus follows mouse, ...)&lt;br /&gt;
&lt;br /&gt;
===== Docking Area Features =====&lt;br /&gt;
* Allow having multiple docking areas&lt;br /&gt;
* Docking areas can be hid (approaching mouse makes them appeare)&lt;br /&gt;
* Transparency&lt;br /&gt;
* Drop shadow&lt;br /&gt;
&lt;br /&gt;
Cinc: The WM should not be in charge of this. The Dock (or whatever) is just an application and should be treated as one.&lt;br /&gt;
&lt;br /&gt;
Lexip: question again about the theme. If the WM/compositor is not in charge of the docker, how can we set a common theme to it?&lt;br /&gt;
&lt;br /&gt;
Cinc: The WM/OS should provide the default bitmaps for it (or better any app) which can be queried by the app. Changing the theme will automatically change these BMPs. For buttons and alike the OS should provide a default drawing function which will ensure every app which uses the default automatically has a similar look and feel.&lt;br /&gt;
&lt;br /&gt;
===== Menu Features =====&lt;br /&gt;
* Dynamically filled menus (piped menus). Cinc: That&#039;s mostly up to the application IMHO with the exception of system menus.&lt;br /&gt;
* Menu configuration can be separated over several files, i.e. one file for each submenu section&lt;br /&gt;
* All the submenues can be called separatly (by key combination for example)&lt;br /&gt;
* Dockable menues (like blackbox)&lt;br /&gt;
* Transparency&lt;br /&gt;
* Drop shadow&lt;br /&gt;
* Icons for entries&lt;br /&gt;
&lt;br /&gt;
Cinc: I think the WM/compositor should only provide the infrastructure to show menus. The final appearance/usability is up to the app.&lt;br /&gt;
&lt;br /&gt;
Lexip: Here I&#039;m talking about the system menu. The menu where you can start all you apps, or anything that you&#039;d like to have in a menu. System menu is startable by right clicking on an empty spot on the background, or by keying-in some keyboard combination.&lt;br /&gt;
&lt;br /&gt;
Cinc: IMHO such a system menu also should be a dedicated app (so it is replacable without tinkering with the WM). This app monitors the input queue and reacts when the configured message arrives (keyboard/mouse/whatever). Or alternatively the WM sends a message to tell this app to show the menu .&lt;br /&gt;
&lt;br /&gt;
===== Configuration Features =====&lt;br /&gt;
* Configuration changes take effect withou restarting the wm&lt;br /&gt;
* Every single command is configurable to hava a certain keyboard or mouse click shortcut.&lt;br /&gt;
* Shortcuts are simple keyboard shortcuts (i.e. Ctrl+F1), or so called keychains known from Emacs editor (i.e. Alt+e+x)&lt;br /&gt;
* The wm allows mouse gestures, and keyboard mouse combined input (i.e. ctrl+mouse1 click, etc.)&lt;br /&gt;
* Single, double, or even tripple clicks call different actions (attention with patent from M$ in USA)&lt;br /&gt;
* Clicking the client window header is a different action than clicking the clients body for example. Cinc: can easily be done by treating those two as two coupled windows.&lt;br /&gt;
&lt;br /&gt;
===== Extensibility =====&lt;br /&gt;
* Programming interface (every single command can be called from outside).&lt;br /&gt;
* Allow writing modules and applications that interact with the wm. Cinc: ah ok, addresses some of my concerns from above&lt;br /&gt;
&lt;br /&gt;
===== Other =====&lt;br /&gt;
* Ability to play (opengl) games in fullscreen on virtual desktops instead of physical screens. (Today, if a game goes fullscreen, it&#039;ll either spread over all physical screens or the other screens are switched off... which is not nice if you would like to have the server stats/a map/whatever on the secondary screen).&lt;br /&gt;
&lt;br /&gt;
Lexip: that sounds as a nice idea to me. we gotta do that&lt;br /&gt;
&lt;br /&gt;
==== Started development on Neptune ====&lt;br /&gt;
I started the development of the window manager. The project is called &#039;&#039;&#039;neptune&#039;&#039;&#039;, since this planet is one of those being observed by NASA&#039;s initial Voyager I mission.&lt;br /&gt;
Currently I&#039;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).&lt;br /&gt;
Neptune has a to early state to publish anything. Currently I&#039;m just experimenting with different architecture approaches, and am trying to figure out the best way to implement the multiscreen handling.&lt;br /&gt;
Once everything is done, it should be easy to &amp;quot;port&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
=== CMD ===&lt;br /&gt;
&lt;br /&gt;
* full capabilities of current CMD.EXE concerning&lt;br /&gt;
** usage of system messages and error codes&lt;br /&gt;
** nested io redirection&lt;br /&gt;
** grouping commands with round brackets&lt;br /&gt;
** &amp;amp;, &amp;amp;&amp;amp; |, and || operators&lt;br /&gt;
** correct wildcard matching for files with multiple extensions&lt;br /&gt;
** PROMPT command&lt;br /&gt;
** keep UPPERCASE environment variable names only ! (unlike 32-bit Command Interpreter from Jonathan de Boyne Pollard)&lt;br /&gt;
* proper implementation of EXTPROC command (fix errors with exptproc scripts not residing in current &lt;br /&gt;
directory)&lt;br /&gt;
* new general features&lt;br /&gt;
** support extended command set of Win NT CMD.EXE &lt;br /&gt;
*** at least include string functions with extended SET command&lt;br /&gt;
** extend IF clause with new conditions&lt;br /&gt;
*** os version match&lt;br /&gt;
*** free space on a drive&lt;br /&gt;
*** is drive removeable&lt;br /&gt;
*** is drive USB mass storage&lt;br /&gt;
*** more ?&lt;br /&gt;
*** easy syncing/unmounting for usb mass storage devices&lt;br /&gt;
** support PATHEXT variable&lt;br /&gt;
*** start files with their associated program&lt;br /&gt;
** automatic environment vars &lt;br /&gt;
*** DATE, DATE_SORTED, TIME, TIME_SORTED, WEEKDAY, DAY, MONTH, YEAR, YEARDAY&lt;br /&gt;
*** CMDLINE, ERRORLEVEL&lt;br /&gt;
*** OS, OSVER&lt;br /&gt;
*** BOOTDRIVE&lt;br /&gt;
** support filename completion&lt;br /&gt;
* new internal or extended commands&lt;br /&gt;
** INITVIOCMD determines a command being executed when initialized as a VIO session&lt;br /&gt;
** INITPMCMD determines a command being executed when initialized as a PM session&lt;br /&gt;
** SET allows to include equal signs in value of environment var&lt;br /&gt;
** SET /P retrieves value of environment var from keyboard&lt;br /&gt;
** SHIFT xx shifts parameter by positive number&lt;br /&gt;
** ECHO /N does not append CRLF to output&lt;br /&gt;
** CDD command changes directory and drive&lt;br /&gt;
** TIMER command starts, stops or displays the value of a timer&lt;br /&gt;
** SLEEP n waits for n secs&lt;br /&gt;
** PAUSE n waits for n secs&lt;br /&gt;
** implement START command with all features of DosStartSession, among others implement&lt;br /&gt;
*** /WAIT (synchronous start)&lt;br /&gt;
*** /NC (NoAutoClose)&lt;br /&gt;
*** /DOS[:settings.dat] (if DOS-Box still available)&lt;br /&gt;
*** /POS:x,y,x1,y1 (initial window position)&lt;br /&gt;
*** /ICON:icon.ico (system menu icon)&lt;br /&gt;
** MOVE files with implicit copy/delete across partitions&lt;br /&gt;
** exlicit UNLOCK command&lt;br /&gt;
** implicit unlock with COPY, DEL, REN, MOVE (very usefull, but also dangerous ?)&lt;br /&gt;
** macro support with ALIAS command&lt;br /&gt;
* new batch handling or batch commands&lt;br /&gt;
** %* specifies all parameters (like %1, %2 etc)&lt;br /&gt;
** in for loops support %%a%f, %%a%p, %%a%d and more for specifying filename, path and driveletter of matching file &lt;br /&gt;
** GOSUB - executes a subroutine&lt;br /&gt;
** RETURN [xx] - exits a batchfile or subroutine [with errorlevel]&lt;br /&gt;
** CANCEL (ends batch processing, but does not close window as EXIT does)&lt;br /&gt;
* Integration of any REXX replacement like with current CMD.EXE&lt;br /&gt;
** call of REXX Scripts with CMD&lt;br /&gt;
** usage of exit handlers&lt;br /&gt;
** manipulation of environment vars within REXX (changes remain after end of script, unless setlocal/endlocal() is called), including BEGINLIBPATH and ENDLIBPATH&lt;br /&gt;
** readonly access to the LIBPATH value as an environment variable&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
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&#039;t see many OS/2-apps which are worth to be supported no matter how much work it needs. Binary compatibility is out&lt;br /&gt;
of sight IMHO. Nobody really needs it (anyone really using OD nowadays?).&lt;br /&gt;
&lt;br /&gt;
Cinc: Note for those with reading (well more with comprehension problems): I&#039;m talking here about SOM and WPS programs, &#039;&#039;&#039;not&#039;&#039;&#039; OS/2 programs in general (maybe someone noticed the headline which says &amp;quot;SOM&amp;quot;). Anyone knows any widespread commercial WPS extension except ObjectDesktop??? I don&#039;t. I don&#039;t  believe it&#039;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...&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Desktop (WPS) ===&lt;br /&gt;
&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
Work is in progress. See the [[desktop]] page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Don&#039;t use the linked page for discussion. If you want to discuss use this section or the discussion page (hey that&#039;s what it was made for).&lt;br /&gt;
&lt;br /&gt;
==== Spirit and Purpose of the WPS ====&lt;br /&gt;
The WPS only shows those parts of the computer system you have to deal with as a user.&lt;br /&gt;
&lt;br /&gt;
Its objects are taken from the user&#039;s world of experience. The implementation details are hidden.&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
Some WPS objects show or represent system details. That is, because daily administration tasks can also be regarded as &amp;quot;usage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Security ====&lt;br /&gt;
&lt;br /&gt;
Security should be a concern when creating the desktop application. GTK isn&#039;t secure by design so the desktop won&#039;t be either. Nevertheless we shouldn&#039;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.&lt;br /&gt;
&lt;br /&gt;
Ideas:&lt;br /&gt;
&lt;br /&gt;
* Only allow signed/hashed classes to be loaded&lt;br /&gt;
* Maybe require that every author uses GnuPG to sign his/her class&lt;br /&gt;
* User has to allow loading any additional classes once&lt;br /&gt;
* &amp;quot;Save&amp;quot; classes will be listed in the users save class list&lt;br /&gt;
* The save class list is signed (GnuPG) to prevent altering&lt;br /&gt;
&lt;br /&gt;
Is this sufficient?&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
* any REXX replacement should implement the following&lt;br /&gt;
** true CMD integration like under OS/2&lt;br /&gt;
*** access to environment vars of the calling interpreter. Cinc: ???&lt;br /&gt;
** support of the full REXX C API or an equivalent concept (macro space control, app handlers, WPS object access API etc). Most of this is supported by Regina AFAIK.&lt;br /&gt;
** complete reimplementation of REXXUTIL ! I seem to remember having seen such a project for Windows and Unix.&lt;br /&gt;
* It should be possible to write GUI based apps with REXX, a bit [http://www.edm2.com/0601/drdialog.html Dr.Dialog] like&lt;br /&gt;
&lt;br /&gt;
=== Network Transparency ===&lt;br /&gt;
It would be cool to execute applications remotely.&lt;br /&gt;
&lt;br /&gt;
What we don&#039;t want is a distributed operating system like Amoeba or Inferno.&lt;br /&gt;
&lt;br /&gt;
The network transport would be inside Cairo or between Cairo and OpenGL.&lt;br /&gt;
(Above Cairo makes no sense, because Cairo can also manipulate memory-stored images; below OpenGL is too much data overhead.)&lt;br /&gt;
&lt;br /&gt;
When a user runs an application remotely, he wants to access devices on the client and the server. Examples for devices are&lt;br /&gt;
* printers&lt;br /&gt;
* mice, keyboard&lt;br /&gt;
* audio&lt;br /&gt;
* screens&lt;br /&gt;
* hard disks&lt;br /&gt;
* USB attached devices&lt;br /&gt;
* DVD burners&lt;br /&gt;
&lt;br /&gt;
We need some kind of abstraction layer. It would be nice, if everything can be controlled by WPS objects:&lt;br /&gt;
* drag application on computer -&amp;gt; application gets executed there&lt;br /&gt;
* double-click (or also drag&#039;n&#039;drop) keyboard object -&amp;gt; this keyboard works for my console session&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Implement only some crucial parts to ease source code migration. For example message queues, concept of object windows (often used to comunicate with background threads).&lt;br /&gt;
* Map often used PM-functions to counterparts of the chosen toolkit.&lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
* With the advance of virtualization technologies like XEN, Vanderpool and multicore cpus it becomes more and more common to have a second, virtual computer running in a VM. It should be possible to map the virtual screen of the VM to a physically existing display. (The idea is to give the user the feeling that he actually has two different computers (with a shared set of input devices). It might even be possible to add another set of input devices, so that two users could work on one computer. (one or maybe even both using an emulated computer...)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://herpolhode.com/rob/ugly.pdf What&#039;s bad about Unix]. Nice reading&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Plan_9_(operating_system) Plan 9]. The system the author of the reading above advocates to some degree. Not compatible enough, but interesting concepts.&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
** I think the problem of current user interfaces is that they have a lot data dependencies. This increases the response time as they often have to wait for the data to become available before they can start to draw. Data dependencies mostly stem from an overdose of flexibility (I&#039;m talking windows xp now).&lt;br /&gt;
*** XP&#039;s start menu: it is based on the directory structure in the startmenu folder. So in order to draw the menu it has to read from the hard disk several times as it needs to find out the structure and load the icons of the programs (they are mostly cached after the first time).&lt;br /&gt;
*** Drive windows, where the window needs to gather/update the drive information before it can be drawn the first time.&lt;br /&gt;
*** Explorer windows that display extended file info (eg id3 tags of mp3s) need to parse the files first. (in xp a corrupt media file can block the explorer, before you even get the chance to touch it)&lt;br /&gt;
&lt;br /&gt;
Short:&lt;br /&gt;
  Eyecandy and advanced/unnecessary features (even when switched off) waste cpu time.&lt;br /&gt;
&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;br /&gt;
&lt;br /&gt;
* As soon as we further expand the usage of WPS objects, the templates folder will grow and likewise the number of possible interactions and combinations of objects.&lt;br /&gt;
** How can the objects be sorted or structured so that the template folder won&#039;t scare of casual users? Answer: Just use the means of the WPS to do so. Override the right methods and use your programming brain. It&#039;s all documented int the WPS Programming Reference.&lt;br /&gt;
** How can we tell the users about interactions?&lt;br /&gt;
*** Example Drag&#039;n&#039;Drop: When the user starts dragging, display possible targets with arrows, colors, or other marks?&lt;br /&gt;
&lt;br /&gt;
Or even let the objects come out of their hiding place, if they are not visible on the screen or in subfolders?&lt;br /&gt;
*** Example Creating of structures: XWorkplace has &amp;quot;Create new&amp;quot; in the context menu with the entries &amp;quot;Data File&amp;quot;, &amp;quot;Folder&amp;quot;, &amp;quot;Url Folder&amp;quot;, &amp;quot;Program Object&amp;quot; as standard. The idea is good, but can be better. Take a strategy game you don&#039;t know and build up a base very fast. Now let an OS/2 newbie do the same with OS/2 objects. It is much more complicated. There is no way to see what objects fit into each other and you have to know that there is a templates folder and there is a system setup folder with palettes and themes. You could sum up these sentences as the demand for &amp;quot;Feedback for the Users&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Information about the [[desktop]] development.&lt;br /&gt;
&lt;br /&gt;
== Press coverage ==&lt;br /&gt;
We slowly start to get some press:&lt;br /&gt;
&lt;br /&gt;
* [http://slashdot.org/article.pl?sid=06/02/17/1423225  Slashdot - Keeping the OS/2 Flame Alive]&lt;br /&gt;
* [http://software.newsforge.com/software/06/01/30/192226.shtml?tid=150&amp;amp;tid=132&amp;amp;tid=16 And the original at Newsforge]&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Developers_Workshop_2006&amp;diff=3853</id>
		<title>Developers Workshop 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Developers_Workshop_2006&amp;diff=3853"/>
		<updated>2006-03-18T21:45:18Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: Everblue subitems&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OS/2 and eComStation Developers Workshop 2006 will take place the weekend of 8. and 9. April 2006 in Biel/Bienne, Switzerland.&lt;br /&gt;
&lt;br /&gt;
===News Items===&lt;br /&gt;
23. February 2006 &amp;amp;nbsp;&amp;amp;nbsp; Added registration information &amp;amp; first overview of the topics&amp;lt;br/&amp;gt; &lt;br /&gt;
21. January 2006 &amp;amp;nbsp;&amp;amp;nbsp; Added hotels and some information about Biel/Bienne.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. January 2006 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Initial website online.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Registration===&lt;br /&gt;
The registration is open at [http://www.mensys.net/DeveloperWorkshop2006/ Mensys] now, we provide the following tickets:&lt;br /&gt;
&lt;br /&gt;
* netlabs.org Developers Workshop 2006, Saturday and Sunday: 45 Euro&lt;br /&gt;
* netlabs.org Developers Workshop 2006, one day: 25 Euro&lt;br /&gt;
* netlabs.org Developers Workshop 2006, students: Free&lt;br /&gt;
&lt;br /&gt;
You can register at http://www.mensys.net/DeveloperWorkshop2006/&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Workshop Program===&lt;br /&gt;
There is no program yet but one of the main topics we will talk about is [[Voyager]], beside this we will for sure talk about current projects, like Genmac, ACPI, Everblue and so on. There will be quite some time for discussions, in a workshop form, also known as sitting around computers and hacking some code :)&lt;br /&gt;
&lt;br /&gt;
We will provide enough space, wired or wireless network connection and a lot of bandwith.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Schedule====&lt;br /&gt;
&lt;br /&gt;
So far we plan to do the following presentations (details follow):&lt;br /&gt;
&lt;br /&gt;
* Cairo&lt;br /&gt;
**General overview of Cairo, its structure and its API.&lt;br /&gt;
**Showing the Cairo API in live through a lot of examples.&lt;br /&gt;
* IOProc replacement&lt;br /&gt;
**Introduction to a new modular playback engine concept.&lt;br /&gt;
**Showing what&#039;s ready, what&#039;s to be done, what are the ideas.&lt;br /&gt;
**Discussing future possibilities (recording, transcoding...).&lt;br /&gt;
*The Voyager Object Model (was SOMH): The desktop will be built on an object model similar to SOM. The presentation details the reasons for an own object model and how it&#039;s implemented.&lt;br /&gt;
**Tour of the OS/2 desktop&lt;br /&gt;
**Why not using C++, Objective C, ...&lt;br /&gt;
**Implementation details&lt;br /&gt;
**Compatibility with SOM/DSOM&lt;br /&gt;
**Desktop development roadmap&lt;br /&gt;
**Using the object model for more&lt;br /&gt;
* Everblue&lt;br /&gt;
**Importance and Significance of Everblue (with and without Voyager)&lt;br /&gt;
**Current State and Problems&lt;br /&gt;
**Compiling and Running&lt;br /&gt;
**Demo of Working Applications&lt;br /&gt;
* Voyager - A coder overview about the project&lt;br /&gt;
** OpenGL as backend for Voyager - current options and problems&lt;br /&gt;
** Voyager components - where can you contribute&lt;br /&gt;
** OS/2 &amp;amp; PM compatibility - some crazy ideas worth discussing&lt;br /&gt;
* A WM based on Cairo&lt;br /&gt;
* Coding for WPS and Voyager&lt;br /&gt;
* netlabs.org Certificaton Program&lt;br /&gt;
* Translating Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Workshop Location===&lt;br /&gt;
Beside famous watch companies like Rolex, Omega and Swatch the city of Biel in Switzerland is the home of one more cool company: netlabs.org! This means that the Developers Workshop 2006 will take place in the city where netlabs.org was founded in 1997. I&#039;m proud to do the hosting at the [http://www.hti.bfh.ch/ Berne University of Applied Sciences], the place where I did my studies and where I work now as a system administrator and teacher.&lt;br /&gt;
&lt;br /&gt;
Biel is a small but cute city close to Bern, the capitol city. It&#039;s the boarder to the french speaking part of Switzerland so people in Biel speak german and french, at least most of them :-)&lt;br /&gt;
If you have some more spare time I recommend you to do a walk in the beautiful surroundings of Biel, for example the Jura mountains or around the lake. There is plenty to discover and with a bit of luck we will have a nice spring time in april.&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://www.drei-seen-land.ch Drei-Seen-Land] - a nice page with a lot of information about our region.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Biel/Bienne Biel/Bienne] at Wikipedia.org. Available in many languages.&lt;br /&gt;
* [http://ktk.netlabs.org/gallery/Altstadt-Biel-Bienne Old town of Biel] - some pics from the old town in my gallery&lt;br /&gt;
&lt;br /&gt;
Hope to see you there!&lt;br /&gt;
&lt;br /&gt;
Adrian Gschwend&amp;lt;br/&amp;gt;&lt;br /&gt;
founder of netlabs.org&lt;br /&gt;
====Getting to Biel/Bienne====&lt;br /&gt;
Biel is the gate to the french speaking part of Switzerland, located in the western part of Switzerland. It is well connected to the railway system in Switzerland and easy to reach from about everywhere.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By train:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
There are night trains to Basel, called [http://www.citynightline.ch CityNightLine], this is mainly interesting if you want to get to Biel from Germany, Holland or Austria (it works from Denmark as well some days). You reach Biel within one hour from Basel by train.&lt;br /&gt;
&lt;br /&gt;
For other train connections consult your local train office, if you have to travel to Biel from an airport check the homepage of [http://www.sbb.ch/ SBB], the railway company in Switzerland. For Geneva and Zurich you have to add &#039;&#039;Airport&#039;&#039; in the search field. For Basel and Bern Belp you need to take the local airport bus anyway.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By plane:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
There is no large airport close to Biel but in Switzerland almost everything is close anyway. So you can choose one of those airports if you want to get to Biel:&lt;br /&gt;
&lt;br /&gt;
* Zurich (ZRH) - The biggest airport in Switzerland, quite good connections to Biel (every 30 minutes). Takes about 1.5 hours by train.&lt;br /&gt;
* Geneva (GVA) - good for Easyjet. There is just one train per hour to Biel, around 1.5 hours by train.&lt;br /&gt;
* Basel (BSL) - also good for Easyjet. There are bus connections to Basel and from there it&#039;s one hour by train.&lt;br /&gt;
* Berne Belp (BRN) - this is a small local airport, close to Bern but you still need to get to Biel and that&#039;s probably not much faster than Zurich because the Bus connections from this airport to Bern are not that great. From Bern it will take 30 minutes to Biel.&lt;br /&gt;
&lt;br /&gt;
The local airline in Switzerland is [http://www.swiss.ch Swiss], which offers quite good trips from bigger cities.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Accomodation====&lt;br /&gt;
There are several classes of hotels available in Biel:&lt;br /&gt;
&lt;br /&gt;
* [http://www.lagolodge.ch/ Lago Lodge] - nice backpacker hostel directly at the lake of Biel. University is quite easy to reach by bus and the walk is not that far either.&lt;br /&gt;
* [http://www.continental-bienne.ch Hotel Continental] - 3-star hotel close to the lake as well. The road is quite busy so make sure you get a room towards the lake.&lt;br /&gt;
* [http://www.metropol-biel.ch Hotel Metropol] - 3-star hotel, 15-20 minutes walk to the University or bus.&lt;br /&gt;
* [http://www.lindenegg.ch/ Villa Lindenegg] - a very special and cute hotel in an old villa, 2 minutes away from the University, you can&#039;t get closer than that :)&lt;br /&gt;
* [http://www.accorhotels.com/accorhotels/fichehotel/gb/mer/6166/fiche_hotel.shtml Mercure Plaza] - 4-star hotel in the middle of the city&lt;br /&gt;
* [http://www.hotelelite.ch Hotel Elite] - 4-star hotel close to the railway station. Takes less than 10 minutes to the University.&lt;br /&gt;
&lt;br /&gt;
If you can&#039;t afford a hotel we offer a room at the University where you can sleep with your sleeping bag and your mattress. The room is in the old manufacturing of Rolex and there are showers available too. It&#039;s probably not really comfortable but you don&#039;t have to pay anything for that :-) Please contact Adrian Gschwend if you want to do that, we have to know how many people do it like this. Email: ktk [at] netlabs.org&amp;lt;br/&amp;gt;&lt;br /&gt;
Update: I made some pictures about the location: http://ktk.netlabs.org/gallery/HTIBiel&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Gallery===&lt;br /&gt;
There are some pictures online, check http://ktk.netlabs.org/gallery/HTIBiel&lt;br /&gt;
&lt;br /&gt;
===Contact===&lt;br /&gt;
If you have comments or want further information about the workshop, you can always reach us by sending an eMail to:&amp;lt;br&amp;gt;&lt;br /&gt;
DevelopersWorkshop [at] netlabs.org&amp;lt;br&amp;gt;&lt;br /&gt;
Adrian Gschwend is mainly responsible for organizing the workshop.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Announcement Mailing List===&lt;br /&gt;
The announcement mailing list is closed now.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=GpiEnableYInversion()&amp;diff=3524</id>
		<title>GpiEnableYInversion()</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=GpiEnableYInversion()&amp;diff=3524"/>
		<updated>2005-11-25T21:31:25Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: GpiBitBlt, height - 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Definition:&lt;br /&gt;
&lt;br /&gt;
 BOOL APIENTRY GpiEnableYInversion(HPS hps, LONG lHeight);&lt;br /&gt;
&lt;br /&gt;
This function is exported by PMGPI.DLL as ordinal 723.&lt;br /&gt;
You can use this function by loading it dynamically when needed, for example by the following code. (The code assumes that the program uses other Gpi* functions so PMGPI.DLL is already attached to the process!)&lt;br /&gt;
&lt;br /&gt;
 static BOOL APIENTRY (*fnGpiEnableYInversion)(HPS hps, LONG lHeight) = NULL;&lt;br /&gt;
 &lt;br /&gt;
 void GpiEnableYInversion(HPS hps, LONG lHeight)&lt;br /&gt;
 {&lt;br /&gt;
   HMODULE hmod;&lt;br /&gt;
   int rc;&lt;br /&gt;
 &lt;br /&gt;
   if (fnGpiEnableYInversion)&lt;br /&gt;
     fnGpiEnableYInversion(hps, lHeight);&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     // Interesting, it doesn&#039;t work with DosQueryModuleHandle(), even&lt;br /&gt;
     // though it returns the very same handle.&lt;br /&gt;
     //   [ rc = DosQueryModuleHandle(&amp;quot;PMGPI&amp;quot;, &amp;amp;hmod); ]&lt;br /&gt;
 &lt;br /&gt;
     // I have to load and free the module instead...&lt;br /&gt;
     rc = DosLoadModule(NULL, 0, &amp;quot;PMGPI&amp;quot;, &amp;amp;hmod);&lt;br /&gt;
     if (rc!=NO_ERROR)&lt;br /&gt;
       return;&lt;br /&gt;
     DosQueryProcAddr(hmod, 723, NULL, (PFN *)&amp;amp;fnGpiEnableYInversion);&lt;br /&gt;
     DosFreeModule(hmod);&lt;br /&gt;
     if (fnGpiEnableYInversion)&lt;br /&gt;
       fnGpiEnableYInversion(hps, lHeight);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Or you can tell the linker to import it, by adding something like this to your *.def file:&lt;br /&gt;
&lt;br /&gt;
 IMPORTS&lt;br /&gt;
    GpiEnableYInversion = PMGPI.723&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Call the function with&lt;br /&gt;
&lt;br /&gt;
 lHeight = height - 1;&lt;br /&gt;
 GpiEnableYInversion(hps, lHeight);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
I think it was introduced with the Open32 API (previously called DAPIE or DAX). It&#039;s purpose is to ease the porting of Windows applications to OS/2. Using this API for a given Presentation Space handle (HPS), all the Gpi functions will be inverted using the given lHeight value.&lt;br /&gt;
&lt;br /&gt;
Please note that not only the coordinates will be top-left based, but the blitting and handling of bitmaps will also be inverted. For example, using the GpiDrawBits() API expects a pointer to a pixel array, which is bottom-up by default. Once this call is used on the target Presentation Space, you&#039;ll have to have the pixels top-up way in your buffer if you want to have your image to be shown correctly.&lt;br /&gt;
&lt;br /&gt;
The current setting of Y-Inversion can be queried with the [[GpiQueryYInversion()]] API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;It seems the aptl[] parameter of GpiBitBlt does &#039;&#039;not&#039;&#039; get inverted! However, the bitmaps themselves &#039;&#039;do&#039;&#039;!&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3521</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3521"/>
		<updated>2005-11-22T22:37:06Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: Feedback for the Users&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Discussion==&lt;br /&gt;
&lt;br /&gt;
This document is already some kind of discussion, you can add your comments in here as well. For real discussion please consult the [[Mailinglists | mailinglist]] &amp;lt;tt&amp;gt;voyager-dev@netlabs.org&amp;lt;/tt&amp;gt;, or use the [http://dir.gmane.org/gmane.org.netlabs.voyager.devel gmane.org web/news interface] to it.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernelthread.com/software/fslogger/ Filechange notification] in Mac OSX &amp;quot;Tiger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
*[http://www.opengl.org/ OpenGL], [http://freeglut.sourceforge.net/index.php FreeGLUT], [http://www.mathies.com/cpw/about.html CPW] (Application framework for windows, menus etc.). Here&#039;s a [http://www.mathies.com/cpw/textfiles/Cpw.txt Readme text].&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://www.gtk.org/plan/ GTK+ Planning] - a more recent plan of GTK+ development&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
* [http://www.opensolaris.org/os/ OpenSolaris]&lt;br /&gt;
* [http://www.ogre3d.org/ Ogre 3D] The open source real time 3D rendering engine - for nice 3D effects on the Voyager desktop&lt;br /&gt;
* [http://slashdot.org/article.pl?sid=05/11/03/1744230&amp;amp;tid=190&amp;amp;tid=109 Microsoft Singularity] - interesting paper by Microsoft about a concept study of a new OS&lt;br /&gt;
* [http://arstechnica.com/reviews/os/macosx-10.4.ars/13 Quartz and Quartz extreme], nice article giving an overview&lt;br /&gt;
* [http://klik.atekon.de/ Klik]: application bundles for KDE.&lt;br /&gt;
* More about application bundles: [http://mozart.chat.net/~jeske/unsolicitedDave/app_wrappers_yet_again.html http://mozart.chat.net/~jeske/unsolicitedDave/app_wrappers_yet_again.html], [http://mozart.chat.net/~jeske/unsolicitedDave/next_wrapper_description.html http://mozart.chat.net/~jeske/unsolicitedDave/next_wrapper_description.html], [http://mozart.chat.net/~jeske/unsolicitedDave/kde_encap_ideas.html http://mozart.chat.net/~jeske/unsolicitedDave/kde_encap_ideas.html]&lt;br /&gt;
* [http://rox.sourceforge.net/phpwiki/index.php/HomePage Rox] a quite nice desktop environment with features we also seek to implement&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop without X!)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
* [http://www.scitechsoft.com/products/ent/snap_linux.html SciTech Snap Graphics]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver.&lt;br /&gt;
We should have a look at HW support when chosing the driver system. For example I&#039;ve read OpenGL drivers are not that common&lt;br /&gt;
(often they&#039;re not HW accelerated). A viable idea may be to just use OpenGL as the core API on top of something else. There&#039;re quite a lot OpenGL implementations&lt;br /&gt;
running on different low level drivers or even Mesa.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
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 [http://www.osnews.com/story.php?news_id=9609 comments] of one of the GTK+ developers.&lt;br /&gt;
&lt;br /&gt;
===Layer between 2D API and window manager (please enter name suggestions)===&lt;br /&gt;
Between the 2D API and the window manager one layer is missing&lt;br /&gt;
* that cares for user input by mouse, keyboard, ...&lt;br /&gt;
* that knows the basics about windows and controls their behaviour (A window manager only modifies this behaviour!)&lt;br /&gt;
* a Session manager that manages the processes which want do to screen output&lt;br /&gt;
* a message architecture that connects everything and enables inter-client communication&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Should we choose X for that? Quasi-standard, but old&lt;br /&gt;
* modify existing(?) systems&lt;br /&gt;
* port Presentation Manager -&amp;gt; access to source code needed&lt;br /&gt;
* code that ourselves?&lt;br /&gt;
&lt;br /&gt;
=== Window Manager ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/Standards/wm-spec Window Manager Specification Project]&lt;br /&gt;
* [http://tronche.com/gui/x/icccm/ Inter-Client Communication Conventions Manual] - Support this standard in order to let X applications run&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fwaimea Waimea] - WM which is using Cairo for all rendering, they write it&#039;s for X so one would have to check if this can be separated from X as well.&lt;br /&gt;
&lt;br /&gt;
==== Ideas for a new Window Manager ====&lt;br /&gt;
What features should a new windows manager have?&lt;br /&gt;
&lt;br /&gt;
Cinc: Obviously these ideas are inspired by stuff usually found on X. The WM needed for this project isn&#039;t the kind of&lt;br /&gt;
WM X uses. I think WM is the wrong word for it anyway. What&#039;s needed is primarily a compositing engine which is in charge&lt;br /&gt;
of allocating surfaces, giving them to the app, the app draws into them and the compositor puts it on the screen.&lt;br /&gt;
Input support is probably needed for this layer, too, so the compositor may move and stack windows correctly.&lt;br /&gt;
The final appearance of the graphics drawn on the surfacces is up to the applications not the compositor. It must be&lt;br /&gt;
that way IMHO because no compositor coder can imagine what app developer will finally do with a given infrastructure.&lt;br /&gt;
E.g. creating close, maximize etc. widgets in the compositor/WM effectively prevents the application developer from&lt;br /&gt;
adding his own widgets or removing the given one. OTOH if there&#039;s a documented way to tinker with (per window) then it&#039;s ok.&lt;br /&gt;
&lt;br /&gt;
The compositor/WM should be inspired by the Presentation manager (PM) found in OS/2. Granted it&#039;s old technology it&#039;s&lt;br /&gt;
unbelievable flexible. It&#039;s possible for the coder to alter the handling of every window/widget by subclassing the window procedures&lt;br /&gt;
provided by the system. For example the information area found in [http://www.os2world.com/cdwriting WPS-wizard] uses&lt;br /&gt;
this feature. PM is directed to order all the window areas differently (titlebar, close/maximize, client area) to give room for the&lt;br /&gt;
information area. The coders of PM never thought about the possibility to add such informations to windows back when they&lt;br /&gt;
did PM. It&#039;s not a hack and there&#039;s no need to change any WM code to get this to work.&lt;br /&gt;
&lt;br /&gt;
Lexip: What about the common look and feel of all the headers of the client windows? I&#039;d like to have a common theme for example, and all apps should have a header (with a little icon, and the close/minimize/... buttons) that paints according to that theme file. &lt;br /&gt;
&lt;br /&gt;
Cinc: ACK. What I mean is the WM should not restrict the developer from adding/removing widgets, from modifying the way how things are done for a particular window (e.g. positioning of widgets). This also applies on how things are painted. If the developer decides to remove all widgets and use an ugly custom theme (which is bad) he should be free to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Main Features =====&lt;br /&gt;
* Built i18n (internationoalization)&lt;br /&gt;
* .prestartup and .poststartup files&lt;br /&gt;
* Multiscreen support (with possibility of virtual desktops 1 being on physical screen 1, while having virtual desktop 4 on screen 2)&lt;br /&gt;
** Preview of desktop X on desktop Y. Like you have one desktop with the presentation on desktop X and on desktop Y (your main display for example) you see a resizable preview so you could have your script on the main display and still step through the slides&lt;br /&gt;
* Anti aliasing&lt;br /&gt;
* Virtual desktops (different layouts and number of desktops - 4x2, 3x3, ...)&lt;br /&gt;
* Storing sessions. Cinc: not sure the WM should do that&lt;br /&gt;
* 100% ewmh complient. Cinc: ???? if this is some X thingie it&#039;s probably not needed -&amp;gt; Lexip: yeah, it&#039;s X stuff, but if we want to support starting Xapps, and we should do that, then we gotta be ewmh complient with our WM/compositor&lt;br /&gt;
* Large desktops (scrolling and paging)&lt;br /&gt;
* Themes with possibility of associating a background image or pattern (i.e. blackbox)&lt;br /&gt;
&lt;br /&gt;
===== Client Window Features =====&lt;br /&gt;
* Client window header can be top/bottom/right/left (with vertical text if necessary).&lt;br /&gt;
* Window manager keeps track of stacking order of all client windows&lt;br /&gt;
* Sticky windows - Possibility to show clients on all or few or just one virtual desktop&lt;br /&gt;
* Virtual desktops with resolutions different from the physical screen resolution.&lt;br /&gt;
* Ability to display multiple virtual desktops on one physical screen.&lt;br /&gt;
* Maximization:&lt;br /&gt;
** Maximize to given area&lt;br /&gt;
** Maximize to actual screen&lt;br /&gt;
** Maximize to more than one screen&lt;br /&gt;
** Maximize vertically only&lt;br /&gt;
** Maximize horizontally only&lt;br /&gt;
* Clients can influence their states:&lt;br /&gt;
** Maximized&lt;br /&gt;
** Stacking order&lt;br /&gt;
** Shading&lt;br /&gt;
** Stickiness&lt;br /&gt;
** Desktop(s)&lt;br /&gt;
* Window in Window handling for MDI applications&lt;br /&gt;
* Edge snapping while move- resizing a client window&lt;br /&gt;
* Client window shading&lt;br /&gt;
* Store client window properties per application (size, position, etc)&lt;br /&gt;
* Client window can drop shadow&lt;br /&gt;
* Application icons in client window headers&lt;br /&gt;
* Different focus models (click to focus, focus follows mouse, ...)&lt;br /&gt;
&lt;br /&gt;
===== Docking Area Features =====&lt;br /&gt;
* Allow having multiple docking areas&lt;br /&gt;
* Docking areas can be hid (approaching mouse makes them appeare)&lt;br /&gt;
* Transparency&lt;br /&gt;
* Drop shadow&lt;br /&gt;
&lt;br /&gt;
Cinc: The WM should not be in charge of this. The Dock (or whatever) is just an application and should be treated as one.&lt;br /&gt;
&lt;br /&gt;
Lexip: question again about the theme. If the WM/compositor is not in charge of the docker, how can we set a common theme to it?&lt;br /&gt;
&lt;br /&gt;
Cinc: The WM/OS should provide the default bitmaps for it (or better any app) which can be queried by the app. Changing the theme will automatically change these BMPs. For buttons and alike the OS should provide a default drawing function which will ensure every app which uses the default automatically has a similar look and feel.&lt;br /&gt;
&lt;br /&gt;
===== Menu Features =====&lt;br /&gt;
* Dynamically filled menus (piped menus). Cinc: That&#039;s mostly up to the application IMHO with the exception of system menus.&lt;br /&gt;
* Menu configuration can be separated over several files, i.e. one file for each submenu section&lt;br /&gt;
* All the submenues can be called separatly (by key combination for example)&lt;br /&gt;
* Dockable menues (like blackbox)&lt;br /&gt;
* Transparency&lt;br /&gt;
* Drop shadow&lt;br /&gt;
* Icons for entries&lt;br /&gt;
&lt;br /&gt;
Cinc: I think the WM/compositor should only provide the infrastructure to show menus. The final appearance/usability is up to the app.&lt;br /&gt;
&lt;br /&gt;
Lexip: Here I&#039;m talking about the system menu. The menu where you can start all you apps, or anything that you&#039;d like to have in a menu. System menu is startable by right clicking on an empty spot on the background, or by keying-in some keyboard combination.&lt;br /&gt;
&lt;br /&gt;
Cinc: IMHO such a system menu also should be a dedicated app (so it is replacable without tinkering with the WM). This app monitors the input queue and reacts when the configured message arrives (keyboard/mouse/whatever).&lt;br /&gt;
&lt;br /&gt;
===== Configuration Features =====&lt;br /&gt;
* Configuration changes take effect withou restarting the wm&lt;br /&gt;
* Every single command is configurable to hava a certain keyboard or mouse click shortcut.&lt;br /&gt;
* Shortcuts are simple keyboard shortcuts (i.e. Ctrl+F1), or so called keychains known from Emacs editor (i.e. Alt+e+x)&lt;br /&gt;
* The wm allows mouse gestures, and keyboard mouse combined input (i.e. ctrl+mouse1 click, etc.)&lt;br /&gt;
* Single, double, or even tripple clicks call different actions (attention with patent from M$ in USA)&lt;br /&gt;
* Clicking the client window header is a different action than clicking the clients body for example. Cinc: can easily be done by treating those two as two coupled windows.&lt;br /&gt;
&lt;br /&gt;
===== Extensibility =====&lt;br /&gt;
* Programming interface (every single command can be called from outside).&lt;br /&gt;
* Allow writing modules and applications that interact with the wm. Cinc: ah ok, addresses some of my concerns from above&lt;br /&gt;
&lt;br /&gt;
===== Other =====&lt;br /&gt;
* Ability to play (opengl) games in fullscreen on virtual desktops instead of physical screens. (Today, if a game goes fullscreen, it&#039;ll either spread over all physical screens or the other screens are switched off... which is not nice if you would like to have the server stats/a map/whatever on the secondary screen).&lt;br /&gt;
&lt;br /&gt;
Lexip: that sounds as a nice idea to me. we gotta do that&lt;br /&gt;
&lt;br /&gt;
=== CMD ===&lt;br /&gt;
&lt;br /&gt;
* full capabilities of current CMD.EXE concerning&lt;br /&gt;
** usage of system messages and error codes&lt;br /&gt;
** nested io redirection&lt;br /&gt;
** grouping commands with round brackets&lt;br /&gt;
** &amp;amp;, &amp;amp;&amp;amp; |, and || operators&lt;br /&gt;
** correct wildcard matching for files with multiple extensions&lt;br /&gt;
** PROMPT command&lt;br /&gt;
** keep UPPERCASE environment variable names only ! (unlike 32-bit Command Interpreter from Jonathan de Boyne Pollard)&lt;br /&gt;
* proper implementation of EXTPROC command (fix errors with exptproc scripts not residing in current &lt;br /&gt;
directory)&lt;br /&gt;
* new general features&lt;br /&gt;
** support extended command set of Win NT CMD.EXE &lt;br /&gt;
*** at least include string functions with extended SET command&lt;br /&gt;
** extend IF clause with new conditions&lt;br /&gt;
*** os version match&lt;br /&gt;
*** free space on a drive&lt;br /&gt;
*** is drive removeable&lt;br /&gt;
*** is drive USB mass storage&lt;br /&gt;
*** more ?&lt;br /&gt;
*** easy syncing/unmounting for usb mass storage devices&lt;br /&gt;
** support PATHEXT variable&lt;br /&gt;
*** start files with their associated program&lt;br /&gt;
** automatic environment vars &lt;br /&gt;
*** DATE, DATE_SORTED, TIME, TIME_SORTED, WEEKDAY, DAY, MONTH, YEAR, YEARDAY&lt;br /&gt;
*** CMDLINE, ERRORLEVEL&lt;br /&gt;
*** OS, OSVER&lt;br /&gt;
*** BOOTDRIVE&lt;br /&gt;
** support filename completion&lt;br /&gt;
* new internal or extended commands&lt;br /&gt;
** INITVIOCMD determines a command being executed when initialized as a VIO session&lt;br /&gt;
** INITPMCMD determines a command being executed when initialized as a PM session&lt;br /&gt;
** SET allows to include equal signs in value of environment var&lt;br /&gt;
** SET /P retrieves value of environment var from keyboard&lt;br /&gt;
** SHIFT xx shifts parameter by positive number&lt;br /&gt;
** ECHO /N does not append CRLF to output&lt;br /&gt;
** CDD command changes directory and drive&lt;br /&gt;
** TIMER command starts, stops or displays the value of a timer&lt;br /&gt;
** SLEEP n waits for n secs&lt;br /&gt;
** PAUSE n waits for n secs&lt;br /&gt;
** implement START command with all features of DosStartSession, among others implement&lt;br /&gt;
*** /WAIT (synchronous start)&lt;br /&gt;
*** /NC (NoAutoClose)&lt;br /&gt;
*** /DOS[:settings.dat] (if DOS-Box still available)&lt;br /&gt;
*** /POS:x,y,x1,y1 (initial window position)&lt;br /&gt;
*** /ICON:icon.ico (system menu icon)&lt;br /&gt;
** MOVE files with implicit copy/delete across partitions&lt;br /&gt;
** exlicit UNLOCK command&lt;br /&gt;
** implicit unlock with COPY, DEL, REN, MOVE (very usefull, but also dangerous ?)&lt;br /&gt;
** macro support with ALIAS command&lt;br /&gt;
* new batch handling or batch commands&lt;br /&gt;
** %* specifies all parameters (like %1, %2 etc)&lt;br /&gt;
** in for loops support %%a%f, %%a%p, %%a%d and more for specifying filename, path and driveletter of matching file &lt;br /&gt;
** GOSUB - executes a subroutine&lt;br /&gt;
** RETURN [xx] - exits a batchfile or subroutine [with errorlevel]&lt;br /&gt;
** CANCEL (ends batch processing, but does not close window as EXIT does)&lt;br /&gt;
* Integration of any REXX replacement like with current CMD.EXE&lt;br /&gt;
** call of REXX Scripts with CMD&lt;br /&gt;
** usage of exit handlers&lt;br /&gt;
** manipulation of environment vars within REXX (changes remain after end of script, unless setlocal/endlocal() is called), including BEGINLIBPATH and ENDLIBPATH&lt;br /&gt;
** readonly access to the LIBPATH value as an environment variable&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
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&#039;t see many OS/2-apps which are worth to be supported no matter how much work it needs. Binary compatibility is out&lt;br /&gt;
of sight IMHO. Nobody really needs it (anyone really using OD nowadays?).&lt;br /&gt;
&lt;br /&gt;
=== Desktop (WPS) ===&lt;br /&gt;
&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
Work is in progress. See the [[desktop]] page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Don&#039;t use the linked page for discussion. If you want to discuss use this section or the discussion page (hey that&#039;s what it was made for).&lt;br /&gt;
&lt;br /&gt;
==== Spirit and Purpose of the WPS ====&lt;br /&gt;
The WPS only shows those parts of the computer system you have to deal with as a user.&lt;br /&gt;
&lt;br /&gt;
Its objects are taken from the user&#039;s world of experience. The implementation details are hidden.&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
Some WPS objects show or represent system details. That is, because daily administration tasks can also be regarded as &amp;quot;usage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Security ====&lt;br /&gt;
&lt;br /&gt;
Security should be a concern when creating the desktop application. GTK isn&#039;t secure by design so the desktop wont be either. Nevertheless we shouldn&#039;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.&lt;br /&gt;
&lt;br /&gt;
Ideas:&lt;br /&gt;
&lt;br /&gt;
* Only allow signed/hashed classes to be loaded&lt;br /&gt;
* Maybe require that every author uses GunPG to sign his/her class&lt;br /&gt;
* User has to allow loading any additional classes once&lt;br /&gt;
* &amp;quot;Save&amp;quot; classes will be listed in the users save class list&lt;br /&gt;
* The save class list is signed (GnuPG) to prevent altering&lt;br /&gt;
&lt;br /&gt;
Is this sufficient?&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
* any REXX replacement should implement the following&lt;br /&gt;
** true CMD integration like under OS/2&lt;br /&gt;
*** access to environment vars of the calling interpreter. Cinc: ???&lt;br /&gt;
** support of the full REXX C API or an equivalent concept (macro space control, app handlers, WPS object access API etc). Most of this is supported by Regina AFAIK.&lt;br /&gt;
** complete reimplementation of REXXUTIL ! I seem to remember having seen such a project for Windows and Unix.&lt;br /&gt;
* It should be possible to write GUI based apps with REXX, a bit [http://www.edm2.com/0601/drdialog.html Dr.Dialog] like&lt;br /&gt;
&lt;br /&gt;
=== Network Transparency ===&lt;br /&gt;
It would be cool to execute applications remotely.&lt;br /&gt;
&lt;br /&gt;
What we don&#039;t want is a distributed operating system like Amoeba or Inferno.&lt;br /&gt;
&lt;br /&gt;
The network transport would be inside Cairo or between Cairo and OpenGL.&lt;br /&gt;
(Above Cairo makes no sense, because Cairo can also manipulate memory-stored images; below OpenGL is too much data overhead.)&lt;br /&gt;
&lt;br /&gt;
When a user runs an application remotely, he wants to access devices on the client and the server. Examples for devices are&lt;br /&gt;
* printers&lt;br /&gt;
* mice, keyboard&lt;br /&gt;
* audio&lt;br /&gt;
* screens&lt;br /&gt;
* hard disks&lt;br /&gt;
* USB attached devices&lt;br /&gt;
* DVD burners&lt;br /&gt;
&lt;br /&gt;
We need some kind of abstraction layer. It would be nice, if everything can be controlled by WPS objects:&lt;br /&gt;
* drag application on computer -&amp;gt; application gets executed there&lt;br /&gt;
* double-click (or also drag&#039;n&#039;drop) keyboard object -&amp;gt; this keyboard works for my console session&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Implement only some crucial parts to ease source code migration. For example message queues, concept of object windows (often used to comunicate with background threads).&lt;br /&gt;
* Map often used PM-functions to counterparts of the chosen toolkit.&lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
* With the advance of virtualization technologies like XEN, Vanderpool and multicore cpus it becomes more and more common to have a second, virtual computer running in a VM. It should be possible to map the virtual screen of the VM to a physically existing display. (The idea is to give the user the feeling that he actually has two different computers (with a shared set of input devices). It might even be possible to add another set of input devices, so that two users could work on one computer. (one or maybe even both using an emulated computer...)&lt;br /&gt;
&lt;br /&gt;
* [http://herpolhode.com/rob/ugly.pdf What&#039;s bad about Unix]. Nice reading&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Plan_9_(operating_system) Plan 9]. The system the author of the reading above advocates to some degree. Not compatible enough, but interesting concepts.&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
** I think the problem of current user interfaces is that they have a lot data dependencies. This increases the response time as they often have to wait for the data to become available before they can start to draw. Data dependencies mostly stem from an overdose of flexibility (I&#039;m talking windows xp now).&lt;br /&gt;
*** XP&#039;s start menu: it is based on the directory structure in the startmenu folder. So in order to draw the menu it has to read from the hard disk several times as it needs to find out the structure and load the icons of the programs (they are mostly cached after the first time).&lt;br /&gt;
*** Drive windows, where the window needs to gather/update the drive information before it can be drawn the first time.&lt;br /&gt;
*** Explorer windows that display extended file info (eg id3 tags of mp3s) need to parse the files first. (in xp a corrupt media file can block the explorer, before you even get the chance to touch it)&lt;br /&gt;
&lt;br /&gt;
Short:&lt;br /&gt;
  Eyecandy and advanced/unnecessary features (even when switched off) waste cpu time.&lt;br /&gt;
&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;br /&gt;
&lt;br /&gt;
* As soon as we further expand the usage of WPS objects, the templates folder will grow and likewise the number of possible interactions and combinations of objects.&lt;br /&gt;
** How can the objects be sorted or structured so that the template folder won&#039;t scare of casual users?&lt;br /&gt;
** How can we tell the users about interactions?&lt;br /&gt;
*** Example Drag&#039;n&#039;Drop: When the user starts dragging, display possible targets with arrows, colors, or other marks?&lt;br /&gt;
&lt;br /&gt;
Or even let the objects come out of their hiding place, if they are not visible on the screen or in subfolders?&lt;br /&gt;
*** Example Creating of structures: XWorkplace has &amp;quot;Create new&amp;quot; in the context menu with the entries &amp;quot;Data File&amp;quot;, &amp;quot;Folder&amp;quot;, &amp;quot;Url Folder&amp;quot;, &amp;quot;Program Object&amp;quot; as standard. The idea is good, but can be better. Take a strategy game you don&#039;t know and build up a base very fast. Now let an OS/2 newbie do the same with OS/2 objects. It is much more complicated. There is no way to see what objects fit into each other and you have to know that there is a templates folder and there is a system setup folder with palettes and themes. You could sum up these sentences as the demand for &amp;quot;Feedback for the Users&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
You will find links to pages with some beef here later on.&lt;br /&gt;
&lt;br /&gt;
* Information about the [[desktop]] development.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3520</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3520"/>
		<updated>2005-11-22T21:36:42Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: network stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Discussion==&lt;br /&gt;
&lt;br /&gt;
This document is already some kind of discussion, you can add your comments in here as well. For real discussion please consult the [[Mailinglists | mailinglist]] &amp;lt;tt&amp;gt;voyager-dev@netlabs.org&amp;lt;/tt&amp;gt;, or use the [http://dir.gmane.org/gmane.org.netlabs.voyager.devel gmane.org web/news interface] to it.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
* [http://www.kernelthread.com/software/fslogger/ Filechange notification] in Mac OSX &amp;quot;Tiger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
*[http://www.opengl.org/ OpenGL], [http://freeglut.sourceforge.net/index.php FreeGLUT], [http://www.mathies.com/cpw/about.html CPW] (Application framework for windows, menus etc.). Here&#039;s a [http://www.mathies.com/cpw/textfiles/Cpw.txt Readme text].&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://www.gtk.org/plan/ GTK+ Planning] - a more recent plan of GTK+ development&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
* [http://www.opensolaris.org/os/ OpenSolaris]&lt;br /&gt;
* [http://www.ogre3d.org/ Ogre 3D] The open source real time 3D rendering engine - for nice 3D effects on the Voyager desktop&lt;br /&gt;
* [http://slashdot.org/article.pl?sid=05/11/03/1744230&amp;amp;tid=190&amp;amp;tid=109 Microsoft Singularity] - interesting paper by Microsoft about a concept study of a new OS&lt;br /&gt;
* [http://arstechnica.com/reviews/os/macosx-10.4.ars/13 Quartz and Quartz extreme], nice article giving an overview&lt;br /&gt;
* [http://klik.atekon.de/ Klik]: application bundles for KDE.&lt;br /&gt;
* More about application bundles: [http://mozart.chat.net/~jeske/unsolicitedDave/app_wrappers_yet_again.html http://mozart.chat.net/~jeske/unsolicitedDave/app_wrappers_yet_again.html], [http://mozart.chat.net/~jeske/unsolicitedDave/next_wrapper_description.html http://mozart.chat.net/~jeske/unsolicitedDave/next_wrapper_description.html], [http://mozart.chat.net/~jeske/unsolicitedDave/kde_encap_ideas.html http://mozart.chat.net/~jeske/unsolicitedDave/kde_encap_ideas.html]&lt;br /&gt;
* [http://rox.sourceforge.net/phpwiki/index.php/HomePage Rox] a quite nice desktop environment with features we also seek to implement&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop without X!)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
* [http://www.scitechsoft.com/products/ent/snap_linux.html SciTech Snap Graphics]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver.&lt;br /&gt;
We should have a look at HW support when chosing the driver system. For example I&#039;ve read OpenGL drivers are not that common&lt;br /&gt;
(often they&#039;re not HW accelerated). A viable idea may be to just use OpenGL as the core API on top of something else. There&#039;re quite a lot OpenGL implementations&lt;br /&gt;
running on different low level drivers or even Mesa.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
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 [http://www.osnews.com/story.php?news_id=9609 comments] of one of the GTK+ developers.&lt;br /&gt;
&lt;br /&gt;
===Layer between 2D API and window manager (please enter name suggestions)===&lt;br /&gt;
Between the 2D API and the window manager one layer is missing&lt;br /&gt;
* that cares for user input by mouse, keyboard, ...&lt;br /&gt;
* that knows the basics about windows and controls their behaviour (A window manager only modifies this behaviour!)&lt;br /&gt;
* a Session manager that manages the processes which want do to screen output&lt;br /&gt;
* a message architecture that connects everything and enables inter-client communication&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Should we choose X for that? Quasi-standard, but old&lt;br /&gt;
* modify existing(?) systems&lt;br /&gt;
* port Presentation Manager -&amp;gt; access to source code needed&lt;br /&gt;
* code that ourselves?&lt;br /&gt;
&lt;br /&gt;
=== Window Manager ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/Standards/wm-spec Window Manager Specification Project]&lt;br /&gt;
* [http://tronche.com/gui/x/icccm/ Inter-Client Communication Conventions Manual] - Support this standard in order to let X applications run&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fwaimea Waimea] - WM which is using Cairo for all rendering, they write it&#039;s for X so one would have to check if this can be separated from X as well.&lt;br /&gt;
&lt;br /&gt;
==== Ideas for a new Window Manager ====&lt;br /&gt;
What features should a new windows manager have?&lt;br /&gt;
&lt;br /&gt;
Cinc: Obviously these ideas are inspired by stuff usually found on X. The WM needed for this project isn&#039;t the kind of&lt;br /&gt;
WM X uses. I think WM is the wrong word for it anyway. What&#039;s needed is primarily a compositing engine which is in charge&lt;br /&gt;
of allocating surfaces, giving them to the app, the app draws into them and the compositor puts it on the screen.&lt;br /&gt;
Input support is probably needed for this layer, too, so the compositor may move and stack windows correctly.&lt;br /&gt;
The final appearance of the graphics drawn on the surfacces is up to the applications not the compositor. It must be&lt;br /&gt;
that way IMHO because no compositor coder can imagine what app developer will finally do with a given infrastructure.&lt;br /&gt;
E.g. creating close, maximize etc. widgets in the compositor/WM effectively prevents the application developer from&lt;br /&gt;
adding his own widgets or removing the given one. OTOH if there&#039;s a documented way to tinker with (per window) then it&#039;s ok.&lt;br /&gt;
&lt;br /&gt;
The compositor/WM should be inspired by the Presentation manager (PM) found in OS/2. Granted it&#039;s old technology it&#039;s&lt;br /&gt;
unbelievable flexible. It&#039;s possible for the coder to alter the handling of every window/widget by subclassing the window procedures&lt;br /&gt;
provided by the system. For example the information area found in [http://www.os2world.com/cdwriting WPS-wizard] uses&lt;br /&gt;
this feature. PM is directed to order all the window areas differently (titlebar, close/maximize, client area) to give room for the&lt;br /&gt;
information area. The coders of PM never thought about the possibility to add such informations to windows back when they&lt;br /&gt;
did PM. It&#039;s not a hack and there&#039;s no need to change any WM code to get this to work.&lt;br /&gt;
&lt;br /&gt;
Lexip: What about the common look and feel of all the headers of the client windows? I&#039;d like to have a common theme for example, and all apps should have a header (with a little icon, and the close/minimize/... buttons) that paints according to that theme file. &lt;br /&gt;
&lt;br /&gt;
Cinc: ACK. What I mean is the WM should not restrict the developer from adding/removing widgets, from modifying the way how things are done for a particular window (e.g. positioning of widgets). This also applies on how things are painted. If the developer decides to remove all widgets and use an ugly custom theme (which is bad) he should be free to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Main Features =====&lt;br /&gt;
* Built i18n (internationoalization)&lt;br /&gt;
* .prestartup and .poststartup files&lt;br /&gt;
* Multiscreen support (with possibility of virtual desktops 1 being on physical screen 1, while having virtual desktop 4 on screen 2)&lt;br /&gt;
** Preview of desktop X on desktop Y. Like you have one desktop with the presentation on desktop X and on desktop Y (your main display for example) you see a resizable preview so you could have your script on the main display and still step through the slides&lt;br /&gt;
* Anti aliasing&lt;br /&gt;
* Virtual desktops (different layouts and number of desktops - 4x2, 3x3, ...)&lt;br /&gt;
* Storing sessions. Cinc: not sure the WM should do that&lt;br /&gt;
* 100% ewmh complient. Cinc: ???? if this is some X thingie it&#039;s probably not needed -&amp;gt; Lexip: yeah, it&#039;s X stuff, but if we want to support starting Xapps, and we should do that, then we gotta be ewmh complient with our WM/compositor&lt;br /&gt;
* Large desktops (scrolling and paging)&lt;br /&gt;
* Themes with possibility of associating a background image or pattern (i.e. blackbox)&lt;br /&gt;
&lt;br /&gt;
===== Client Window Features =====&lt;br /&gt;
* Client window header can be top/bottom/right/left (with vertical text if necessary).&lt;br /&gt;
* Window manager keeps track of stacking order of all client windows&lt;br /&gt;
* Sticky windows - Possibility to show clients on all or few or just one virtual desktop&lt;br /&gt;
* Virtual desktops with resolutions different from the physical screen resolution.&lt;br /&gt;
* Ability to display multiple virtual desktops on one physical screen.&lt;br /&gt;
* Maximization:&lt;br /&gt;
** Maximize to given area&lt;br /&gt;
** Maximize to actual screen&lt;br /&gt;
** Maximize to more than one screen&lt;br /&gt;
** Maximize vertically only&lt;br /&gt;
** Maximize horizontally only&lt;br /&gt;
* Clients can influence their states:&lt;br /&gt;
** Maximized&lt;br /&gt;
** Stacking order&lt;br /&gt;
** Shading&lt;br /&gt;
** Stickiness&lt;br /&gt;
** Desktop(s)&lt;br /&gt;
* Window in Window handling for MDI applications&lt;br /&gt;
* Edge snapping while move- resizing a client window&lt;br /&gt;
* Client window shading&lt;br /&gt;
* Store client window properties per application (size, position, etc)&lt;br /&gt;
* Client window can drop shadow&lt;br /&gt;
* Application icons in client window headers&lt;br /&gt;
* Different focus models (click to focus, focus follows mouse, ...)&lt;br /&gt;
&lt;br /&gt;
===== Docking Area Features =====&lt;br /&gt;
* Allow having multiple docking areas&lt;br /&gt;
* Docking areas can be hid (approaching mouse makes them appeare)&lt;br /&gt;
* Transparency&lt;br /&gt;
* Drop shadow&lt;br /&gt;
&lt;br /&gt;
Cinc: The WM should not be in charge of this. The Dock (or whatever) is just an application and should be treated as one.&lt;br /&gt;
&lt;br /&gt;
Lexip: question again about the theme. If the WM/compositor is not in charge of the docker, how can we set a common theme to it?&lt;br /&gt;
&lt;br /&gt;
Cinc: The WM/OS should provide the default bitmaps for it (or better any app) which can be queried by the app. Changing the theme will automatically change these BMPs. For buttons and alike the OS should provide a default drawing function which will ensure every app which uses the default automatically has a similar look and feel.&lt;br /&gt;
&lt;br /&gt;
===== Menu Features =====&lt;br /&gt;
* Dynamically filled menus (piped menus). Cinc: That&#039;s mostly up to the application IMHO with the exception of system menus.&lt;br /&gt;
* Menu configuration can be separated over several files, i.e. one file for each submenu section&lt;br /&gt;
* All the submenues can be called separatly (by key combination for example)&lt;br /&gt;
* Dockable menues (like blackbox)&lt;br /&gt;
* Transparency&lt;br /&gt;
* Drop shadow&lt;br /&gt;
* Icons for entries&lt;br /&gt;
&lt;br /&gt;
Cinc: I think the WM/compositor should only provide the infrastructure to show menus. The final appearance/usability is up to the app.&lt;br /&gt;
&lt;br /&gt;
Lexip: Here I&#039;m talking about the system menu. The menu where you can start all you apps, or anything that you&#039;d like to have in a menu. System menu is startable by right clicking on an empty spot on the background, or by keying-in some keyboard combination.&lt;br /&gt;
&lt;br /&gt;
Cinc: IMHO such a system menu also should be a dedicated app (so it is replacable without tinkering with the WM). This app monitors the input queue and reacts when the configured message arrives (keyboard/mouse/whatever).&lt;br /&gt;
&lt;br /&gt;
===== Configuration Features =====&lt;br /&gt;
* Configuration changes take effect withou restarting the wm&lt;br /&gt;
* Every single command is configurable to hava a certain keyboard or mouse click shortcut.&lt;br /&gt;
* Shortcuts are simple keyboard shortcuts (i.e. Ctrl+F1), or so called keychains known from Emacs editor (i.e. Alt+e+x)&lt;br /&gt;
* The wm allows mouse gestures, and keyboard mouse combined input (i.e. ctrl+mouse1 click, etc.)&lt;br /&gt;
* Single, double, or even tripple clicks call different actions (attention with patent from M$ in USA)&lt;br /&gt;
* Clicking the client window header is a different action than clicking the clients body for example. Cinc: can easily be done by treating those two as two coupled windows.&lt;br /&gt;
&lt;br /&gt;
===== Extensibility =====&lt;br /&gt;
* Programming interface (every single command can be called from outside).&lt;br /&gt;
* Allow writing modules and applications that interact with the wm. Cinc: ah ok, addresses some of my concerns from above&lt;br /&gt;
&lt;br /&gt;
===== Other =====&lt;br /&gt;
* Ability to play (opengl) games in fullscreen on virtual desktops instead of physical screens. (Today, if a game goes fullscreen, it&#039;ll either spread over all physical screens or the other screens are switched off... which is not nice if you would like to have the server stats/a map/whatever on the secondary screen).&lt;br /&gt;
&lt;br /&gt;
Lexip: that sounds as a nice idea to me. we gotta do that&lt;br /&gt;
&lt;br /&gt;
=== CMD ===&lt;br /&gt;
&lt;br /&gt;
* full capabilities of current CMD.EXE concerning&lt;br /&gt;
** usage of system messages and error codes&lt;br /&gt;
** nested io redirection&lt;br /&gt;
** grouping commands with round brackets&lt;br /&gt;
** &amp;amp;, &amp;amp;&amp;amp; |, and || operators&lt;br /&gt;
** correct wildcard matching for files with multiple extensions&lt;br /&gt;
** PROMPT command&lt;br /&gt;
** keep UPPERCASE environment variable names only ! (unlike 32-bit Command Interpreter from Jonathan de Boyne Pollard)&lt;br /&gt;
* proper implementation of EXTPROC command (fix errors with exptproc scripts not residing in current &lt;br /&gt;
directory)&lt;br /&gt;
* new general features&lt;br /&gt;
** support extended command set of Win NT CMD.EXE &lt;br /&gt;
*** at least include string functions with extended SET command&lt;br /&gt;
** extend IF clause with new conditions&lt;br /&gt;
*** os version match&lt;br /&gt;
*** free space on a drive&lt;br /&gt;
*** is drive removeable&lt;br /&gt;
*** is drive USB mass storage&lt;br /&gt;
*** more ?&lt;br /&gt;
*** easy syncing/unmounting for usb mass storage devices&lt;br /&gt;
** support PATHEXT variable&lt;br /&gt;
*** start files with their associated program&lt;br /&gt;
** automatic environment vars &lt;br /&gt;
*** DATE, DATE_SORTED, TIME, TIME_SORTED, WEEKDAY, DAY, MONTH, YEAR, YEARDAY&lt;br /&gt;
*** CMDLINE, ERRORLEVEL&lt;br /&gt;
*** OS, OSVER&lt;br /&gt;
*** BOOTDRIVE&lt;br /&gt;
** support filename completion&lt;br /&gt;
* new internal or extended commands&lt;br /&gt;
** INITVIOCMD determines a command being executed when initialized as a VIO session&lt;br /&gt;
** INITPMCMD determines a command being executed when initialized as a PM session&lt;br /&gt;
** SET allows to include equal signs in value of environment var&lt;br /&gt;
** SET /P retrieves value of environment var from keyboard&lt;br /&gt;
** SHIFT xx shifts parameter by positive number&lt;br /&gt;
** ECHO /N does not append CRLF to output&lt;br /&gt;
** CDD command changes directory and drive&lt;br /&gt;
** TIMER command starts, stops or displays the value of a timer&lt;br /&gt;
** SLEEP n waits for n secs&lt;br /&gt;
** PAUSE n waits for n secs&lt;br /&gt;
** implement START command with all features of DosStartSession, among others implement&lt;br /&gt;
*** /WAIT (synchronous start)&lt;br /&gt;
*** /NC (NoAutoClose)&lt;br /&gt;
*** /DOS[:settings.dat] (if DOS-Box still available)&lt;br /&gt;
*** /POS:x,y,x1,y1 (initial window position)&lt;br /&gt;
*** /ICON:icon.ico (system menu icon)&lt;br /&gt;
** MOVE files with implicit copy/delete across partitions&lt;br /&gt;
** exlicit UNLOCK command&lt;br /&gt;
** implicit unlock with COPY, DEL, REN, MOVE (very usefull, but also dangerous ?)&lt;br /&gt;
** macro support with ALIAS command&lt;br /&gt;
* new batch handling or batch commands&lt;br /&gt;
** %* specifies all parameters (like %1, %2 etc)&lt;br /&gt;
** in for loops support %%a%f, %%a%p, %%a%d and more for specifying filename, path and driveletter of matching file &lt;br /&gt;
** GOSUB - executes a subroutine&lt;br /&gt;
** RETURN [xx] - exits a batchfile or subroutine [with errorlevel]&lt;br /&gt;
** CANCEL (ends batch processing, but does not close window as EXIT does)&lt;br /&gt;
* Integration of any REXX replacement like with current CMD.EXE&lt;br /&gt;
** call of REXX Scripts with CMD&lt;br /&gt;
** usage of exit handlers&lt;br /&gt;
** manipulation of environment vars within REXX (changes remain after end of script, unless setlocal/endlocal() is called), including BEGINLIBPATH and ENDLIBPATH&lt;br /&gt;
** readonly access to the LIBPATH value as an environment variable&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
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&#039;t see many OS/2-apps which are worth to be supported no matter how much work it needs. Binary compatibility is out&lt;br /&gt;
of sight IMHO. Nobody really needs it (anyone really using OD nowadays?).&lt;br /&gt;
&lt;br /&gt;
=== Desktop (WPS) ===&lt;br /&gt;
&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
Work is in progress. See the [[desktop]] page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Don&#039;t use the linked page for discussion. If you want to discuss use this section or the discussion page (hey that&#039;s what it was made for).&lt;br /&gt;
&lt;br /&gt;
==== Security ====&lt;br /&gt;
&lt;br /&gt;
Security should be a concern when creating the desktop application. GTK isn&#039;t secure by design so the desktop wont be either. Nevertheless we shouldn&#039;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.&lt;br /&gt;
&lt;br /&gt;
Ideas:&lt;br /&gt;
&lt;br /&gt;
* Only allow signed/hashed classes to be loaded&lt;br /&gt;
* Maybe require that every author uses GunPG to sign his/her class&lt;br /&gt;
* User has to allow loading any additional classes once&lt;br /&gt;
* &amp;quot;Save&amp;quot; classes will be listed in the users save class list&lt;br /&gt;
* The save class list is signed (GnuPG) to prevent altering&lt;br /&gt;
&lt;br /&gt;
Is this sufficient?&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
* any REXX replacement should implement the following&lt;br /&gt;
** true CMD integration like under OS/2&lt;br /&gt;
*** access to environment vars of the calling interpreter. Cinc: ???&lt;br /&gt;
** support of the full REXX C API or an equivalent concept (macro space control, app handlers, WPS object access API etc). Most of this is supported by Regina AFAIK.&lt;br /&gt;
** complete reimplementation of REXXUTIL ! I seem to remember having seen such a project for Windows and Unix.&lt;br /&gt;
* It should be possible to write GUI based apps with REXX, a bit [http://www.edm2.com/0601/drdialog.html Dr.Dialog] like&lt;br /&gt;
&lt;br /&gt;
=== Network Transparency ===&lt;br /&gt;
It would be cool to execute applications remotely.&lt;br /&gt;
&lt;br /&gt;
What we don&#039;t want is a distributed operating system like Amoeba or Inferno.&lt;br /&gt;
&lt;br /&gt;
The network transport would be inside Cairo or between Cairo and OpenGL.&lt;br /&gt;
(Above Cairo makes no sense, because Cairo can also manipulate memory-stored images; below OpenGL is too much data overhead.)&lt;br /&gt;
&lt;br /&gt;
When a user runs an application remotely, he wants to access devices on the client and the server. Examples for devices are&lt;br /&gt;
* printers&lt;br /&gt;
* mice, keyboard&lt;br /&gt;
* audio&lt;br /&gt;
* screens&lt;br /&gt;
* hard disks&lt;br /&gt;
* USB attached devices&lt;br /&gt;
* DVD burners&lt;br /&gt;
&lt;br /&gt;
We need some kind of abstraction layer. It would be nice, if everything can be controlled by WPS objects:&lt;br /&gt;
* drag application on computer -&amp;gt; application gets executed there&lt;br /&gt;
* double-click (or also drag&#039;n&#039;drop) keyboard object -&amp;gt; this keyboard works for my console session&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Implement only some crucial parts to ease source code migration. For example message queues, concept of object windows (often used to comunicate with background threads).&lt;br /&gt;
* Map often used PM-functions to counterparts of the chosen toolkit.&lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
* With the advance of virtualization technologies like XEN, Vanderpool and multicore cpus it becomes more and more common to have a second, virtual computer running in a VM. It should be possible to map the virtual screen of the VM to a physically existing display. (The idea is to give the user the feeling that he actually has two different computers (with a shared set of input devices). It might even be possible to add another set of input devices, so that two users could work on one computer. (one or maybe even both using an emulated computer...)&lt;br /&gt;
&lt;br /&gt;
* [http://herpolhode.com/rob/ugly.pdf What&#039;s bad about Unix]. Nice reading&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Plan_9_(operating_system) Plan 9]. The system the author of the reading above advocates to some degree. Not compatible enough, but interesting concepts.&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
** I think the problem of current user interfaces is that they have a lot data dependencies. This increases the response time as they often have to wait for the data to become available before they can start to draw. Data dependencies mostly stem from an overdose of flexibility (I&#039;m talking windows xp now).&lt;br /&gt;
*** XP&#039;s start menu: it is based on the directory structure in the startmenu folder. So in order to draw the menu it has to read from the hard disk several times as it needs to find out the structure and load the icons of the programs (they are mostly cached after the first time).&lt;br /&gt;
*** Drive windows, where the window needs to gather/update the drive information before it can be drawn the first time.&lt;br /&gt;
*** Explorer windows that display extended file info (eg id3 tags of mp3s) need to parse the files first. (in xp a corrupt media file can block the explorer, before you even get the chance to touch it)&lt;br /&gt;
&lt;br /&gt;
Short:&lt;br /&gt;
  Eyecandy and advanced/unnecessary features (even when switched off) waste cpu time.&lt;br /&gt;
&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
You will find links to pages with some beef here later on.&lt;br /&gt;
&lt;br /&gt;
* Information about the [[desktop]] development.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3483</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3483"/>
		<updated>2005-11-07T12:35:36Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: Plan 9&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
*[http://www.opengl.org/ OpenGL], [http://freeglut.sourceforge.net/index.php FreeGLUT], [http://www.mathies.com/cpw/about.html CPW] (Application framework for windows, menus etc.). Here&#039;s a [http://www.mathies.com/cpw/textfiles/Cpw.txt Readme text].&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://www.gtk.org/plan/ GTK+ Planning] - a more recent plan of GTK+ development&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
* [http://www.opensolaris.org/os/ OpenSolaris]&lt;br /&gt;
* [http://www.ogre3d.org/ Ogre 3D] The open source real time 3D rendering engine - for nice 3D effects on the Voyager desktop&lt;br /&gt;
* [http://slashdot.org/article.pl?sid=05/11/03/1744230&amp;amp;tid=190&amp;amp;tid=109 Microsoft Singularity] - interesting paper by Microsoft about a concept study of a new OS&lt;br /&gt;
* [http://arstechnica.com/reviews/os/macosx-10.4.ars/13 Quartz and Quartz extreme], nice article giving an overview&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop without X!)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
* [http://www.scitechsoft.com/products/ent/snap_linux.html SciTech Snap Graphics]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver.&lt;br /&gt;
We should have a look at HW support when chosing the driver system. For example I&#039;ve read OpenGL drivers are not that common&lt;br /&gt;
(often they&#039;re not HW accelerated). A viable idea may be to just use OpenGL as the core API on top of something else. There&#039;re quite a lot OpenGL implementations&lt;br /&gt;
running on different low level drivers or even Mesa.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
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 [http://www.osnews.com/story.php?news_id=9609 comments] of one of the GTK+ developers.&lt;br /&gt;
&lt;br /&gt;
===Layer between 2D API and window manager (please enter name suggestions)===&lt;br /&gt;
Between the 2D API and the window manager one layer is missing&lt;br /&gt;
* that cares for user input by mouse, keyboard, ...&lt;br /&gt;
* that knows the basics about windows and controls their behaviour (A window manager only modifies this behaviour!)&lt;br /&gt;
* a Session manager that manages the processes which want do to screen output&lt;br /&gt;
* a message architecture that connects everything and enables inter-client communication&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Should we choose X for that? Quasi-standard, but old&lt;br /&gt;
* modify existing(?) systems&lt;br /&gt;
* port Presentation Manager -&amp;gt; access to source code needed&lt;br /&gt;
* code that ourselves?&lt;br /&gt;
&lt;br /&gt;
=== Window Manager ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/Standards/wm-spec Window Manager Specification Project]&lt;br /&gt;
* [http://tronche.com/gui/x/icccm/ Inter-Client Communication Conventions Manual] - Support this standard in order to let X applications run&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fwaimea Waimea] - WM which is using Cairo for all rendering, they write it&#039;s for X so one would have to check if this can be separated from X as well.&lt;br /&gt;
&lt;br /&gt;
==== Ideas for a new Window Manager ====&lt;br /&gt;
What features should a new windows manager have?&lt;br /&gt;
&lt;br /&gt;
Cinc: Obviously these ideas are inspired by stuff usually found on X. The WM needed for this project isn&#039;t the kind of&lt;br /&gt;
WM X uses. I think WM is the wrong word for it anyway. What&#039;s needed is primarily a compositing engine which is in charge&lt;br /&gt;
of allocating surfaces, giving them to the app, the app draws into them and the compositor puts it on the screen.&lt;br /&gt;
Input support is probably needed for this layer, too, so the compositor may move and stack windows correctly.&lt;br /&gt;
The final appearance of the graphics drawn on the surfacces is up to the applications not the compositor. It must be&lt;br /&gt;
that way IMHO because no compositor coder can imagine what app developer will finally do with a given infrastructure.&lt;br /&gt;
E.g. creating close, maximize etc. widgets in the compositor/WM effectively prevents the application developer from&lt;br /&gt;
adding his own widgets or removing the given one. OTOH if there&#039;s a documented way to tinker with (per window) then it&#039;s ok.&lt;br /&gt;
&lt;br /&gt;
The compositor/WM should be inspired by the Presentation manager (PM) found in OS/2. Granted it&#039;s old technology it&#039;s&lt;br /&gt;
unbelievable flexible. It&#039;s possible for the coder to alter the handling of every window/widget by subclassing the window procedures&lt;br /&gt;
provided by the system. For example the information area found in [http://www.os2world.com/cdwriting WPS-wizard] uses&lt;br /&gt;
this feature. PM is directed to order all the window areas differently (titlebar, close/maximize, client area) to give room for the&lt;br /&gt;
information area. The coders of PM never thought about the possibility to add such informations to windows back when they&lt;br /&gt;
did PM. It&#039;s not a hack and there&#039;s no need to change any WM code to get this to work.&lt;br /&gt;
&lt;br /&gt;
Lexip: What about the common look and feel of all the headers of the client windows? I&#039;d like to have a common theme for example, and all apps should have a header (with a little icon, and the close/minimize/... buttons) that paints according to that theme file. &lt;br /&gt;
&lt;br /&gt;
Cinc: ACK. What I mean is the WM should not restrict the developer from adding/removing widgets, from modifying the way how things are done for a particular window (e.g. positioning of widgets). This also applies on how things are painted. If the developer decides to remove all widgets and use an ugly custom theme (which is bad) he should be free to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Main Features =====&lt;br /&gt;
* Built i18n (internationoalization)&lt;br /&gt;
* .prestartup and .poststartup files&lt;br /&gt;
* Multiscreen support (with possibility of virtual desktops 1 being on physical screen 1, while having virtual desktop 4 on screen 2)&lt;br /&gt;
* Anti aliasing&lt;br /&gt;
* Virtual desktops (different layouts and number of desktops - 4x2, 3x3, ...)&lt;br /&gt;
* Storing sessions. Cinc: not sure the WM should do that&lt;br /&gt;
* 100% ewmh complient. Cinc: ???? if this is some X thingie it&#039;s probably not needed -&amp;gt; Lexip: yeah, it&#039;s X stuff, but if we want to support starting Xapps, and we should do that, then we gotta be ewmh complient with our WM/compositor&lt;br /&gt;
* Large desktops (scrolling and paging)&lt;br /&gt;
* Themes with possibility of associating a background image or pattern (i.e. blackbox)&lt;br /&gt;
&lt;br /&gt;
===== Client Window Features =====&lt;br /&gt;
* Client window header can be top/bottom/right/left (with vertical text if necessary).&lt;br /&gt;
* Window manager keeps track of stacking order of all client windows&lt;br /&gt;
* Sticky windows - Possibility to show clients on all or few or just one virtual desktop&lt;br /&gt;
* Virtual desktops with resolutions different from the physical screen resolution.&lt;br /&gt;
* Ability to display multiple virtual desktops on one physical screen.&lt;br /&gt;
* Maximization:&lt;br /&gt;
** Maximize to given area&lt;br /&gt;
** Maximize to actual screen&lt;br /&gt;
** Maximize to more than one screen&lt;br /&gt;
** Maximize vertically only&lt;br /&gt;
** Maximize horizontally only&lt;br /&gt;
* Clients can influence their states:&lt;br /&gt;
** Maximized&lt;br /&gt;
** Stacking order&lt;br /&gt;
** Shading&lt;br /&gt;
** Stickiness&lt;br /&gt;
** Desktop(s)&lt;br /&gt;
* Window in Window handling for MDI applications&lt;br /&gt;
* Edge snapping while move- resizing a client window&lt;br /&gt;
* Client window shading&lt;br /&gt;
* Store client window properties per application (size, position, etc)&lt;br /&gt;
* Client window can drop shadow&lt;br /&gt;
* Application icons in client window headers&lt;br /&gt;
* Different focus models (click to focus, focus follows mouse, ...)&lt;br /&gt;
&lt;br /&gt;
===== Docking Area Features =====&lt;br /&gt;
* Allow having multiple docking areas&lt;br /&gt;
* Docking areas can be hid (approaching mouse makes them appeare)&lt;br /&gt;
* Transparency&lt;br /&gt;
* Drop shadow&lt;br /&gt;
&lt;br /&gt;
Cinc: The WM should not be in charge of this. The Dock (or whatever) is just an application and should be treated as one.&lt;br /&gt;
&lt;br /&gt;
Lexip: question again about the theme. If the WM/compositor is not in charge of the docker, how can we set a common theme to it?&lt;br /&gt;
&lt;br /&gt;
Cinc: The WM/OS should provide the default bitmaps for it (or better any app) which can be queried by the app. Changing the theme will automatically change these BMPs. For buttons and alike the OS should provide a default drawing function which will ensure every app which uses the default automatically has a similar look and feel.&lt;br /&gt;
&lt;br /&gt;
===== Menu Features =====&lt;br /&gt;
* Dynamically filled menus (piped menus). Cinc: That&#039;s mostly up to the application IMHO with the exception of system menus.&lt;br /&gt;
* Menu configuration can be separated over several files, i.e. one file for each submenu section&lt;br /&gt;
* All the submenues can be called separatly (by key combination for example)&lt;br /&gt;
* Dockable menues (like blackbox)&lt;br /&gt;
* Transparency&lt;br /&gt;
* Drop shadow&lt;br /&gt;
* Icons for entries&lt;br /&gt;
&lt;br /&gt;
Cinc: I think the WM/compositor should only provide the infrastructure to show menus. The final appearance/usability is up to the app.&lt;br /&gt;
&lt;br /&gt;
Lexip: Here I&#039;m talking about the system menu. The menu where you can start all you apps, or anything that you&#039;d like to have in a menu. System menu is startable by right clicking on an empty spot on the background, or by keying-in some keyboard combination.&lt;br /&gt;
&lt;br /&gt;
Cinc: IMHO such a system menu also should be a dedicated app (so it is replacable without tinkering with the WM). This app monitors the input queue and reacts when the configured message arrives (keyboard/mouse/whatever).&lt;br /&gt;
&lt;br /&gt;
===== Configuration Features =====&lt;br /&gt;
* Configuration changes take effect withou restarting the wm&lt;br /&gt;
* Every single command is configurable to hava a certain keyboard or mouse click shortcut.&lt;br /&gt;
* Shortcuts are simple keyboard shortcuts (i.e. Ctrl+F1), or so called keychains known from Emacs editor (i.e. Alt+e+x)&lt;br /&gt;
* The wm allows mouse gestures, and keyboard mouse combined input (i.e. ctrl+mouse1 click, etc.)&lt;br /&gt;
* Single, double, or even tripple clicks call different actions (attention with patent from M$ in USA)&lt;br /&gt;
* Clicking the client window header is a different action than clicking the clients body for example. Cinc: can easily be done by treating those two as two coupled windows.&lt;br /&gt;
&lt;br /&gt;
===== Extensibility =====&lt;br /&gt;
* Programming interface (every single command can be called from outside).&lt;br /&gt;
* Allow writing modules and applications that interact with the wm. Cinc: ah ok, addresses some of my concerns from above&lt;br /&gt;
&lt;br /&gt;
===== Other =====&lt;br /&gt;
* Ability to play (opengl) games in fullscreen on virtual desktops instead of physical screens. (Today, if a game goes fullscreen, it&#039;ll either spread over all physical screens or the other screens are switched off... which is not nice if you would like to have the server stats/a map/whatever on the secondary screen).&lt;br /&gt;
&lt;br /&gt;
Lexip: that sounds as a nice idea to me. we gotta do that&lt;br /&gt;
&lt;br /&gt;
=== CMD ===&lt;br /&gt;
&lt;br /&gt;
* full capabilities of current CMD.EXE concerning&lt;br /&gt;
** usage of system messages and error codes&lt;br /&gt;
** nested io redirection&lt;br /&gt;
** grouping commands with round brackets&lt;br /&gt;
** &amp;amp;, &amp;amp;&amp;amp; |, and || operators&lt;br /&gt;
** correct wildcard matching for files with multiple extensions&lt;br /&gt;
** PROMPT command&lt;br /&gt;
** keep UPPERCASE environment variable names only ! (unlike 32-bit Command Interpreter from Jonathan de Boyne Pollard)&lt;br /&gt;
* proper implementation of EXTPROC command (fix errors with exptproc scripts not residing in current &lt;br /&gt;
directory)&lt;br /&gt;
* new general features&lt;br /&gt;
** support extended command set of Win NT CMD.EXE &lt;br /&gt;
*** at least include string functions with extended SET command&lt;br /&gt;
** extend IF clause with new conditions&lt;br /&gt;
*** os version match&lt;br /&gt;
*** free space on a drive&lt;br /&gt;
*** is drive removeable&lt;br /&gt;
*** is drive USB mass storage&lt;br /&gt;
*** more ?&lt;br /&gt;
*** easy syncing/unmounting for usb mass storage devices&lt;br /&gt;
** support PATHEXT variable&lt;br /&gt;
*** start files with their associated program&lt;br /&gt;
** automatic environment vars &lt;br /&gt;
*** DATE, DATE_SORTED, TIME, TIME_SORTED, WEEKDAY, DAY, MONTH, YEAR, YEARDAY&lt;br /&gt;
*** CMDLINE, ERRORLEVEL&lt;br /&gt;
*** OS, OSVER&lt;br /&gt;
*** BOOTDRIVE&lt;br /&gt;
** support filename completion&lt;br /&gt;
* new internal or extended commands&lt;br /&gt;
** INITVIOCMD determines a command being executed when initialized as a VIO session&lt;br /&gt;
** INITPMCMD determines a command being executed when initialized as a PM session&lt;br /&gt;
** SET allows to include equal signs in value of environment var&lt;br /&gt;
** SET /P retrieves value of environment var from keyboard&lt;br /&gt;
** SHIFT xx shifts parameter by positive number&lt;br /&gt;
** ECHO /N does not append CRLF to output&lt;br /&gt;
** CDD command changes directory and drive&lt;br /&gt;
** TIMER command starts, stops or displays the value of a timer&lt;br /&gt;
** SLEEP n waits for n secs&lt;br /&gt;
** PAUSE n waits for n secs&lt;br /&gt;
** implement START command with all features of DosStartSession, among others implement&lt;br /&gt;
*** /WAIT (synchronous start)&lt;br /&gt;
*** /NC (NoAutoClose)&lt;br /&gt;
*** /DOS[:settings.dat] (if DOS-Box still available)&lt;br /&gt;
*** /POS:x,y,x1,y1 (initial window position)&lt;br /&gt;
*** /ICON:icon.ico (system menu icon)&lt;br /&gt;
** MOVE files with implicit copy/delete across partitions&lt;br /&gt;
** exlicit UNLOCK command&lt;br /&gt;
** implicit unlock with COPY, DEL, REN, MOVE (very usefull, but also dangerous ?)&lt;br /&gt;
** macro support with ALIAS command&lt;br /&gt;
* new batch handling or batch commands&lt;br /&gt;
** %* specifies all parameters (like %1, %2 etc)&lt;br /&gt;
** in for loops support %%a%f, %%a%p, %%a%d and more for specifying filename, path and driveletter of matching file &lt;br /&gt;
** GOSUB - executes a subroutine&lt;br /&gt;
** RETURN [xx] - exits a batchfile or subroutine [with errorlevel]&lt;br /&gt;
** CANCEL (ends batch processing, but does not close window as EXIT does)&lt;br /&gt;
* Integration of any REXX replacement like with current CMD.EXE&lt;br /&gt;
** call of REXX Scripts with CMD&lt;br /&gt;
** usage of exit handlers&lt;br /&gt;
** manipulation of environment vars within REXX (changes remain after end of script, unless setlocal/endlocal() is called), including BEGINLIBPATH and ENDLIBPATH&lt;br /&gt;
** readonly access to the LIBPATH value as an environment variable&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
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&#039;t see many OS/2-apps which are worth to be supported no matter how much work it needs. Binary compatibility is out&lt;br /&gt;
of sight IMHO. Nobody really needs it (anyone really using OD nowadays?).&lt;br /&gt;
&lt;br /&gt;
=== WPS ===&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
* any REXX replacement should implement the following&lt;br /&gt;
** true CMD integration like under OS/2&lt;br /&gt;
*** access to environment vars of the calling interpreter. Cinc: ???&lt;br /&gt;
** support of the full REXX C API or an equivalent concept (macro space control, app handlers, WPS object access API etc). Most of this is supported by Regina AFAIK.&lt;br /&gt;
** complete reimplementation of REXXUTIL ! I seem to remember having seen such a project for Windows and Unix.&lt;br /&gt;
* It should be possible to write GUI based apps with REXX, a bit [http://www.edm2.com/0601/drdialog.html Dr.Dialog] like&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Implement only some crucial parts to ease source code migration. For example message queues, concept of object windows (often used to comunicate with background threads).&lt;br /&gt;
* Map often used PM-functions to counterparts of the chosen toolkit.&lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
* With the advance of virtualization technologies like XEN, Vanderpool and multicore cpus it becomes more and more common to have a second, virtual computer running in a VM. It should be possible to map the virtual screen of the VM to a physically existing display. (The idea is to give the user the feeling that he actually has two different computers (with a shared set of input devices). It might even be possible to add another set of input devices, so that two users could work on one computer. (one or maybe even both using an emulated computer...)&lt;br /&gt;
&lt;br /&gt;
* [http://herpolhode.com/rob/ugly.pdf What&#039;s bad about Unix]. Nice reading&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Plan_9_(operating_system) Plan 9]. The system the author of the reading above advocates to some degree. Not compatible enough, but interesting concepts.&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
** I think the problem of current user interfaces is that they have a lot data dependencies. This increases the response time as they often have to wait for the data to become available before they can start to draw. Data dependencies mostly stem from an overdose of flexibility (I&#039;m talking windows xp now).&lt;br /&gt;
*** XP&#039;s start menu: it is based on the directory structure in the startmenu folder. So in order to draw the menu it has to read from the hard disk several times as it needs to find out the structure and load the icons of the programs (they are mostly cached after the first time).&lt;br /&gt;
*** Drive windows, where the window needs to gather/update the drive information before it can be drawn the first time.&lt;br /&gt;
*** Explorer windows that display extended file info (eg id3 tags of mp3s) need to parse the files first. (in xp a corrupt media file can block the explorer, before you even get the chance to touch it)&lt;br /&gt;
&lt;br /&gt;
Short:&lt;br /&gt;
  Eyecandy and advanced/unnecessary features (even when switched off) waste cpu time.&lt;br /&gt;
&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3464</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3464"/>
		<updated>2005-11-03T13:22:47Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: missing layer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
*[http://www.opengl.org/ OpenGL], [http://freeglut.sourceforge.net/index.php FreeGLUT], [http://www.mathies.com/cpw/about.html CPW] (Application framework for windows, menus etc.). Here&#039;s a [http://www.mathies.com/cpw/textfiles/Cpw.txt Readme text].&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://www.gtk.org/plan/ GTK+ Planning] - a more recent plan of GTK+ development&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
* [http://www.opensolaris.org/os/ OpenSolaris]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop without X!)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
* [http://www.scitechsoft.com/products/ent/snap_linux.html SciTech Snap Graphics]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver.&lt;br /&gt;
We should have a look at HW support when chosing the driver system. For example I&#039;ve read OpenGL drivers are not that common&lt;br /&gt;
(often they&#039;re not HW accelerated). A viable idea may be to just use OpenGL as the core API on top of something else. There&#039;re quite a lot OpenGL implementations&lt;br /&gt;
running on different low level drivers or even Mesa.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
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 [http://www.osnews.com/story.php?news_id=9609 comments] of one of the GTK+ developers.&lt;br /&gt;
&lt;br /&gt;
===Layer between 2D API and window manager (please enter name suggestions)===&lt;br /&gt;
Between the 2D API and the window manager one layer is missing&lt;br /&gt;
* that cares for user input by mouse, keyboard, ...&lt;br /&gt;
* that knows the basics about windows and controls their behaviour (A window manager only modifies this behaviour!)&lt;br /&gt;
* a Session manager that manages the processes which want do to screen output&lt;br /&gt;
* a message architecture that connects everything and enables inter-client communication&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Should we choose X for that? Quasi-standard, but old&lt;br /&gt;
* modify existing(?) systems&lt;br /&gt;
* port Presentation Manager -&amp;gt; access to source code needed&lt;br /&gt;
* code that ourselves?&lt;br /&gt;
&lt;br /&gt;
=== Window Manager ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/Standards/wm-spec Window Manager Specification Project]&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fwaimea Waimea] - WM which is using Cairo for all rendering, they write it&#039;s for X so one would have to check if this can be separated from X as well&lt;br /&gt;
&lt;br /&gt;
=== CMD ===&lt;br /&gt;
&lt;br /&gt;
* full capabilities of current CMD.EXE concerning&lt;br /&gt;
** usage of system messages and error codes&lt;br /&gt;
** nested io redirection&lt;br /&gt;
** grouping commands with round brackets&lt;br /&gt;
** &amp;amp;, &amp;amp;&amp;amp; |, and || operators&lt;br /&gt;
** correct wildcard matching for files with multiple extensions&lt;br /&gt;
** PROMPT command&lt;br /&gt;
** keep UPPERCASE environment variable names only ! (unlike 32-bit Command Interpreter from Jonathan de Boyne Pollard)&lt;br /&gt;
* proper implementation of EXTPROC command (fix errors with exptproc scripts not residing in current &lt;br /&gt;
directory)&lt;br /&gt;
* new general features&lt;br /&gt;
** support extended command set of Win NT CMD.EXE &lt;br /&gt;
*** at least include string functions with extended SET command&lt;br /&gt;
** extend IF clause with new conditions&lt;br /&gt;
*** os version match&lt;br /&gt;
*** free space on a drive&lt;br /&gt;
*** is drive removeable&lt;br /&gt;
*** is drive USB mass storage&lt;br /&gt;
*** more ?&lt;br /&gt;
** support PATHEXT variable&lt;br /&gt;
*** start files with their associated program&lt;br /&gt;
** automatic environment vars &lt;br /&gt;
*** DATE, DATE_SORTED, TIME, TIME_SORTED, WEEKDAY, DAY, MONTH, YEAR, YEARDAY&lt;br /&gt;
*** CMDLINE, ERRORLEVEL&lt;br /&gt;
*** OS, OSVER&lt;br /&gt;
*** BOOTDRIVE&lt;br /&gt;
** support filename completion&lt;br /&gt;
* new internal or extended commands&lt;br /&gt;
** INITVIOCMD determines a command being executed when initialized as a VIO session&lt;br /&gt;
** INITPMCMD determines a command being executed when initialized as a PM session&lt;br /&gt;
** SET allows to include equal signs in value of environment var&lt;br /&gt;
** SET /P retrieves value of environment var from keyboard&lt;br /&gt;
** SHIFT xx shifts parameter by positive number&lt;br /&gt;
** ECHO /N does not append CRLF to output&lt;br /&gt;
** CDD command changes directory and drive&lt;br /&gt;
** TIMER command starts, stops or displays the value of a timer&lt;br /&gt;
** SLEEP n waits for n secs&lt;br /&gt;
** PAUSE n waits for n secs&lt;br /&gt;
** implement START command with all features of DosStartSession, among others implement&lt;br /&gt;
*** /WAIT (synchronous start)&lt;br /&gt;
*** /NC (NoAutoClose)&lt;br /&gt;
*** /DOS[:settings.dat] (if DOS-Box still available)&lt;br /&gt;
*** /POS:x,y,x1,y1 (initial window position)&lt;br /&gt;
*** /ICON:icon.ico (system menu icon)&lt;br /&gt;
** MOVE files with implicit copy/delete across partitions&lt;br /&gt;
** exlicit UNLOCK command&lt;br /&gt;
** implicit unlock with COPY, DEL, REN, MOVE (very usefull, but also dangerous ?)&lt;br /&gt;
** macro support with ALIAS command&lt;br /&gt;
* new batch handling or batch commands&lt;br /&gt;
** %* specifies all parameters (like %1, %2 etc)&lt;br /&gt;
** in for loops support %%a%f, %%a%p, %%a%d and more for specifying filename, path and driveletter of matching file &lt;br /&gt;
** GOSUB - executes a subroutine&lt;br /&gt;
** RETURN [xx] - exits a batchfile or subroutine [with errorlevel]&lt;br /&gt;
** CANCEL (ends batch processing, but does not close window as EXIT does)&lt;br /&gt;
* Integration of any REXX replacement like with current CMD.EXE&lt;br /&gt;
** call of REXX Scripts with CMD&lt;br /&gt;
** usage of exit handlers&lt;br /&gt;
** manipulation of environment vars within REXX (changes remain after end of script, unless setlocal/endlocal() is called), including BEGINLIBPATH and ENDLIBPATH&lt;br /&gt;
** readonly access to the LIBPATH value as an environment variable&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
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&#039;t see many OS/2-apps which are worth to be supported no matter how much work it needs. Binary compatibility is out&lt;br /&gt;
of sight IMHO. Nobody really needs it (anyone really using OD nowadays?).&lt;br /&gt;
&lt;br /&gt;
=== WPS ===&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
* any REXX replacement should implement the following&lt;br /&gt;
** true CMD integration like under OS/2&lt;br /&gt;
*** access to environment vars of the calling interpreter. Cinc: ???&lt;br /&gt;
** support of the full REXX C API or an equivalent concept (macro space control, app handlers, WPS object access API etc). Most of this is supported by Regina AFAIK.&lt;br /&gt;
** complete reimplementation of REXXUTIL ! I seem to remember having seen such a project for Windows and Unix.&lt;br /&gt;
* It should be possible to write GUI based apps with REXX, a bit [http://www.edm2.com/0601/drdialog.html Dr.Dialog] like&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Implement only some crucial parts to ease source code migration. For example message queues, concept of object windows (often used to comunicate with background threads).&lt;br /&gt;
* Map often used PM-functions to counterparts of the chosen toolkit.&lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3448</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3448"/>
		<updated>2005-10-31T08:58:13Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: added Snap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
* [http://www.scitechsoft.com/products/ent/snap_linux.html SciTech Snap Graphics]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver.&lt;br /&gt;
We should have a look at HW support when chosing the driver system. For example I&#039;ve read OpenGL drivers are not that common&lt;br /&gt;
(often they&#039;re not HW accelerated). A viable idea may be to just use OpenGL as the core API on top of something else. There&#039;re quite a lot OpenGL implementations&lt;br /&gt;
running on different low level drivers or even Mesa.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
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&#039;t see many OS/2-apps which are worth to be supported no matter how much work it needs. Binary compatibility is out&lt;br /&gt;
of sight IMHO. Nobody really needs it (anyone really using OD nowadays?).&lt;br /&gt;
&lt;br /&gt;
=== WPS ===&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
* any REXX replacement should implement the following&lt;br /&gt;
** true CMD integration like under OS/2&lt;br /&gt;
*** access to environment vars of the calling interpreter. Cinc: ???&lt;br /&gt;
** support of the full REXX C API or an equivalent concept (macro space control, app handlers, WPS object access API etc). Most of this is supported by Regina AFAIK.&lt;br /&gt;
** complete reimplementation of REXXUTIL ! I seem to remember having seen such a project for Windows and Unix.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Implement only some crucial parts to ease source code migration. For example message queues, concept of object windows (often used to comunicate with background threads).&lt;br /&gt;
Map often used PM-functions to counterparts of the chosen toolkit.&lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3439</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3439"/>
		<updated>2005-10-30T21:36:14Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
=== WPS ===&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3438</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3438"/>
		<updated>2005-10-30T21:35:51Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, and DirectFB programs on the same graphics driver.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
=== WPS ===&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3437</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3437"/>
		<updated>2005-10-30T21:35:16Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: move ggi to 2D api&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, DirectFB and GGI programs on the same graphics driver.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
=== WPS ===&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3436</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3436"/>
		<updated>2005-10-30T21:29:50Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: corrected links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* [http://x.org X11]&lt;br /&gt;
* [http://www.khronos.org/opengles OpenGL ES] (an OpenGL only desktop)&lt;br /&gt;
* [http://directfb.org DirectFB]&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, DirectFB and GGI programs on the same graphics driver.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
=== WPS ===&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3435</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3435"/>
		<updated>2005-10-30T21:27:18Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: 2D APIs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://enlightenment.org/Main/Home/index.html Enlightenment] and its support libs. Here&#039;s a [http://www.elivecd.org/ Live CD].&lt;br /&gt;
** Why Englightenment? So far I just knew it as a fancy desktop, what makes it special? [[User:Ktk|Ktk]] 15:39, 30 October 2005 (CET)&lt;br /&gt;
** Cinc: it&#039;s more than just a fancy desktop. It offers quite some libs e.g. HW accelerated canvas on top of OpenGL, libs for alphachannel blending of pics, antialiased text, imlib and quite some more.&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===Graphics Drivers===&lt;br /&gt;
* X11&lt;br /&gt;
* OpenGL&lt;br /&gt;
* DirectFB&lt;br /&gt;
* [http://www.ggi-project.org General Graphics Interface]&lt;br /&gt;
&lt;br /&gt;
These graphics engines can be emulated vice-versa: You can run X11, OpenGL, DirectFB and GGI programs on the same graphics driver.&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
* To make things easier 24Bit screens should be the primary target. Hell it&#039;s 2005 today...&lt;br /&gt;
&lt;br /&gt;
It seems there are many possiblities here!&lt;br /&gt;
* [http://www.cairographics.org Cairo] (used by GTK+)&lt;br /&gt;
* [http://www.enlightenment.org/Libraries/Evas Evas] (used by Enlightenment)&lt;br /&gt;
* [http://www.levien.com/libart libart] (used by Gnome)&lt;br /&gt;
* [http://antigrain.com Anti-Grain Geometry]&lt;br /&gt;
* [http://www.libsdl.org Simple DirectMedia Layer]&lt;br /&gt;
* [http://doc.trolltech.com/4.0/qt4-arthur.html Arthur] (used by KDE)&lt;br /&gt;
&lt;br /&gt;
We will have to use more than one. KDE programs use Arthur, GTK+ ones use Cairo, and so on ...&lt;br /&gt;
These libraries are (mostly) used for display and printing. So we won&#039;t have a consistent graphical subsystem with this multitude.&lt;br /&gt;
&lt;br /&gt;
All these libraries have several backends, e.g. X11, DirectFB, OpenGL, OS/2, ...&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
* The concept of IO procedures should be retained at least for file IO and format converting.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult (Cinc: there&#039;s already a working prototype for the basic functionality).&lt;br /&gt;
&lt;br /&gt;
=== WPS ===&lt;br /&gt;
* The WPS should be designed with REXX scriptability in mind (like WPS-wizard addon)&lt;br /&gt;
&lt;br /&gt;
=== REXX ===&lt;br /&gt;
* REXX should be implemented like AppleScript so controlling of applications from other apps is possible (commands not tied to one process).&lt;br /&gt;
* [http://regina-rexx.sourceforge.net/ Regina] may be used as an interpreter.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;br /&gt;
** the question is if we can incooperate the WM functionality in GTK somehow. As far as I remember [http://fresco.org/ Fresco] implemented GTK API as well so one might have a look at that.&lt;br /&gt;
** IMO GTK runs on top of a WM. The WM just gives GTK a surface to work with but manages where on screen this surface will be painted. Even OS/2 has something like a WM managing the windows for us.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3423</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3423"/>
		<updated>2005-10-28T16:03:53Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: added DirectFB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.directfb.org DirectFB] with [http://www.directfb.org/index.php?path=Development/Projects/XDirectFB rootless XServer], [http://www.directfb.org/index.php?path=Development/Projects/DirectFBGL hardware accelerated OpenGL], [http://www.directfb.org/index.php?path=Development/Projects/GTK%2B GTK+ backend], [http://www.directfb.org/index.php/viewcvs.cgi/cairodfb an experimental Cairo backend], Qt backend, DirectVNC, SDL backend&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3422</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3422"/>
		<updated>2005-10-28T13:26:45Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: additional question&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;br /&gt;
* do we want the traditional window manager&amp;lt;-&amp;gt;application scheme? With the Gnome/KDE interfaces? Then we are deep in X again ...&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3421</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3421"/>
		<updated>2005-10-28T10:30:53Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: X on GL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development]- among other topics about cairo integration and a new theme system&lt;br /&gt;
* [http://people.freedesktop.org/~ajax/ddc2005.pdf X on GL] states very clearly, what has still to be done&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3420</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3420"/>
		<updated>2005-10-27T23:43:14Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development] (among other topics about cairo integration and a new theme system)&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* the Xegl diagram mentioned above only shows the path of the graphics; the path of e.g. mouse and keyboard input is missing; that&#039;s not as trivial as it sounds (it has been [http://lwn.net/Articles/149783 missing in Xegl], when that was stopped); will we use OS/2-like driver model or wait for x.org 7.0 (currently RC1!) and take out the input system from there? Other sources (hotplug, ...)?&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3419</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3419"/>
		<updated>2005-10-27T22:38:17Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: link to gtk+ info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram.&lt;br /&gt;
* [http://www.usenix.org/events/usenix04/tech/freenix/nilsson.html Glitz: Hardware Accelerated Image Compositing Using OpenGL] and as [http://www.cs.umu.se/~c99drn/opengl_freenix04.pdf PDF]&lt;br /&gt;
* [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments]&lt;br /&gt;
* [http://people.redhat.com/mclasen/Usenix04/notes.pdf Current gtk+ development] (among other topics about cairo integration and a new theme system)&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
===2D API===&lt;br /&gt;
* [http://cairographics.org Cairo]. Cairo has a PDF-like engine which seems to be inspired by Quartz of MacOS X.&lt;br /&gt;
* Cairo runs on almost everything, including OS/2 and X but also directly on OpenGL hardware with Glitz. So one could use it as a complete GPI replacement without the need of X one day.&lt;br /&gt;
&lt;br /&gt;
===Toolkits===&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
===SOM===&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult.&lt;br /&gt;
&lt;br /&gt;
=== Backward Compatibility ===&lt;br /&gt;
The question about backward compatibility is indeed a good one, it&#039;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+.&lt;br /&gt;
&lt;br /&gt;
At the moment it&#039;s unfortunately unlikely that PM and WPS source get released by IBM.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* implement parts of PM and GPI on top of the new 2D API and try to integrate it with the toolkit choosen (same look &amp;amp; feel, clipboard support, D&amp;amp;D, etc. That&#039;s a lot of work, the question is if this is really necessary. We would have to do the same for supporting other toolkits like qt (which is a requirement). &lt;br /&gt;
* Use a VM and run OS/2 or eCS inside the VM. There are very promising opensource VMs like&lt;br /&gt;
** [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN]&lt;br /&gt;
** [http://fabrice.bellard.free.fr/qemu/ QEMU]&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3410</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3410"/>
		<updated>2005-10-26T20:53:02Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: link has changed, while I read the page!?!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram. [http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments].&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3409</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=3409"/>
		<updated>2005-10-26T20:49:17Z</updated>

		<summary type="html">&lt;p&gt;ShadoW: Added link to Jon Smirl&amp;#039;s article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Documentation==&lt;br /&gt;
===IBM Redbooks===&lt;br /&gt;
* SG24-4630-00 OS/2 Warp (PowerPC Edition) A First Look&lt;br /&gt;
* SG24-4639-00 OS/2 Warp (PowerPC Edition) Graphical Subsystem&lt;br /&gt;
&lt;br /&gt;
We do have the first one digitaly, but not the second one. In case anyone finds that, let us know.&lt;br /&gt;
&lt;br /&gt;
===Darwin Documentation===&lt;br /&gt;
There is plenty of documentation available about Darwin, a good start is [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming], which gives a nice overview about the design of the kernel.&lt;br /&gt;
&lt;br /&gt;
==Technologies to study==&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fglitz glitz] - OpenGL interface for Cairo, so one could run Cairo directly on OpenGL, see [http://www.freedesktop.org/wiki/Xegl Xegl] for a diagram. [http://www.freedesktop.org/~jonsmirl/graphics.htm The State of Linux Graphics], [http://lwn.net/Articles/149917 comments] and more [http://groups.google.com/group/linux.kernel/browse_frm/thread/c2f4978ce450ed9a/2d8842acb180b581 comments].&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep.org]&lt;br /&gt;
&lt;br /&gt;
== Design Decisions ==&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
*GTK+&lt;br /&gt;
*GnuStep (look at Apples programs to see what&#039;s possible. Yes I know Apple uses Cocoa not Gnustep)&lt;br /&gt;
*other?&lt;br /&gt;
&lt;br /&gt;
Dropping SOM for something better? Creating a poor mans SOM kernel isn&#039;t too difficult.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Questions==&lt;br /&gt;
* one good thing about OS/2 are the fast interactions when you click somewhere, like opening a folder or getting the focus on a window. Why is that like this? We should try to keep that stuff fast.&lt;/div&gt;</summary>
		<author><name>ShadoW</name></author>
	</entry>
</feed>