<?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=Cinc</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=Cinc"/>
	<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php/Special:Contributions/Cinc"/>
	<updated>2026-06-09T02:30:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Mailinglists&amp;diff=5034</id>
		<title>Mailinglists</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Mailinglists&amp;diff=5034"/>
		<updated>2008-04-30T15:40:38Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Fixed links to community ML web frontend&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
== Mailinglists for projects ==&lt;br /&gt;
netlabs.org provides some mailinglists for its projects. Usualy the name is projectname-dev and projectname-user. As you can imagine the -dev list is ment for developers and the -user list for users of the project itself. Please respect that separation and do not post user questions in the developer list!&lt;br /&gt;
&lt;br /&gt;
* To post a message to the list, send an email to &amp;lt;tt&amp;gt;&amp;lt;listname&amp;gt;@netlabs.org&amp;lt;/tt&amp;gt;&lt;br /&gt;
* To subscribe, e-mail: &amp;lt;tt&amp;gt;&amp;lt;listname&amp;gt;-subscribe@netlabs.org&amp;lt;/tt&amp;gt;&lt;br /&gt;
* To unsubscribe, e-mail: &amp;lt;tt&amp;gt;&amp;lt;listname&amp;gt;-unsubscribe@netlabs.org&amp;lt;/tt&amp;gt;&lt;br /&gt;
* For additional commands, e-mail: &amp;lt;tt&amp;gt;&amp;lt;listname&amp;gt;-help@netlabs.org&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We also provide digest lists:&lt;br /&gt;
&lt;br /&gt;
* To subscribe to the digest, e-mail: &amp;lt;tt&amp;gt;&amp;lt;listname&amp;gt;-digest-subscribe@netlabs.org&amp;lt;/tt&amp;gt;&lt;br /&gt;
* To unsubscribe from the digest, e-mail: &amp;lt;tt&amp;gt;&amp;lt;listname&amp;gt;-digest-unsubscribe@netlabs.org&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To post messages to the list, e-mail: &amp;lt;tt&amp;gt;&amp;lt;listname&amp;gt;@netlabs.org&amp;lt;/tt&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Where &amp;lt;tt&amp;gt;&amp;lt;listname&amp;gt;&amp;lt;/tt&amp;gt; is for example &amp;lt;tt&amp;gt;xworkplace-dev&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== netlabs.org community === &lt;br /&gt;
If you want to join the netlabs.org community mailinglist, send an eMail to &amp;lt;tt&amp;gt;community-subscribe@netlabs.org&amp;lt;/tt&amp;gt;. The subject and the body of the eMail can be empty. You will almost immediately receive an email to confirm your subscription request. To finally subscribe, you need to reply to the confirmation email! If you forget to do that, you will not be subscribed to the list!&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The website for the community mailinglist is:&lt;br /&gt;
http://dir.gmane.org/gmane.org.netlabs.community&lt;br /&gt;
&lt;br /&gt;
This points directly to the messages:&lt;br /&gt;
http://news.gmane.org/gmane.org.netlabs.community/&lt;br /&gt;
&lt;br /&gt;
=== gmane.org: Newsgroup interface &amp;amp; web archive === &lt;br /&gt;
To make sure that everyone can access the mailinglists easily we also provide a newsgroup interface at http://gmane.org where you can read and post messages to the lists.&amp;lt;br/&amp;gt;&lt;br /&gt;
gmane.org is an excellent service that provides a newsgroup interface for subscribed mailinglists. Also it acts as an archive for the list and they provide a very simple to use webinterface where you can also post messages if you wish.&lt;br /&gt;
&lt;br /&gt;
All mailinglists at netlabs.org are subscribed in our own netlabs hierarchy: [http://news.gmane.org/index.php?prefix=gmane.org.netlabs gmane.org.netlabs]&lt;br /&gt;
&lt;br /&gt;
You can either read them with your prefered newsreader or via the web interface. The newsserver is news://news.gmane.org&lt;br /&gt;
&lt;br /&gt;
You can also post to the lists without a subscription to the list itself! The first time you post a message via news you will get a confirmation email so it is necessary that you provide a valid email address in your news settings. Once you confirmed that email you will be able to post messages to the list wihtout a real subscription to the mailinglist itself. Note that you &#039;&#039;&#039;have&#039;&#039;&#039; to provide a &#039;&#039;&#039;valid&#039;&#039;&#039; email address in your newsreader for sure, otherwise it will not work.&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Main_Page&amp;diff=5033</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Main_Page&amp;diff=5033"/>
		<updated>2008-04-30T15:28:27Z</updated>

		<summary type="html">&lt;p&gt;Cinc: IRC now on irc.freenode.net&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Welcome to the Wiki at netlabs.org. You will find a lot of interesting information about OS/2 and [http://www.ecomstation.com eCS] on this page.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can take part in the community as follows&lt;br /&gt;
* read the [[Netlabs_News|netlabs.org news]]&lt;br /&gt;
* join the [[Mailinglists|community mailinglist]]&lt;br /&gt;
* join the [irc://irc.freenode.net/#netlabs #netlabs IRC channel] (currently on irc.freenode.net).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CONTRIBUTE&#039;&#039;&#039;: Unfortunately, we have to prevent registering new users till we have fixed the spamming-problems on the Wiki, sorry! If you want to &#039;&#039;&#039;create an user account&#039;&#039;&#039; please send an email with your desired user name to os2info [at] gmx.net and we will generate it for you. Will be fixed ASAP.&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
Where are we now and where could we go. Open for discussions.&lt;br /&gt;
&lt;br /&gt;
*[[Ideas]] - This is so far a random collection of ideas and stuff we have in our heads and which probably is worth creating a project for.&lt;br /&gt;
** [[Ideas#New_PM_Controls|New PM Controls]]&lt;br /&gt;
&lt;br /&gt;
* [[Community]] - Discussions about the netlabs.org community, website, and so on. Complain here :)&lt;br /&gt;
&lt;br /&gt;
* [[The Warp Wishlist]]- The OS/2 Warp WishList is now available on wiki format.&lt;br /&gt;
&lt;br /&gt;
* [[Netlabs bi weekly newsletter]] - &#039;&#039;New&#039;&#039; The latest netlabs.org news&lt;br /&gt;
&lt;br /&gt;
* [[Netlabs News]] - Even later than above&lt;br /&gt;
&lt;br /&gt;
* [[Voyager]] - See some discussion on the new eComStation platform that the developers community currently designs&lt;br /&gt;
&lt;br /&gt;
* [[Warpstock Europe Websites]] - Discussion of a concept that aims to provide infrastructure and information to organizers, and information and services to users/visitors.&lt;br /&gt;
&lt;br /&gt;
* [[UniAudio Development]] Universal Audio Driver Development Discussion&lt;br /&gt;
&lt;br /&gt;
* [[WarpVision Development]] WarpVision media player development discussion&lt;br /&gt;
&lt;br /&gt;
*[[Fundraising campaign]] - Projects that could be realized, support your favourite one!&lt;br /&gt;
&lt;br /&gt;
*[[XWorkplace]] - XWorkplace Future Plans and Ideas&lt;br /&gt;
&lt;br /&gt;
*[[Network Connection Manager]] - Design for follow-up to Wireless LAN Monitor&lt;br /&gt;
&lt;br /&gt;
*[[DOSBox Port]] - DOSBox Port for OS/2-eCS Project&lt;br /&gt;
&lt;br /&gt;
*[[Odin]] - ODIN Project todo and Ideas&lt;br /&gt;
&lt;br /&gt;
*[[eSchemes]] - eComStation WPS-based look &amp;amp; feel system&lt;br /&gt;
&lt;br /&gt;
*[[Mr2ice]] - MR/2 ICE is a full featured OS/2 native mail and news client.&lt;br /&gt;
&lt;br /&gt;
*[[MMOS2 Related Projects]] - A list of MMO2 Related sofware developments.&lt;br /&gt;
&lt;br /&gt;
*[[Extensions for WarpIN]] - A list of suggested exentions to WarpIN&lt;br /&gt;
&lt;br /&gt;
== Shop ==&lt;br /&gt;
[[Image:Netlabs_watch.png|frame|netlabs watch]]&lt;br /&gt;
We do have a shop for shirts and more ... [http://shop.netlabs.org shop.netlabs.org]! Prices include a small extra to support netlabs.org&#039;s future...&lt;br /&gt;
&lt;br /&gt;
== New Logo and Redesign ==&lt;br /&gt;
* [[Redesign]] - The new logo is choosen and a first and hopefully final draft for the new site layout has been created - check it out ;)&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE:&amp;lt;/b&amp;gt; This section should not be extended anymore. We reloaded the [http://www.edm2.com EDM/2 magazine] and we recommend to put all developer stuff in there. This wiki is a mess at the moment and we will clean that up one day and migrate the stuff that makes sense to EDM/2. Thanks!&lt;br /&gt;
&lt;br /&gt;
This section contains hints and tricks and descriptions of undocumented&lt;br /&gt;
stuff. Undocumented means there&#039;s no official documentation or the &lt;br /&gt;
documentation (for example included on DevCon CDs) isn&#039;t available to&lt;br /&gt;
the public anymore. But DON&#039;T JUST COPY any documentation you may have into the Wiki. Keep in mind it&#039;s copyrighted! &lt;br /&gt;
&lt;br /&gt;
* [[Undocumented stuff]]&lt;br /&gt;
* [[Mozilla]] - some stuff regarding building Mozilla on OS/2&lt;br /&gt;
* [http://www.edm2.com/index.php/SDL SDL] - some tips &amp;amp; tricks about how to port applications using SDL to OS/2&lt;br /&gt;
* [http://www.edm2.com/index.php/How_to_program_for_the_WPS WPS] - how to program for the [http://en.wikipedia.org/wiki/Workplace_Shell WPS]. Note: the german Wikipedia may have more information about the WPS. Go [http://de.wikipedia.org/wiki/Workplace_Shell here].&lt;br /&gt;
&lt;br /&gt;
==OS/2 and eCS resources==&lt;br /&gt;
===Drivers===&lt;br /&gt;
*Visit http://www.os2warp.be if you want to know if your hardware is supported.&lt;br /&gt;
*See a [http://www.ecomstation.it/pido2/home/mircomir/fixpak.php?lang=en driver list] generated from eCSoft/2 database.&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
For software have a look here:&lt;br /&gt;
&lt;br /&gt;
* http://hobbes.nmsu.edu&lt;br /&gt;
* http://en.ecomstation.ru/apecs.php&lt;br /&gt;
* http://www.ecomstation.it/ecsoft2/&lt;br /&gt;
* http://www.unixos2.org - ported *nix tools. A little bit cumbersome to find stuff there but nevertheless worth the effort&lt;br /&gt;
&lt;br /&gt;
===Programs===&lt;br /&gt;
How to use specific programs, HowTos, FAQs etc.&lt;br /&gt;
&lt;br /&gt;
MR/2 ICE [[mr2ice]] is a full featured OS/2 native mail and news client.&lt;br /&gt;
&lt;br /&gt;
===eCS Maintainance===&lt;br /&gt;
Quite a few things are different in eComStation compared to OS/2. Find tips and tricks for common (and not so common) tasks.&lt;br /&gt;
&lt;br /&gt;
* [[Rebuild your eCS desktop]]&lt;br /&gt;
&lt;br /&gt;
==netlabs.org Servers==&lt;br /&gt;
===ToDo&#039;s &amp;amp; History===&lt;br /&gt;
This is the list of tasks for netlabs.org Webservers and the history of what I (ktk) did&lt;br /&gt;
*[[netlabs.org]]&lt;br /&gt;
&lt;br /&gt;
===Mail account===&lt;br /&gt;
Some information for those who own a mailbox at netlabs.org&lt;br /&gt;
*[[netlabs.org Mailing]]&lt;br /&gt;
===Admin Guide===&lt;br /&gt;
So far it&#039;s more or less just me who does all the work on netlabs.org webpages and this somewhat sucks because like this a lot of stuff depends on my lazyness. The following document explains the tasks necessary to create a new project at netlabs.org, including setting up CVS repositories, creating webpages and so on. I hope that I will find some volunteers one day who help me on doing that.&lt;br /&gt;
*[[Admin Guide]]&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=5007</id>
		<title>Voyager API Design Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=5007"/>
		<updated>2008-03-20T23:20:30Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Minor rewrite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
This page contains a first draft for the Design and Implementation Guide for the Voyager API. Please note that the codename Voyager will not appear in the resulting document anylonger, once this document has reached the final version.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
The Voyager API will be implemented as an object oriented class library, using the Netlabs Object Model (NOM).&lt;br /&gt;
&lt;br /&gt;
In the progress of ongoing development, for different reasons it may be required that the Voyager API could use extensions, due to&lt;br /&gt;
* changes within the system, applications require additional interfaces to&lt;br /&gt;
** the underlying kernel or&lt;br /&gt;
** supporting libraries&lt;br /&gt;
* new hardware or file formats requiring support&lt;br /&gt;
* new concepts requiring implementation of new classes and/or frameworks (sets of classes)&lt;br /&gt;
&lt;br /&gt;
In order to keep a high quality standard within the Voyager API, it is vital to ensure that contributions match the way the current Voyager API is designed and implemented. This is the task of the maintainers of the Voyager API, and is done by&lt;br /&gt;
* maintaining this document, defining the rules and methods for design and implementation&lt;br /&gt;
* providing expertise before or during the design and/or implementation of an extension (the earlier involved, the better)&lt;br /&gt;
* deciding if a given contribution can be accepted or has to be modified to meet the requirements for a contribution to the Voyager API&lt;br /&gt;
&lt;br /&gt;
== About this document ==&lt;br /&gt;
This document is intended for the following people:&lt;br /&gt;
* developers, for understanding&lt;br /&gt;
** the methods and rules that are used for and apply to the task of designing and implementing additions to the Voyager API&lt;br /&gt;
** how to contribute extensions to the maintainers of the Voyager API&lt;br /&gt;
* maintainers of the Voyager API, for&lt;br /&gt;
** ensuring that contributed extensions apply to the rules of design and implementation described in this document and meet the requirements for a contribution&lt;br /&gt;
** performing the defined methods/procedures when accepting a contribution&lt;br /&gt;
&lt;br /&gt;
== Design Goals for the Voyager API ==&lt;br /&gt;
The design goals for the Voyager API are:&lt;br /&gt;
* the API is implemented as an object oriented class library&lt;br /&gt;
* using Netlabs Object Model (NOM)&lt;br /&gt;
** allows bindings for non-OO compiler and script languages&lt;br /&gt;
** allows better binary compatibility for external extensions&lt;br /&gt;
* no 1-1 implementation of (one of) the underlying libraries&lt;br /&gt;
** trade in some flexibility for simplicity&lt;br /&gt;
** cover approx. 60-80% of the used cases of the supported libraries&lt;br /&gt;
* gain the same reputation concerning quality like the OS/2 API&lt;br /&gt;
** see this API as &#039;&#039;&#039;advertisement&#039;&#039;&#039; for Voyager as an &#039;&#039;&#039;exemplary development platform&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Implementing the Voyager API as an object oriented class library ==&lt;br /&gt;
The Voyager API will be implemented using the Netlabs Object Model (NOM), implementing a runtime for an object oriented class library. Thus the API itself will be implemented as software classes, allowing access to data and functionality by their interface, being implemented by methods (kind of functions) and members (variables). &lt;br /&gt;
&lt;br /&gt;
Within the class library, all software classes are part of the class hierarchy, where specialized subclasses are derived from parent classes. Subclasses inherit the behaviour from the parent class, and extend an/or modify the behaviour of the parent class. Some of the parent classes are so-called &#039;abstract classes&#039; that is they are not intended to create instances of it, but only for implementing base functionality for subclasses. A special form of this are &#039;virtual base classes&#039;, which do not implement any code, but only define the mandantory interface of a subclass (e.g. a virtual base class for file decoder defines that a subclass for handling of a specific file must implement the method ReadFileContents).&lt;br /&gt;
&lt;br /&gt;
The complete API will be spearated into major parts by [[Voyager_API_Design|groups of classes]]. When the API is to be extended, this can happen by&lt;br /&gt;
* implementing the extension in a new or existing method in an existing class&lt;br /&gt;
* derive a new class from an existing one, and implementing the extension in this class&lt;br /&gt;
* define a new major API or framework and derive a complete new group of classes from  the root class, implementing the extension in these classes&lt;br /&gt;
&lt;br /&gt;
The following rules apply when deciding which of these options are applicable for a given extension:&lt;br /&gt;
* &#039;&#039;&amp;lt;not yet determined&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Another design issue is to decide when using native compiler types (or appropriate typedef&#039;s) instead of classes for data types. In general, for maximum performance and minimum complexity, the native compiler data types should be used for simple data types. For complex data types, or where compiler implemented operators are not sufficient, data type classes should be implemented. In general, data type classes will be implemented by the Netlabs Object Model (NOM), if they are not specific to a special part of the Voyager API implemented with it.&lt;br /&gt;
&lt;br /&gt;
== The Voyager API Classes and Interface Namespace ==&lt;br /&gt;
&lt;br /&gt;
Cinc: this part must be reviewed and should be considered a proposal only.&lt;br /&gt;
&amp;lt;br&amp;gt;cla: all of this document must be considered as a proposal :-)&lt;br /&gt;
&lt;br /&gt;
The class names and the names of the classes&#039; methods and members are prefixed by a tag identifying the major part of the API. &lt;br /&gt;
&lt;br /&gt;
the next section is not true [[User:Simpson 2|Simpson 2]] 18:21, 20 March 2008 (CET) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strike&amp;gt;The reasons for the member name prefix is that the IDL compiler creates access macros with the method or member name prepended by an underscore only. If the  members would not be prefixed, two classes within the entire class hierarchy could not have a method with the same name without resorting to the full method name which is built from the class name followed by the method name. &amp;lt;/strike&amp;gt;&lt;br /&gt;
Secondly using prefixes helps identifying the class group a method belongs to.&lt;br /&gt;
&lt;br /&gt;
Within a major part of the Voyager API, &lt;br /&gt;
* class names are prepended with an all upper case prefix, like SVC, SYS, WP, e.g. SYSObject&lt;br /&gt;
* member names are prepended with a lower case prefix, like svc, sys, wp, e.g. sysQueryUniverseSize()&lt;br /&gt;
* symbol names are prepended with an uppercase prefix with a trailing underscore,  like SVC_, SYS_, WP_&lt;br /&gt;
* API function names are prepended with a mixed case prefix, like Svc, Sys, Wp, e.g. SysCalculateNewUniverseSize()&lt;br /&gt;
* Prefix for helper functions (internal, maybe static, functions not visible to the world) needs to be defined&lt;br /&gt;
&lt;br /&gt;
The class hierarchy of a major part of the Voyager API starts with the class XXXObject, where XXX is the all uppercase prefix of the API Part. Most class of this API part are derived from this base class. &lt;br /&gt;
&lt;br /&gt;
In addition to that the following rules apply to naming methods:&lt;br /&gt;
* where methods return a pointer to an object or data type&lt;br /&gt;
** *query* methods return a pointer to original data that may not be altered or freed&lt;br /&gt;
** *get* methods return a pointer to a copy of original data where the copy has to be released by the caller (destroy the object or free memory. A dedicated method to do that is ususally appropriate).&lt;br /&gt;
&lt;br /&gt;
== Extending the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following tasks are to be processed when suggesting an extension to the Voyager API:&lt;br /&gt;
* document new functionality&lt;br /&gt;
** used case&lt;br /&gt;
** requirements&lt;br /&gt;
* (*) search for (base) classes for either to&lt;br /&gt;
** implement it in a new or existing method in an existing class&lt;br /&gt;
** derive a new class from an existing one for it&lt;br /&gt;
** define a new major API or framework, derive from root class for it&lt;br /&gt;
* (*) analyse and document design options&lt;br /&gt;
* define testcases per design option&lt;br /&gt;
* (*) decide for one option, document the reasons for the decision&lt;br /&gt;
* implement the extension within a testcase&lt;br /&gt;
* perform the testcase, document results&lt;br /&gt;
* send contribution to the API maintainers, including&lt;br /&gt;
** the testcase with source&lt;br /&gt;
** all documentation items&lt;br /&gt;
&lt;br /&gt;
For the steps marked with (*) it may make sense to discuss the existing results with the maintainers of the API, to make sure that the testcase implementation already meets all requirements and design and implementation rules.&lt;br /&gt;
&lt;br /&gt;
== Accepting contributions for the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When a proposal for an extension is being sent to the maintainer team, the team will determine the maintainer for that extension (not necessarily one of the team). The proposal can be sent in as an idea only, when asking for expertise and feedback, or already as a fully implemented extension.&lt;br /&gt;
&lt;br /&gt;
In order to process the extension proposal, &#039;the maintainer&#039; will perform  the following steps, where generally one major step will be performed only when the predecessor has been finished:&lt;br /&gt;
* provide expertise and feedback to the author of the extension&lt;br /&gt;
* review the contribution for the following aspects (if already available)&lt;br /&gt;
** usability of new functionality&lt;br /&gt;
** design options analysis and decision&lt;br /&gt;
** testcase implementation and results&lt;br /&gt;
* develop further design and implementation alternative(s), where applicable&lt;br /&gt;
** pass back to author for review and modification, where required&lt;br /&gt;
* discuss changes to this Design and Implementation Guide, where applicable/required&lt;br /&gt;
* perform final discussion in maintainer team&lt;br /&gt;
* within the maintainer team, decide to accept or reject the contribution, concerning design and implementation&lt;br /&gt;
&lt;br /&gt;
* when accepted&lt;br /&gt;
** request further documentation for the API docs, where required&lt;br /&gt;
** add the extension and documentation to the Voyager API code archive&lt;br /&gt;
** extend the build environment in the source archive, where required&lt;br /&gt;
* when rejected, document reasons and, where applicable, either&lt;br /&gt;
** request modification&lt;br /&gt;
** propose design alternative(s)&lt;br /&gt;
&lt;br /&gt;
It may be necessary to perform this procedure several times, before an extension is completely accepted or rejected.&lt;br /&gt;
&lt;br /&gt;
== Appendix: Requirements for testcase packages  ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* documentation&lt;br /&gt;
** design&lt;br /&gt;
** per testcase&lt;br /&gt;
*** description (including prerequisites)&lt;br /&gt;
*** how to execute&lt;br /&gt;
*** expected result&lt;br /&gt;
* compiled binaries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: Building the Voyager API ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* define the standard build environment for the Voyager API&lt;br /&gt;
** required programs&lt;br /&gt;
** provided methods&lt;br /&gt;
*** build all, docs,&lt;br /&gt;
*** call debugger ?&lt;br /&gt;
*** build/maintain release packages&lt;br /&gt;
* document how to technically extend the build system for to add a new class and/or method&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=4893</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=4893"/>
		<updated>2007-11-10T11:23:57Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Removed link until linked page is up to dat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
&lt;br /&gt;
We currently discuss about the design on Voyager. This is separated into the following parts:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_Discussion|Voyager Discussion]] - contains the ideas which evolved from quite some discussions&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - contains the basic ideas for the Voyager API&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] - contains the design/coverage of the upcoming Voyager specific API&lt;br /&gt;
** [[Desktop_class_list|Preliminary list of desktop classes]] - contains a separate (yet incomplete!) list of Desktop Classes&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_API_Design_Guide|The Voyager API Design and Implementation Guide]] - contains the methods and rules for implementing the Voyager API&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_API_Roadmap|The Voyager API Roadmap]] - contains a list of issues/todos&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=4889</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=4889"/>
		<updated>2007-11-09T22:04:01Z</updated>

		<summary type="html">&lt;p&gt;Cinc: New link to the desktop design page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
&lt;br /&gt;
We currently discuss about the design on Voyager. This is separated into the following parts:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_Discussion|Voyager Discussion]] - contains the ideas which evolved from quite some discussions&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - contains the basic ideas for the Voyager API&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] - contains the design/coverage of the upcoming Voyager specific API&lt;br /&gt;
** [[Desktop_class_list|Preliminary list of desktop classes]] - contains a separate (yet incomplete!) list of Desktop Classes&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_API_Design_Guide|The Voyager API Design and Implementation Guide]] - contains the methods and rules for implementing the Voyager API&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_API_Roadmap|The Voyager API Roadmap]] - contains a list of issues/todos&lt;br /&gt;
&lt;br /&gt;
* [[Voyager_Desktop_Overview|The Voyager Desktop Overview]] - contains a birds view of the desktop design&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4857</id>
		<title>Support class list</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4857"/>
		<updated>2007-09-08T07:29:46Z</updated>

		<summary type="html">&lt;p&gt;Cinc: added first(), last() methods to NOMArray&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ClassTree title=&amp;quot;Support classes (Foundation)&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOMArray: NOMObject:Base class for arrays&lt;br /&gt;
** length(): This method queries the length of the array&lt;br /&gt;
**first()&lt;br /&gt;
**last()&lt;br /&gt;
&lt;br /&gt;
* NOMPtrArray:NOMArray:An array class holding pointers on data.&lt;br /&gt;
** append(gpointer* pItem):Append an item to the end of the array.&lt;br /&gt;
** nomInit(): Override to initialize the GPtrArray.&lt;br /&gt;
&lt;br /&gt;
* NOMObjectArray:NOMPtrArray:Array class holding NOM objects. It&#039;s possible to set the type of object an array is supposed to hold. When trying to add an object the type is checked and if it&#039;s the correct class (or a subclass) it will be accepted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* NOMString:NOMObject:A generic string class holding UTF-8 strings.&lt;br /&gt;
** NOMString* assign(NOMString *nomString)&lt;br /&gt;
** NOMString* append(NOMString *nomString)&lt;br /&gt;
** NOMString* prepend(NOMString *nomString)&lt;br /&gt;
** ulong length(): Returns the length of the string in chars. Note that the byte length may be higher.&lt;br /&gt;
** NOMString* truncate(ulong ulNewLen):Cut off the end of the string. Note that the returned value is not a copy.&lt;br /&gt;
&lt;br /&gt;
* NOMPath:NOMString:This class adds methods for dealing with paths like striping parts, adding separators.&lt;br /&gt;
** NOMPath* appendPath(NOMPAth* nomPath): append a new path section taking into account separators. A new path is returned.&lt;br /&gt;
** NOMPath* appendSeparator():Append a Separator if the path doesn&#039;t end with one. A new path including the separator is returned.&lt;br /&gt;
** NOMPath* stripSeparator(): Remove the separator from the end of a path.&lt;br /&gt;
** NOMPath* queryRoot()&lt;br /&gt;
** NOMPath* erasePathBegin(): Removes the first directory of a path including the first separator (after the dir part).&lt;br /&gt;
** NOMPath* getPathBegin(): Returns a new path holding the part up to the first separator. Use erasePAthBegin() to remove this part from the source path.&lt;br /&gt;
** boolean queryPathIsAbsolute(): Only implemented for OS/2.&lt;br /&gt;
&amp;lt;/ClassTree&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design&amp;diff=4854</id>
		<title>Voyager API Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design&amp;diff=4854"/>
		<updated>2007-08-30T20:22:10Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* highlevel GUI - GUI */ Stub page for classes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
Welcome to the Wiki Page explaining the design of the Voyager API.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design_Guide|The Voyager API Design and Implementation Guide]] - containing the methods and rules for implementing the Voyager API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note&#039;&#039;&#039;&lt;br /&gt;
* The page is organized as a list of sections, where each section names a specific major part of the Voyager API (with the exception of the section &#039;&#039;Virtual Base Classes&#039;&#039;)&lt;br /&gt;
* The title of the major part includes the proposed prefix for class/method/Symbol names (here: class name prefix, all uppercase)&lt;br /&gt;
* Each section API may be used as a base for an API of another section, where applicable&lt;br /&gt;
* Take into account that the API will likely be implemented as an object oriented class library. Using the Netlabs Object Model this will be compiler and language independent (so e.g. C and Classic REXX can also be used)&lt;br /&gt;
* If you have additions or a completely new main section, please feel free to add it&lt;br /&gt;
* If you feel that a part of the structure better would be reorganized (joining or splitting major sections, moving parts between major sections), please contact the netlabs.org core team first for prior discussion. However, all suggestions and comments are very welcome and highly appreciated!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== System Resources &amp;amp; Management - SYS ==&lt;br /&gt;
This section implements system near resource handling (including kernel related hardware)&lt;br /&gt;
* Wrapper for Kernel Services, Memory, Interrupts, Timer, ACPI&lt;br /&gt;
* DMI (incl. Process Management)&lt;br /&gt;
* Interprocess Communications&lt;br /&gt;
** Shared Memory, Semaphores, Queues, (Named) Pipes, more...&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Basic Device Input/Output - DEV ==&lt;br /&gt;
This section implements input and output from and to peripheral hardware for applications, and encapsulates existing APIs (where possible, in a unified manner)&lt;br /&gt;
* Keyboard, Mouse&lt;br /&gt;
* Sound&lt;br /&gt;
* Video&lt;br /&gt;
* USB&lt;br /&gt;
* Firewire&lt;br /&gt;
* NICs, other adpaters&lt;br /&gt;
* more...&lt;br /&gt;
&lt;br /&gt;
== System Security - SYS or SEC ==&lt;br /&gt;
This section implements access restrictions and other security methods.&lt;br /&gt;
* refer to Security/2 design ?&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== System Component Configuration - SYS or CFG ==&lt;br /&gt;
This section implements configuration of system components (possibly also application components via a framework ?)&lt;br /&gt;
&lt;br /&gt;
Here is a list of goals:&lt;br /&gt;
* encapsulates any kernel specific means of configuration&lt;br /&gt;
** like driver config (per config.sys, registry, ini file ...)&lt;br /&gt;
* implements an internal (?) database for configuration data (like OS2.INI or Registry)&lt;br /&gt;
* may superseed DMI, and a DMI implementation may use this part of the API&lt;br /&gt;
* includes Disk &amp;amp; Partition Management&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== System Service Management - SVC ==&lt;br /&gt;
This section implements the means for managing system or application services&lt;br /&gt;
* see the design sketch from Warpstock Europe 2005 as a proposal: [http://www.clanganke.de/os2/pres/wse2005/all04_en.sdd ALL04 - Service Management for OS/2 and eComStation] (requires StarOffice 5.1 or OpenOffice.org)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Unified Data Access - ??? ==&lt;br /&gt;
This section implements a unified view on data (fuse alike)&lt;br /&gt;
* Filesystem Protocols incl. Named Pipes (Samba, NFS, more...)&lt;br /&gt;
* Internet Protocols (http, rtsp, SSH, more...)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== lowlevel graphics - GPI ==&lt;br /&gt;
This section implements basic GUI stuff.&lt;br /&gt;
* primitives (lines, circles, more...)&lt;br /&gt;
* font rendering&lt;br /&gt;
* image handling (scaling, blending, more...)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== highlevel GUI - GUI ==&lt;br /&gt;
This section implements highlevel GUI features used for creating windows, controls and so forth.&lt;br /&gt;
* frame window&lt;br /&gt;
* controls, frame controls&lt;br /&gt;
* text window (support for terminal window)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
[[Gui_class_list|Preliminary list of GUI classes]] to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Desktop Objects - WP ==&lt;br /&gt;
This section implements nothing less than all classes that implement the workplace Shell replacement.&lt;br /&gt;
* (a.k.a. Workplace Shell Replacement and its objects)&lt;br /&gt;
&lt;br /&gt;
[[Desktop_class_list|Preliminary list of desktop classes]] to be implemented.&lt;br /&gt;
&lt;br /&gt;
== (Virtual) Base Classes &amp;amp; Frameworks ==&lt;br /&gt;
This is not a real major API part, but a placeholder for all parts of the API, where we could either&lt;br /&gt;
* create (virtual) base classes to allow easy and future safe extension of the Voyager API or&lt;br /&gt;
* create a general framework for a given purpose&lt;br /&gt;
&lt;br /&gt;
Depending on the issue, a given framework or (set of) base classe(s) possibly could be put into one of the above main sections as well, or end up in a completely new section. This may happen during the discussion.&lt;br /&gt;
&lt;br /&gt;
Here is a first list:&lt;br /&gt;
* [http://svn.netlabs.org/v_nom Netlabs Object Model (NOM)], runtime for the Voyager specific API (see the [[Voyager_API_Basics#Design_goals_for_the_Voyager_API|Design goals for the Voyager API]])&lt;br /&gt;
* support classes (strings, arrays). [[support_class_list|Preliminary list of classes]] to be implemented.&lt;br /&gt;
* application protocols (including filesystem access)(see section Application protocols)&lt;br /&gt;
* Resource Management&amp;lt;br&amp;gt;see design proposal from netlabs.org Developers Workshop 2007: [http://www.clanganke.de/os2/pres/dws2007/resources/index.html Managing Sets of Program Resources]&lt;br /&gt;
* file or stream format encoder/decoder&lt;br /&gt;
* System Configuration Components&lt;br /&gt;
* access to streamed data (file stream, TCP/IP stream, more)&lt;br /&gt;
* internet protocols&lt;br /&gt;
* much more for virtually anything, for all main sections!&lt;br /&gt;
* Add more...&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4853</id>
		<title>Support class list</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4853"/>
		<updated>2007-08-30T20:07:28Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Added NOMPath methods&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ClassTree title=&amp;quot;Support classes (Foundation)&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOMArray: NOMObject:Base class for arrays&lt;br /&gt;
** length(): This method queries the length of the array&lt;br /&gt;
&lt;br /&gt;
* NOMPtrArray:NOMArray:An array class holding pointers on data.&lt;br /&gt;
** append(gpointer* pItem):Append an item to the end of the array.&lt;br /&gt;
** nomInit(): Override to initialize the GPtrArray.&lt;br /&gt;
&lt;br /&gt;
* NOMObjectArray:NOMPtrArray:Array class holding NOM objects. It&#039;s possible to set the type of object an array is supposed to hold. When trying to add an object the type is checked and if it&#039;s the correct class (or a subclass) it will be accepted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* NOMString:NOMObject:A generic string class holding UTF-8 strings.&lt;br /&gt;
** NOMString* assign(NOMString *nomString)&lt;br /&gt;
** NOMString* append(NOMString *nomString)&lt;br /&gt;
** NOMString* prepend(NOMString *nomString)&lt;br /&gt;
** ulong length(): Returns the length of the string in chars. Note that the byte length may be higher.&lt;br /&gt;
** NOMString* truncate(ulong ulNewLen):Cut off the end of the string. Note that the returned value is not a copy.&lt;br /&gt;
&lt;br /&gt;
* NOMPath:NOMString:This class adds methods for dealing with paths like striping parts, adding separators.&lt;br /&gt;
** NOMPath* appendPath(NOMPAth* nomPath): append a new path section taking into account separators. A new path is returned.&lt;br /&gt;
** NOMPath* appendSeparator():Append a Separator if the path doesn&#039;t end with one. A new path including the separator is returned.&lt;br /&gt;
** NOMPath* stripSeparator(): Remove the separator from the end of a path.&lt;br /&gt;
** NOMPath* queryRoot()&lt;br /&gt;
** NOMPath* erasePathBegin(): Removes the first directory of a path including the first separator (after the dir part).&lt;br /&gt;
** NOMPath* getPathBegin(): Returns a new path holding the part up to the first separator. Use erasePAthBegin() to remove this part from the source path.&lt;br /&gt;
** boolean queryPathIsAbsolute(): Only implemented for OS/2.&lt;br /&gt;
&amp;lt;/ClassTree&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4852</id>
		<title>Support class list</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4852"/>
		<updated>2007-08-30T19:50:39Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Added NOMPath class&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ClassTree title=&amp;quot;Support classes (Foundation)&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOMArray: NOMObject:Base class for arrays&lt;br /&gt;
** length(): This method queries the length of the array&lt;br /&gt;
&lt;br /&gt;
* NOMPtrArray:NOMArray:An array class holding pointers on data.&lt;br /&gt;
** append(gpointer* pItem):Append an item to the end of the array.&lt;br /&gt;
** nomInit(): Override to initialize the GPtrArray.&lt;br /&gt;
&lt;br /&gt;
* NOMObjectArray:NOMPtrArray:Array class holding NOM objects. It&#039;s possible to set the type of object an array is supposed to hold. When trying to add an object the type is checked and if it&#039;s the correct class (or a subclass) it will be accepted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* NOMString:NOMObject:A generic string class holding UTF-8 strings.&lt;br /&gt;
** NOMString* assign(NOMString *nomString)&lt;br /&gt;
** NOMString* append(NOMString *nomString)&lt;br /&gt;
** NOMString* prepend(NOMString *nomString)&lt;br /&gt;
** ulong length(): Returns the length of the string in chars. Note that the byte length may be higher.&lt;br /&gt;
** NOMString* truncate(ulong ulNewLen)&lt;br /&gt;
&lt;br /&gt;
* NOMPath:NOMString:This class adds methods for dealing with paths like striping parts, adding separators.&lt;br /&gt;
&amp;lt;/ClassTree&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4845</id>
		<title>Support class list</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4845"/>
		<updated>2007-08-21T20:44:29Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Added some methods&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ClassTree title=&amp;quot;Support classes (Foundation)&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOMArray: NOMObject:Base class for arrays&lt;br /&gt;
** length(): This method queries the length (or size) of the array&lt;br /&gt;
&lt;br /&gt;
* NOMPtrArray:NOMArray:An array class holding pointers on data.&lt;br /&gt;
** append(gpointer* pItem):Append an item to the end of the array.&lt;br /&gt;
** nomInit(): Override to initialize the GPtrArray.&lt;br /&gt;
&lt;br /&gt;
* NOMObjectArray:NOMPtrArray:Array class holding NOM objects. It&#039;s possible to set the type of object an array is supposed to hold. When trying to add an object the type is checked and if it&#039;s the correct class (or a subclass) it will be accepted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* NOMString:NOMObject:A generic string class holding UTF-8 strings.&lt;br /&gt;
** NOMString* assign(NOMString *nomString)&lt;br /&gt;
** NOMString* append(NOMString *nomString)&lt;br /&gt;
** NOMString* prepend(NOMString *nomString)&lt;br /&gt;
** ulong length(): Returns the length of the string in chars. Note that the byte length may be higher.&lt;br /&gt;
**NOMString* truncate(ulong ulNewLen)&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4843</id>
		<title>Support class list</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Support_class_list&amp;diff=4843"/>
		<updated>2007-08-21T11:29:24Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Started list of support classes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ClassTree title=&amp;quot;Support classes (Foundation)&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOMArray: NOMObject:Base class for arrays&lt;br /&gt;
** length(): This method queries the length (or size) of the array&lt;br /&gt;
&lt;br /&gt;
* NOMPtrArray:NOMArray:An array class holding pointers on data.&lt;br /&gt;
&lt;br /&gt;
* NOMObjectArray:NOMPtrArray:Array class holding NOM objects. It&#039;s possible to set the type of object an array is supposed to hold. When trying to add an object the type is checked and if it&#039;s the correct class (or a subclass) it will be accepted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* NOMString:NOMObject:A generic string class holding UTF-8 strings.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Basics&amp;diff=4842</id>
		<title>Voyager API Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Basics&amp;diff=4842"/>
		<updated>2007-08-21T05:17:46Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Triton is a Voyager API&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
Welcome to the Wiki Page explaining the design goals and basic information on the Voyager API.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API&lt;br /&gt;
* [[Voyager_API_Design_Guide|The Voyager API Design and Implementation Guide]] - containing the methods and rules for implementing the Voyager API&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
The developers of OS/2 and eComStation have always favoured the API of their platform over other platform APIs, because it is solid and stable, well structured, consistently designed and mostly easy to use and understand. In the attempt to create the new Voyager platform, the developers taking part in it intend to provide an API being of the very same, high quality. While not everything can be implemented from the beginning that can be thought of, we aim at a design that can be extended in an easy and meaningful way and thus is and will be future safe. For that we intend to setup methods for assuring quality in the ongoing design of this API.&lt;br /&gt;
&lt;br /&gt;
This page explains the basic thoughts on the API design and concerning this, reflects the current status of discussion in the netlabs.org core team. Nothing is completely decided yet, but we expect that this will not change (much) anymore.&lt;br /&gt;
&lt;br /&gt;
Please see also the section [[Voyager_API_Design|The Voyager API Design]]. This has been separated from this page, as we expect it to receive much more frequent changes.&lt;br /&gt;
&lt;br /&gt;
== What is the Voyager API ==&lt;br /&gt;
It is essential to distinct between all APIs supported by the Voyager platform, and the Voyager API - or better, the Voyager specific API. If we talk about the &#039;&#039;&#039;Voyager API&#039;&#039;&#039;, the latter, so the bold printed part of the following list is meant.&lt;br /&gt;
&lt;br /&gt;
Currently we see the following distinction:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Voyager API&#039;&#039;&#039; e.g. Triton (to be implemented)&lt;br /&gt;
&lt;br /&gt;
* Supported APIs (to be ported/implemented)&lt;br /&gt;
** APIs of supported/integrated libraries&lt;br /&gt;
*** GLIB, GTK+, Cairo, TCP/IP, more...&lt;br /&gt;
** Integration APIs for scripting engines&lt;br /&gt;
*** REXX, Ruby, Python, Perl, more...&lt;br /&gt;
** Compatibility APIs (to be ported/implemented)&lt;br /&gt;
*** eCS &amp;amp; OS/2: VIO,MOU,KBD&lt;br /&gt;
*** Posix ?&lt;br /&gt;
*** more...?&lt;br /&gt;
&lt;br /&gt;
== Reasons for a Voyager API ==&lt;br /&gt;
We see the following reasons to provide a Voyager specific API and not to go for a new platform without a specific API&lt;br /&gt;
* encapsulate Voyager specific and kernel specific implementation details&lt;br /&gt;
* allow program development independently from the supported APIs/libraries&lt;br /&gt;
* provide an easier API compared to the sum of APIs of the supported libraries&lt;br /&gt;
** suitable for most used cases&lt;br /&gt;
** requires only a flatter learning curve - better for beginners&lt;br /&gt;
&lt;br /&gt;
== Design goals for the Voyager API ==&lt;br /&gt;
Please refer to the [[Voyager_API_Design_Guide|Voyager API Design and Implementation Guide]].&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design&amp;diff=4841</id>
		<title>Voyager API Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design&amp;diff=4841"/>
		<updated>2007-08-21T05:14:16Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Typo police...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
Welcome to the Wiki Page explaining the design of the Voyager API.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design_Guide|The Voyager API Design and Implementation Guide]] - containing the methods and rules for implementing the Voyager API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note&#039;&#039;&#039;&lt;br /&gt;
* The page is organized as a list of sections, where each section names a specific major part of the Voyager API (with the exception of the section &#039;&#039;Virtual Base Classes&#039;&#039;)&lt;br /&gt;
* The title of the major part includes the proposed prefix for class/method/Symbol names (here: class name prefix, all uppercase)&lt;br /&gt;
* Each section API may be used as a base for an API of another section, where applicable&lt;br /&gt;
* Take into account that the API will likely be implemented as an object oriented class library. Using the Netlabs Object Model this will be compiler and language independent (so e.g. C and Classic REXX can also be used)&lt;br /&gt;
* If you have additions or a completely new main section, please feel free to add it&lt;br /&gt;
* If you feel that a part of the structure better would be reorganized (joining or splitting major sections, moving parts between major sections), please contact the netlabs.org core team first for prior discussion. However, all suggestions and comments are very welcome and highly appreciated!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== System Resources &amp;amp; Management - SYS ==&lt;br /&gt;
This section implements system near resource handling (including kernel related hardware)&lt;br /&gt;
* Wrapper for Kernel Services, Memory, Interrupts, Timer, ACPI&lt;br /&gt;
* DMI (incl. Process Management)&lt;br /&gt;
* Interprocess Communications&lt;br /&gt;
** Shared Memory, Semaphores, Queues, (Named) Pipes, more...&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Basic Device Input/Output - DEV ==&lt;br /&gt;
This section implements input and output from and to peripheral hardware for applications, and encapsulates existing APIs (where possible, in a unified manner)&lt;br /&gt;
* Keyboard, Mouse&lt;br /&gt;
* Sound&lt;br /&gt;
* Video&lt;br /&gt;
* USB&lt;br /&gt;
* Firewire&lt;br /&gt;
* NICs, other adpaters&lt;br /&gt;
* more...&lt;br /&gt;
&lt;br /&gt;
== System Security - SYS or SEC ==&lt;br /&gt;
This section implements access restrictions and other security methods.&lt;br /&gt;
* refer to Security/2 design ?&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== System Component Configuration - SYS or CFG ==&lt;br /&gt;
This section implements configuration of system components (possibly also application components via a framework ?)&lt;br /&gt;
&lt;br /&gt;
Here is a list of goals:&lt;br /&gt;
* encapsulates any kernel specific means of configuration&lt;br /&gt;
* implements an internal (?) database for configuration data (like OS2.INI or Registry)&lt;br /&gt;
* may superseed DMI, and a DMI implementation may use this part of the API&lt;br /&gt;
* includes Disk &amp;amp; Partition Management&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== System Service Management - SVC ==&lt;br /&gt;
This section implements the means for managing system or application services&lt;br /&gt;
* see the design sketch from Warpstock Europe 2005 as a proposal: [http://www.clanganke.de/os2/pres/wse2005/all04_en.sdd ALL04 - Service Management for OS/2 and eComStation] (requires StarOffice 5.1 or OpenOffice.org)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Unified Data Access - ??? ==&lt;br /&gt;
This section implements a unified view on data (fuse alike)&lt;br /&gt;
* Filesystem Protocols incl. Named Pipes (Samba, NFS, more...)&lt;br /&gt;
* Internet Protocols (http, rtsp, SSH, more...)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== lowlevel graphics - GPI ==&lt;br /&gt;
This section implements basic GUI stuff.&lt;br /&gt;
* primitives (lines, circles, more...)&lt;br /&gt;
* font rendering&lt;br /&gt;
* image handling (scaling, blending, more...)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== highlevel GUI - GUI ==&lt;br /&gt;
This section implements highlevel GUI features used for creating windows, controls and so forth.&lt;br /&gt;
* frame window&lt;br /&gt;
* controls, frame controls&lt;br /&gt;
* text window (support for terminal window)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Desktop Objects - WP ==&lt;br /&gt;
This section implements nothing less than all classes that implement the workplace Shell replacement.&lt;br /&gt;
* (a.k.a. Workplace Shell Replacement and its objects)&lt;br /&gt;
&lt;br /&gt;
[[Desktop_class_list|Preliminary list of desktop classes]] to be implemented.&lt;br /&gt;
&lt;br /&gt;
== (Virtual) Base Classes &amp;amp; Frameworks ==&lt;br /&gt;
This is not a real major API part, but a placeholder for all parts of the API, where we could either&lt;br /&gt;
* create (virtual) base classes to allow easy and future safe extension of the Voyager API or&lt;br /&gt;
* create a general framework for a given purpose&lt;br /&gt;
&lt;br /&gt;
Depending on the issue, a given framework or (set of) base classe(s) possibly could be put into one of the above main sections as well, or end up in a completely new section. This may happen during the discussion.&lt;br /&gt;
&lt;br /&gt;
Here is a first list:&lt;br /&gt;
* [http://svn.netlabs.org/v_nom Netlabs Object Model (NOM)], runtime for the Voyager specific API (see the [[Voyager_API_Basics#Design_goals_for_the_Voyager_API|Design goals for the Voyager API]])&lt;br /&gt;
* support classes (strings, arrays). [[support_class_list|Preliminary list of classes]] to be implemented.&lt;br /&gt;
* application protocols (including filesystem access)(see section Application protocols)&lt;br /&gt;
* Resource Management&amp;lt;br&amp;gt;see design proposal from netlabs.org Developers Workshop 2007: [http://www.clanganke.de/os2/pres/dws2007/resources/index.html Managing Sets of Program Resources]&lt;br /&gt;
* file or stream format encoder/decoder&lt;br /&gt;
* System Configuration Components&lt;br /&gt;
* access to streamed data (file stream, TCP/IP stream, more)&lt;br /&gt;
* internet protocols&lt;br /&gt;
* much more for virtually anything, for all main sections!&lt;br /&gt;
* Add more...&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4840</id>
		<title>Voyager API Design Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4840"/>
		<updated>2007-08-21T05:11:57Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Detailed reasons for method naming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
This page contains a first draft for the Design and Implementation Guide for the Voyager API. Please note that the codename Voyager will not appear in the resulting document anylonger, once this document has reached the final version.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
The Voyager API will be implemented as an object oriented class library, using the Netlabs Object Model (NOM).&lt;br /&gt;
&lt;br /&gt;
In the progress of ongoing development, for different reasons it may be required that the Voyager API could use extensions, due to&lt;br /&gt;
* changes within the system, applications require additional interfaces to&lt;br /&gt;
** the underlying kernel or&lt;br /&gt;
** supporting libraries&lt;br /&gt;
* new hardware or file formats requiring support&lt;br /&gt;
* new concepts requiring implementation of new classes and/or frameworks (sets of classes)&lt;br /&gt;
&lt;br /&gt;
In order to keep a high quality standard within the Voyager API, it is vital to ensure that contributions match the way the current Voyager API is designed and implemented. This is the task of the maintainers of the Voyager API, and is done by&lt;br /&gt;
* maintaining this document, defining the rules and methods for design and implementation&lt;br /&gt;
* providing expertise before or during the design and/or implementation of an extension (the earlier involved, the better)&lt;br /&gt;
* deciding if a given contribution can be accepted or has to be modified to meet the requirements for a contribution to the Voyager API&lt;br /&gt;
&lt;br /&gt;
== About this document ==&lt;br /&gt;
This document is intended for the following people:&lt;br /&gt;
* developers, for understanding&lt;br /&gt;
** the methods and rules that are used for and apply to the task of designing and implementing additions to the Voyager API&lt;br /&gt;
** how to contribute extensions to the maintainers of the Voyager API&lt;br /&gt;
* maintainers of the Voyager API, for&lt;br /&gt;
** ensuring that contributed extensions apply to the rules of design and implementation described in this document and meet the requirements for a contribution&lt;br /&gt;
** performing the defined methods/procedures when accepting a contribution&lt;br /&gt;
&lt;br /&gt;
== Design Goals for the Voyager API ==&lt;br /&gt;
The design goals for the Voyager API are:&lt;br /&gt;
* the API is implemented as an object oriented class library&lt;br /&gt;
* using Netlabs Object Model (NOM)&lt;br /&gt;
** allows bindings for non-OO compiler and script languages&lt;br /&gt;
** allows better binary compatibility for external extensions&lt;br /&gt;
* no 1-1 implementation of (one of) the underlying libraries&lt;br /&gt;
** trade in some flexibility for simplicity&lt;br /&gt;
** cover approx. 60-80% of the used cases of the supported libraries&lt;br /&gt;
* gain the same reputation concerning quality like the OS/2 API&lt;br /&gt;
** see this API as &#039;&#039;&#039;advertisement&#039;&#039;&#039; for Voyager as an &#039;&#039;&#039;exemplary development platform&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Implementing the Voyager API as an object oriented class library ==&lt;br /&gt;
The Voyager API will be implemented using the Netlabs Object Model (NOM), implementing a runtime for an object oriented class library. Thus the API itself will be implemented as software classes, allowing access to data and functionality by their interface, being implemented by methods (kind of functions) and members (variables). &lt;br /&gt;
&lt;br /&gt;
Within the class library, all software classes are part of the class hierarchy, where specialized subclasses are derived from parent classes. Subclasses inherit the behaviour from the parent class, and extend an/or modify the behaviour of the parent class. Some of the parent classes are so-called &#039;abstract classes&#039; that is they are not intended to create instances of it, but only for implementing base functionality for subclasses. A special form of this are &#039;virtual base classes&#039;, which do not implement any code, but only define the mandantory interface of a subclass (e.g. a virtual base class for file decoder defines that a subclass for handling of a specific file must implement the method ReadFileContents).&lt;br /&gt;
&lt;br /&gt;
The complete API will be spearated into major parts by [[Voyager_API_Design|groups of classes]]. When the API is to be extended, this can happen by&lt;br /&gt;
* implementing the extension in a new or existing method in an existing class&lt;br /&gt;
* derive a new class from an existing one, and implementing the extension in this class&lt;br /&gt;
* define a new major API or framework and derive a complete new group of classes from  the root class, implementing the extension in these classes&lt;br /&gt;
&lt;br /&gt;
The following rules apply when deciding which of these options are applicable for a given extension:&lt;br /&gt;
* &#039;&#039;&amp;lt;not yet determined&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Another design issue is to decide when using native compiler types (or appropriate typedef&#039;s) instead of classes for data types. In general, for maximum performance and minimum complexity, the native compiler data types should be used for simple data types. For complex data types, or where compiler implemented operators are not sufficient, data type classes should be implemented. In general, data type classes will be implemented by the Netlabs Object Model (NOM), if they are not specific to a special part of the Voyager API implemented with it.&lt;br /&gt;
&lt;br /&gt;
== The Voyager API Classes and Interface Namespace ==&lt;br /&gt;
&lt;br /&gt;
Cinc: this part must be reviewed and should be considered a proposal only.&lt;br /&gt;
&amp;lt;br&amp;gt;cla: all of this document must be considered as a proposal :-)&lt;br /&gt;
&lt;br /&gt;
The class names and the names of the classes&#039; methods and members are prefixed by a tag identifying the major part of the API. &lt;br /&gt;
&lt;br /&gt;
The reasons for the member name prefix is that the IDL compiler creates access macros with the method or member name prepended by an underscore only. If the  members would not be prefixed, two classes within the entire class hierarchy could not have a method with the same name without resorting to the full method name which is built from the class name followed by the method name. Secondly using prefixes&lt;br /&gt;
helps identifying the class group a method belongs to.&lt;br /&gt;
&lt;br /&gt;
Within a major part of the Voyager API, &lt;br /&gt;
* class names are prepended with an all upper case prefix, like SVC, SYS, WP, e.g. SYSObject&lt;br /&gt;
* member names are prepended with a lower case prefix, like svc, sys, wp, e.g. sysQueryUniverseSize()&lt;br /&gt;
* symbol names are prepended with an uppercase prefix with a trailing underscore,  like SVC_, SYS_, WP_&lt;br /&gt;
* API function names are prepended with a mixed case prefix, like Svc, Sys, Wp, e.g. SysCalculateNewUniverseSize()&lt;br /&gt;
* Prefix for helper functions (internal, maybe static, functions not visible to the world) needs to be defined&lt;br /&gt;
&lt;br /&gt;
In addition to that the following rules apply to naming methods:&lt;br /&gt;
* where methods return a pointer to an object or data type&lt;br /&gt;
** *query* methods return a pointer to original data that may not be altered or freed&lt;br /&gt;
** *get* methods return a pointer to a copy of original data where the copy has to be released by the caller (destroy the object or free memory. A dedicated method to do that is ususally appropriate).&lt;br /&gt;
&lt;br /&gt;
== Extending the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following tasks are to be processed when suggesting an extension to the Voyager API:&lt;br /&gt;
* document new functionality&lt;br /&gt;
** used case&lt;br /&gt;
** requirements&lt;br /&gt;
* (*) search for (base) classes for either to&lt;br /&gt;
** implement it in a new or existing method in an existing class&lt;br /&gt;
** derive a new class from an existing one for it&lt;br /&gt;
** define a new major API or framework, derive from root class for it&lt;br /&gt;
* (*) analyse and document design options&lt;br /&gt;
* define testcases per design option&lt;br /&gt;
* (*) decide for one option, document the reasons for the decision&lt;br /&gt;
* implement the extension within a testcase&lt;br /&gt;
* perform the testcase, document results&lt;br /&gt;
* send contribution to the API maintainers, including&lt;br /&gt;
** the testcase with source&lt;br /&gt;
** all documentation items&lt;br /&gt;
&lt;br /&gt;
For the steps marked with (*) it may make sense to discuss the existing results with the maintainers of the API, to make sure that the testcase implementation already meets all requirements and design and implementation rules.&lt;br /&gt;
&lt;br /&gt;
== Accepting contributions for the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When a proposal for an extension is being sent to the maintainer team, the team will determine the maintainer for that extension (not necessarily one of the team). The proposal can be sent in as an idea only, when asking for expertise and feedback, or already as a fully implemented extension.&lt;br /&gt;
&lt;br /&gt;
In order to process the extension proposal, &#039;the maintainer&#039; will perform  the following steps, where generally one major step will be performed only when the predecessor has been finished:&lt;br /&gt;
* provide expertise and feedback to the author of the extension&lt;br /&gt;
* review the contribution for the following aspects (if already available)&lt;br /&gt;
** usability of new functionality&lt;br /&gt;
** design options analysis and decision&lt;br /&gt;
** testcase implementation and results&lt;br /&gt;
* develop further design and implementation alternative(s), where applicable&lt;br /&gt;
** pass back to author for review and modification, where required&lt;br /&gt;
* discuss changes to this Design and Implementation Guide, where applicable/required&lt;br /&gt;
* perform final discussion in maintainer team&lt;br /&gt;
* within the maintainer team, decide to accept or reject the contribution, concerning design and implementation&lt;br /&gt;
&lt;br /&gt;
* when accepted&lt;br /&gt;
** request further documentation for the API docs, where required&lt;br /&gt;
** add the extension and documentation to the Voyager API code archive&lt;br /&gt;
** extend the build environment in the source archive, where required&lt;br /&gt;
* when rejected, document reasons and, where applicable, either&lt;br /&gt;
** request modification&lt;br /&gt;
** propose design alternative(s)&lt;br /&gt;
&lt;br /&gt;
It may be necessary to perform this procedure several times, before an extension is completely accepted or rejected.&lt;br /&gt;
&lt;br /&gt;
== Appendix: Requirements for testcase packages  ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* documentation&lt;br /&gt;
** design&lt;br /&gt;
** per testcase&lt;br /&gt;
*** description (including prerequisites)&lt;br /&gt;
*** how to execute&lt;br /&gt;
*** expected result&lt;br /&gt;
* compiled binaries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: Building the Voyager API ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* define the standard build environment for the Voyager API&lt;br /&gt;
** required programs&lt;br /&gt;
** provided methods&lt;br /&gt;
*** build all, docs,&lt;br /&gt;
*** call debugger ?&lt;br /&gt;
*** build/maintain release packages&lt;br /&gt;
* document how to technically extend the build system for to add a new class and/or method&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4839</id>
		<title>Voyager API Design Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4839"/>
		<updated>2007-08-21T05:06:14Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Examples for naming. Some details.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
This page contains a first draft for the Design and Implementation Guide for the Voyager API. Please note that the codename Voyager will not appear in the resulting document anylonger, once this document has reached the final version.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
The Voyager API will be implemented as an object oriented class library, using the Netlabs Object Model (NOM).&lt;br /&gt;
&lt;br /&gt;
In the progress of ongoing development, for different reasons it may be required that the Voyager API could use extensions, due to&lt;br /&gt;
* changes within the system, applications require additional interfaces to&lt;br /&gt;
** the underlying kernel or&lt;br /&gt;
** supporting libraries&lt;br /&gt;
* new hardware or file formats requiring support&lt;br /&gt;
* new concepts requiring implementation of new classes and/or frameworks (sets of classes)&lt;br /&gt;
&lt;br /&gt;
In order to keep a high quality standard within the Voyager API, it is vital to ensure that contributions match the way the current Voyager API is designed and implemented. This is the task of the maintainers of the Voyager API, and is done by&lt;br /&gt;
* maintaining this document, defining the rules and methods for design and implementation&lt;br /&gt;
* providing expertise before or during the design and/or implementation of an extension (the earlier involved, the better)&lt;br /&gt;
* deciding if a given contribution can be accepted or has to be modified to meet the requirements for a contribution to the Voyager API&lt;br /&gt;
&lt;br /&gt;
== About this document ==&lt;br /&gt;
This document is intended for the following people:&lt;br /&gt;
* developers, for understanding&lt;br /&gt;
** the methods and rules that are used for and apply to the task of designing and implementing additions to the Voyager API&lt;br /&gt;
** how to contribute extensions to the maintainers of the Voyager API&lt;br /&gt;
* maintainers of the Voyager API, for&lt;br /&gt;
** ensuring that contributed extensions apply to the rules of design and implementation described in this document and meet the requirements for a contribution&lt;br /&gt;
** performing the defined methods/procedures when accepting a contribution&lt;br /&gt;
&lt;br /&gt;
== Design Goals for the Voyager API ==&lt;br /&gt;
The design goals for the Voyager API are:&lt;br /&gt;
* the API is implemented as an object oriented class library&lt;br /&gt;
* using Netlabs Object Model (NOM)&lt;br /&gt;
** allows bindings for non-OO compiler and script languages&lt;br /&gt;
** allows better binary compatibility for external extensions&lt;br /&gt;
* no 1-1 implementation of (one of) the underlying libraries&lt;br /&gt;
** trade in some flexibility for simplicity&lt;br /&gt;
** cover approx. 60-80% of the used cases of the supported libraries&lt;br /&gt;
* gain the same reputation concerning quality like the OS/2 API&lt;br /&gt;
** see this API as &#039;&#039;&#039;advertisement&#039;&#039;&#039; for Voyager as an &#039;&#039;&#039;exemplary development platform&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Implementing the Voyager API as an object oriented class library ==&lt;br /&gt;
The Voyager API will be implemented using the Netlabs Object Model (NOM), implementing a runtime for an object oriented class library. Thus the API itself will be implemented as software classes, allowing access to data and functionality by their interface, being implemented by methods (kind of functions) and members (variables). &lt;br /&gt;
&lt;br /&gt;
Within the class library, all software classes are part of the class hierarchy, where specialized subclasses are derived from parent classes. Subclasses inherit the behaviour from the parent class, and extend an/or modify the behaviour of the parent class. Some of the parent classes are so-called &#039;abstract classes&#039; that is they are not intended to create instances of it, but only for implementing base functionality for subclasses. A special form of this are &#039;virtual base classes&#039;, which do not implement any code, but only define the mandantory interface of a subclass (e.g. a virtual base class for file decoder defines that a subclass for handling of a specific file must implement the method ReadFileContents).&lt;br /&gt;
&lt;br /&gt;
The complete API will be spearated into major parts by [[Voyager_API_Design|groups of classes]]. When the API is to be extended, this can happen by&lt;br /&gt;
* implementing the extension in a new or existing method in an existing class&lt;br /&gt;
* derive a new class from an existing one, and implementing the extension in this class&lt;br /&gt;
* define a new major API or framework and derive a complete new group of classes from  the root class, implementing the extension in these classes&lt;br /&gt;
&lt;br /&gt;
The following rules apply when deciding which of these options are applicable for a given extension:&lt;br /&gt;
* &#039;&#039;&amp;lt;not yet determined&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Another design issue is to decide when using native compiler types (or appropriate typedef&#039;s) instead of classes for data types. In general, for maximum performance and minimum complexity, the native compiler data types should be used for simple data types. For complex data types, or where compiler implemented operators are not sufficient, data type classes should be implemented. In general, data type classes will be implemented by the Netlabs Object Model (NOM), if they are not specific to a special part of the Voyager API implemented with it.&lt;br /&gt;
&lt;br /&gt;
== The Voyager API Classes and Interface Namespace ==&lt;br /&gt;
&lt;br /&gt;
Cinc: this part must be reviewed and should be considered a proposal only.&lt;br /&gt;
&amp;lt;br&amp;gt;cla: all of this document must be considered as a proposal :-)&lt;br /&gt;
&lt;br /&gt;
The class names and the names of the classes&#039; methods and members are prefixed by a tag identifying the major part of the API. &lt;br /&gt;
&lt;br /&gt;
The reasons for the member name prefix is that the IDL compiler creates access macros with the method or member name prepended by an underscore only. If the  members would not be prefixed, two classes within the entire class hierarchy could not have a method with the same name. The name clash problem is not completely solved by the member name prefix, but eased a lot.&lt;br /&gt;
&lt;br /&gt;
Within a major part of the Voyager API, &lt;br /&gt;
* class names are prepended with an all upper case prefix, like SVC, SYS, WP, e.g. SYSObject&lt;br /&gt;
* member names are prepended with a lower case prefix, like svc, sys, wp, e.g. sysQueryUniverseSize()&lt;br /&gt;
* symbol names are prepended with an uppercase prefix with a trailing underscore,  like SVC_, SYS_, WP_&lt;br /&gt;
* API function names are prepended with a mixed case prefix, like Svc, Sys, Wp, e.g. SysCalculateNewUniverseSize()&lt;br /&gt;
* Prefix for helper functions (internal, maybe static, functions not visible to the world) needs to be defined&lt;br /&gt;
&lt;br /&gt;
In addition to that the following rules apply to naming methods:&lt;br /&gt;
* where methods return a pointer to an object or data type&lt;br /&gt;
** *query* methods return a pointer to original data that may not be altered or freed&lt;br /&gt;
** *get* methods return a pointer to a copy of original data where the copy has to be released by the caller (destroy the object or free memory. A dedicated method to do that is ususally appropriate).&lt;br /&gt;
&lt;br /&gt;
== Extending the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following tasks are to be processed when suggesting an extension to the Voyager API:&lt;br /&gt;
* document new functionality&lt;br /&gt;
** used case&lt;br /&gt;
** requirements&lt;br /&gt;
* (*) search for (base) classes for either to&lt;br /&gt;
** implement it in a new or existing method in an existing class&lt;br /&gt;
** derive a new class from an existing one for it&lt;br /&gt;
** define a new major API or framework, derive from root class for it&lt;br /&gt;
* (*) analyse and document design options&lt;br /&gt;
* define testcases per design option&lt;br /&gt;
* (*) decide for one option, document the reasons for the decision&lt;br /&gt;
* implement the extension within a testcase&lt;br /&gt;
* perform the testcase, document results&lt;br /&gt;
* send contribution to the API maintainers, including&lt;br /&gt;
** the testcase with source&lt;br /&gt;
** all documentation items&lt;br /&gt;
&lt;br /&gt;
For the steps marked with (*) it may make sense to discuss the existing results with the maintainers of the API, to make sure that the testcase implementation already meets all requirements and design and implementation rules.&lt;br /&gt;
&lt;br /&gt;
== Accepting contributions for the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When a proposal for an extension is being sent to the maintainer team, the team will determine the maintainer for that extension (not necessarily one of the team). The proposal can be sent in as an idea only, when asking for expertise and feedback, or already as a fully implemented extension.&lt;br /&gt;
&lt;br /&gt;
In order to process the extension proposal, &#039;the maintainer&#039; will perform  the following steps, where generally one major step will be performed only when the predecessor has been finished:&lt;br /&gt;
* provide expertise and feedback to the author of the extension&lt;br /&gt;
* review the contribution for the following aspects (if already available)&lt;br /&gt;
** usability of new functionality&lt;br /&gt;
** design options analysis and decision&lt;br /&gt;
** testcase implementation and results&lt;br /&gt;
* develop further design and implementation alternative(s), where applicable&lt;br /&gt;
** pass back to author for review and modification, where required&lt;br /&gt;
* discuss changes to this Design and Implementation Guide, where applicable/required&lt;br /&gt;
* perform final discussion in maintainer team&lt;br /&gt;
* within the maintainer team, decide to accept or reject the contribution, concerning design and implementation&lt;br /&gt;
&lt;br /&gt;
* when accepted&lt;br /&gt;
** request further documentation for the API docs, where required&lt;br /&gt;
** add the extension and documentation to the Voyager API code archive&lt;br /&gt;
** extend the build environment in the source archive, where required&lt;br /&gt;
* when rejected, document reasons and, where applicable, either&lt;br /&gt;
** request modification&lt;br /&gt;
** propose design alternative(s)&lt;br /&gt;
&lt;br /&gt;
It may be necessary to perform this procedure several times, before an extension is completely accepted or rejected.&lt;br /&gt;
&lt;br /&gt;
== Appendix: Requirements for testcase packages  ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* documentation&lt;br /&gt;
** design&lt;br /&gt;
** per testcase&lt;br /&gt;
*** description (including prerequisites)&lt;br /&gt;
*** how to execute&lt;br /&gt;
*** expected result&lt;br /&gt;
* compiled binaries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: Building the Voyager API ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* define the standard build environment for the Voyager API&lt;br /&gt;
** required programs&lt;br /&gt;
** provided methods&lt;br /&gt;
*** build all, docs,&lt;br /&gt;
*** call debugger ?&lt;br /&gt;
*** build/maintain release packages&lt;br /&gt;
* document how to technically extend the build system for to add a new class and/or method&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design&amp;diff=4798</id>
		<title>Voyager API Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design&amp;diff=4798"/>
		<updated>2007-07-31T07:35:14Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Added link to support class list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Wiki Page explaining the design of the Voyager API.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design_Guide|The Voyager API Design and Implementation Guide]] - containing the methods and rules for implementing the Voyager API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note&#039;&#039;&#039;&lt;br /&gt;
* The page is organized as a list of sections, where each section names a specific major part of the Voyager API (with the excetipon of the section &#039;&#039;Virtual Base Classes&#039;&#039;)&lt;br /&gt;
* Each section API may be used as a base for an API of another section, where applicable&lt;br /&gt;
* Take into account that the API will likely be implemented as an object oriented class library. Using the Netlabs Object Model this will be compiler and language independent (so e.g. C and Classic REXX can also be used)&lt;br /&gt;
* If you have additions or a completely new main section, please feel free to add it&lt;br /&gt;
* If you feel that a part of the structure better would be reorganized (joining or splitting major sections, moving parts between major sections), please contact the netlabs.org core team first for prior discussion. However, all suggestions and comments are very welcome and highly appreciated!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== System Resources &amp;amp; Management ==&lt;br /&gt;
This section implements system near resource handling (including kernel related hardware)&lt;br /&gt;
* Wrapper for Kernel Services, Memory, Interrupts, Timer, ACPI&lt;br /&gt;
* DMI (incl. Process Management)&lt;br /&gt;
* Interprocess Communications&lt;br /&gt;
** Shared Memory, Semaphores, Queues, (Named) Pipes, more...&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Basic Device Input/Output ==&lt;br /&gt;
This section implements input and output from and to peripheral hardware for applications, and encapsulates existing APIs (where possible, in a unified manner)&lt;br /&gt;
* Keyboard, Mouse&lt;br /&gt;
* Sound&lt;br /&gt;
* Video&lt;br /&gt;
* USB&lt;br /&gt;
* Firewire&lt;br /&gt;
* NICs, other adpaters&lt;br /&gt;
* more...&lt;br /&gt;
&lt;br /&gt;
== System Security ==&lt;br /&gt;
This section implements access restrictions and other security methods.&lt;br /&gt;
* refer to Security/2 design ?&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== System Component Configuration ==&lt;br /&gt;
This section implements configuration of system components (possibly also application components via a framework ?)&lt;br /&gt;
&lt;br /&gt;
Here is a list of goals:&lt;br /&gt;
* encapsulates any kernel specific means of configuration&lt;br /&gt;
* implements an internal (?) database for configuration data (like OS2.INI or Registry)&lt;br /&gt;
* may superseed DMI, and a DMI implementation may use this part of the API&lt;br /&gt;
* includes Disk &amp;amp; Partition Management&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== System Service Management ==&lt;br /&gt;
This section implements the means for managing system or application services&lt;br /&gt;
* see the design sketch from Warpstock Europe 2005 as a proposal: [http://www.clanganke.de/os2/pres/wse2005/all04_en.sdd ALL04 - Service Management for OS/2 and eComStation] (requires StarOffice 5.1 or OpenOffice.org)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Unified Data Access ==&lt;br /&gt;
This section implements a unified view on data (fuse alike)&lt;br /&gt;
* Filesystem Protocols incl. Named Pipes (Samba, NFS, more...)&lt;br /&gt;
* Internet Protocols (http, rtsp, SSH, more...)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== lowlevel graphics ==&lt;br /&gt;
This section implements basic GUI stuff.&lt;br /&gt;
* primitives (lines, circles, more...)&lt;br /&gt;
* font rendering&lt;br /&gt;
* image handling (scaling, blending, more...)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== highlevel GUI ==&lt;br /&gt;
This section implements highlevel GUI features used for creating windows, controls and so forth.&lt;br /&gt;
* frame window&lt;br /&gt;
* controls, frame controls&lt;br /&gt;
* text window (support for terminal window)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Desktop Objects ==&lt;br /&gt;
This section implements nothing less than all classes that implement the workplace Shell replacement.&lt;br /&gt;
* (a.k.a. Workplace Shell Replacement and its objects)&lt;br /&gt;
&lt;br /&gt;
[[Desktop_class_list|Preliminary list of desktop classes]] to be implemented.&lt;br /&gt;
&lt;br /&gt;
== (Virtual) Base Classes &amp;amp; Frameworks ==&lt;br /&gt;
This is not a real major API part, but a placeholder for all parts of the API, where we could either&lt;br /&gt;
* create (virtual) base classes to allow easy and future safe extension of the Voyager API or&lt;br /&gt;
* create a general framework for a given purpose&lt;br /&gt;
&lt;br /&gt;
Depending on the issue, a given framework or (set of) base classe(s) possibly could be put into one of the above main sections as well, or end up in a completely new section. This may happen during the discussion.&lt;br /&gt;
&lt;br /&gt;
Here is a first list:&lt;br /&gt;
* [http://svn.netlabs.org/v_nom Netlabs Object Model (NOM)], runtime for the Voyager specific API (see the [[Voyager_API_Basics#Design_goals_for_the_Voyager_API|Design goals for the Voyager API]])&lt;br /&gt;
* support classes (strings, arrays). [[support_class_list|Preliminary list of classes]] to be implemented.&lt;br /&gt;
* application protocols (including filesystem access)(see section Application protocols)&lt;br /&gt;
* Resource Management&amp;lt;br&amp;gt;see design proposal from netlabs.org Developers Workshop 2007: [http://www.clanganke.de/os2/pres/dws2007/resources/index.html Managing Sets of Program Resources]&lt;br /&gt;
* file or stream format encoder/decoder&lt;br /&gt;
* System Configuration Components&lt;br /&gt;
* access to streamed data (file stream, TCP/IP stream, more)&lt;br /&gt;
* internet protocols&lt;br /&gt;
* much more for virtually anything, for all main sections!&lt;br /&gt;
* Add more...&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Desktop_class_list&amp;diff=4797</id>
		<title>Desktop class list</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Desktop_class_list&amp;diff=4797"/>
		<updated>2007-07-31T07:31:39Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Added some classes and methods&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of desktop classes and methods for the Voyager desktop. Note that this list is in no way exhaustive.&lt;br /&gt;
&lt;br /&gt;
* WPObject:NOMObject&lt;br /&gt;
** wpInitData()&lt;br /&gt;
** wpUnInitData()&lt;br /&gt;
** wpAllocMem()&lt;br /&gt;
** wpFreeMem()&lt;br /&gt;
** wpFree()&lt;br /&gt;
**wpOpen()&lt;br /&gt;
**wpLockObject()&lt;br /&gt;
**wpUnlockObject()&lt;br /&gt;
**wpObjectIsLocked()&lt;br /&gt;
**wpQueryIcon() (???)&lt;br /&gt;
**wpRequestObjectMutexSem()&lt;br /&gt;
**wpReleaseObjectMutexSem()&lt;br /&gt;
**wpSetTitle()&lt;br /&gt;
**wpQueryTitle()&lt;br /&gt;
**wpDisplayMenu()&lt;br /&gt;
**wpModifyMenu()&lt;br /&gt;
**wpFilterMenu()&lt;br /&gt;
**wpMenuItemSelected()&lt;br /&gt;
**wpInsertMenuItem()&lt;br /&gt;
**wpAddSettingsPages()&lt;br /&gt;
**wpInsertSettingsPage()&lt;br /&gt;
**wpViewObject()&lt;br /&gt;
**wpSwitchTo()&lt;br /&gt;
**wpRegisterView()&lt;br /&gt;
**wpAddToObjUseList()&lt;br /&gt;
**wpDeleteFromObjUseList()&lt;br /&gt;
**wpFindUseItem()&lt;br /&gt;
**wpFindViewItem()&lt;br /&gt;
**wpSaveDeferred()&lt;br /&gt;
**wpDaveImmediate()&lt;br /&gt;
**wpSetFolder()&lt;br /&gt;
**wpQueryFolder()&lt;br /&gt;
**wpSetTitleFromCString() (???)&lt;br /&gt;
**wpQueryDefaultView()&lt;br /&gt;
**wpSetDefaultView()&lt;br /&gt;
**wpQueryConcurrentView()&lt;br /&gt;
**wpSetConcurrentView()&lt;br /&gt;
**wpDragOver()&lt;br /&gt;
**wpDrop()&lt;br /&gt;
**wpMoveObject()&lt;br /&gt;
**wpCopyObject()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* WPFileSystem:WPObject&lt;br /&gt;
**wpQueryFileName&lt;br /&gt;
&lt;br /&gt;
* WPDataFile:WPFileSystem&lt;br /&gt;
**wpQueryFileSize()&lt;br /&gt;
&lt;br /&gt;
* WPFolder:WPFileSystem&lt;br /&gt;
**wpPopulate()&lt;br /&gt;
**wpCreateFolderWindow()&lt;br /&gt;
**wpQueryFldrFlags()&lt;br /&gt;
**wpSetFldrFlags()&lt;br /&gt;
**wpAddToContent()&lt;br /&gt;
**wpQueryContent()&lt;br /&gt;
**wpDeleteFromContent()&lt;br /&gt;
**wpAddToStore()&lt;br /&gt;
**wpDeleteFromStore()&lt;br /&gt;
&lt;br /&gt;
* WPWindow:NOMWindow&lt;br /&gt;
**wpSetObject()&lt;br /&gt;
**wpQueryObject()&lt;br /&gt;
**wpSetWindowTitle()&lt;br /&gt;
&lt;br /&gt;
* WPFolderWindow:WPWindow&lt;br /&gt;
**wpQueryContainerHandle()&lt;br /&gt;
**wpSetContainerHandle()&lt;br /&gt;
**wpConnectDefaultSignalHandlers()&lt;br /&gt;
&lt;br /&gt;
* WPNoteBook:WPWindow&lt;br /&gt;
**wpQueryNoteBook()&lt;br /&gt;
**wpSetNoteBook()&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4794</id>
		<title>Voyager API Design Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4794"/>
		<updated>2007-07-30T21:07:32Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Extending the Voyager API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a first draft for the Design and Implementation Guide for the Voyager API. Please note that the codename Voyager will not appear in the resulting document anylonger, once this document has reached the final version.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
The Voyager API will be implemented as an object oriented class library, using the Netlabs Object Model (NOM).&lt;br /&gt;
&lt;br /&gt;
In the progress of ongoing development, for different reasons it may be required that the Voyager API could use extensions, due to&lt;br /&gt;
* changes within the system, applications require additional interfaces to&lt;br /&gt;
** the underlying kernel or&lt;br /&gt;
** supporting libraries&lt;br /&gt;
* new hardware or file formats requiring support&lt;br /&gt;
* new concepts requiring implementation of new classes and/or frameworks (sets of classes)&lt;br /&gt;
&lt;br /&gt;
In order to keep a high quality standard within the Voyager API, it is vital to ensure that contributions match the way the current Voyager API is designed and implemented. This is the task of the maintainers of the Voyager API, and is done by&lt;br /&gt;
* maintaining this document, defining the rules and methods for design and implementation&lt;br /&gt;
* providing expertise before or during the design and/or implementation of an extension (the earlier involved, the better)&lt;br /&gt;
* deciding if a given contribution can be accepted or has to be modified to meet the requirements for a contribution to the Voyager API&lt;br /&gt;
&lt;br /&gt;
== About this document ==&lt;br /&gt;
This document is intended for the following people:&lt;br /&gt;
* developers, for understanding&lt;br /&gt;
** the methods and rules that are used for and apply to the task of designing and implementing additions to the Voyager API&lt;br /&gt;
** how to contribute extensions to the maintainers of the Voyager API&lt;br /&gt;
* maintainers of the Voyager API, for&lt;br /&gt;
** ensuring that contributed extensions apply to the rules of design and implementation described in this document and meet the requirements for a contribution&lt;br /&gt;
** performing the defined methods/procedures when accepting a contribution&lt;br /&gt;
&lt;br /&gt;
== Design Goals for the Voyager API ==&lt;br /&gt;
The design goals for the Voyager API are:&lt;br /&gt;
* the API is implemented as an object oriented class library&lt;br /&gt;
* using Netlabs Object Model (NOM)&lt;br /&gt;
** allows bindings for non-OO compiler and script languages&lt;br /&gt;
** allows better binary compatibility for external extensions&lt;br /&gt;
* no 1-1 implementation of (one of) the underlying libraries&lt;br /&gt;
** trade in some flexibility for simplicity&lt;br /&gt;
** cover approx. 60-80% of the used cases of the supported libraries&lt;br /&gt;
* gain the same reputation concerning quality like the OS/2 API&lt;br /&gt;
** see this API as &#039;&#039;&#039;advertisement&#039;&#039;&#039; for Voyager as an &#039;&#039;&#039;exemplary development platform&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Implementing the Voyager API as an object oriented class library ==&lt;br /&gt;
The Voyager API will be implemented using the Netlabs Object Model (NOM), implementing a runtime for an object oriented class library. Thus the API itself will be implemented as software classes, allowing access to data and functionality by their interface, being implemented by methods (kind of functions) and members (variables). &lt;br /&gt;
&lt;br /&gt;
Within the class library, all software classes are part of the class hierarchy, where specialized subclasses are derived from parent classes. Subclasses inherit the behaviour from the parent class, and extend an/or modify the behaviour of the parent class. Some of the parent classes are so-called &#039;abstract classes&#039; that is they are not intended to create instances of it, but only for implementing base functionality for subclasses. A special form of this are &#039;virtual base classes&#039;, which do not implement any code, but only define the mandantory interface of a subclass (e.g. a virtual base class for file decoder defines that a subclass for handling of a specific file must implement the method ReadFileContents).&lt;br /&gt;
&lt;br /&gt;
The complete API will be spearated into major parts by [[Voyager_API_Design|groups of classes]]. When the API is to be extended, this can happen by&lt;br /&gt;
* implementing the extension in a new or existing method in an existing class&lt;br /&gt;
* derive a new class from an existing one, and implementing the extension in this class&lt;br /&gt;
* define a new major API or framework and derive a complete new group of classes from  the root class, implementing the extension in these classes&lt;br /&gt;
&lt;br /&gt;
The following rules apply when deciding which of these options are applicable for a given extension:&lt;br /&gt;
* &#039;&#039;&amp;lt;not yet determined&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Another design issue is to decide when using native compiler types (or appropriate typedef&#039;s) instead of classes for data types. In general, for maximum performance and minimum complexity, the native compiler data types should be used for simple data types. For complex data types, or where compiler implemented operators are not sufficient, data type classes should be implemented. In general, data type classes will be implemented by the Netlabs Object Model (NOM), if they are not specific to a special part of the Voyager API implemented with it.&lt;br /&gt;
&lt;br /&gt;
== The Voyager API Classes and Interface Namespace ==&lt;br /&gt;
&lt;br /&gt;
Cinc: this part must be reviewed and should be considered a proposal only.&lt;br /&gt;
&lt;br /&gt;
The class names and the names of the classes&#039; methods and members are prefixed by a tag identifying the major part of the API. &lt;br /&gt;
&lt;br /&gt;
The reasons for the member name prefix is that the IDL compiler creates access macros with the method or member name prepended by an underscore only. If the  members would not be prefixed, two classes within the entire class hierarchy could not have a method with the same name. The name clash problem is not completely solved by the member name prefix, but eased a lot.&lt;br /&gt;
&lt;br /&gt;
Within a major part of the Voyager API, &lt;br /&gt;
* class names are prepended with a mixed case prefix, like Svc, Sys, Wp&lt;br /&gt;
* member names are prepended with a lower case prefix, like svc, sys, wp&lt;br /&gt;
* symbols are prepended with an uppercase prefix with a trailing underscore,  like SVC_, SYS_, WP_&lt;br /&gt;
&lt;br /&gt;
== Extending the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following tasks are to be processed when suggesting an extension to the Voyager API:&lt;br /&gt;
* document new functionality&lt;br /&gt;
** used case&lt;br /&gt;
** requirements&lt;br /&gt;
* (*) search for (base) classes for either to&lt;br /&gt;
** implement it in a new or existing method in an existing class&lt;br /&gt;
** derive a new class from an existing one for it&lt;br /&gt;
** define a new major API or framework, derive from root class for it&lt;br /&gt;
* (*) analyse and document design options&lt;br /&gt;
* define testcases per design option&lt;br /&gt;
* (*) decide for one option, document the reasons for the decision&lt;br /&gt;
* implement the extension within a testcase&lt;br /&gt;
* perform the testcase, document results&lt;br /&gt;
* send contribution to the API maintainers, including&lt;br /&gt;
** the testcase with source&lt;br /&gt;
** all documentation items&lt;br /&gt;
&lt;br /&gt;
For the steps marked with (*) it may make sense to discuss the existing results with the maintainers of the API, to make sure that the testcase implementation already meets all requirements and design and implementation rules.&lt;br /&gt;
&lt;br /&gt;
== Accepting contributions for the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When a proposal for an extension is being sent to the maintainer team, the team will determine the maintainer for that extension (not necessarily one of the team). The proposal can be sent in as an idea only, when asking for expertise and feedback, or already as a fully implemented extension.&lt;br /&gt;
&lt;br /&gt;
In order to process the extension proposal, &#039;the maintainer&#039; will perform  the following steps, where generally one major step will be performed only when the predecessor has been finished:&lt;br /&gt;
* provide expertise and feedback to the author of the extension&lt;br /&gt;
* review the contribution for the following aspects (if already available)&lt;br /&gt;
** usability of new functionality&lt;br /&gt;
** design options analysis and decision&lt;br /&gt;
** testcase implementation and results&lt;br /&gt;
* develop further design and implementation alternative(s), where applicable&lt;br /&gt;
** pass back to author for review and modification, where required&lt;br /&gt;
* discuss changes to this Design and Implementation Guide, where applicable/required&lt;br /&gt;
* perform final discussion in maintainer team&lt;br /&gt;
* within the maintainer team, decide to accept or reject the contribution, concerning design and implementation&lt;br /&gt;
&lt;br /&gt;
* when accepted&lt;br /&gt;
** request further documentation for the API docs, where required&lt;br /&gt;
** add the extension and documentation to the Voyager API code archive&lt;br /&gt;
** extend the build environment in the source archive, where required&lt;br /&gt;
* when rejected, document reasons and, where applicable, either&lt;br /&gt;
** request modification&lt;br /&gt;
** propose design alternative(s)&lt;br /&gt;
&lt;br /&gt;
It may be necessary to perform this procedure several times, before an extension is completely accepted or rejected.&lt;br /&gt;
&lt;br /&gt;
== Appendix: Requirements for testcase packages  ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* documentation&lt;br /&gt;
** design&lt;br /&gt;
** per testcase&lt;br /&gt;
*** description (including prerequisites)&lt;br /&gt;
*** how to execute&lt;br /&gt;
*** expected result&lt;br /&gt;
* compiled binaries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: Building the Voyager API ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* define the standard build environment for the Voyager API&lt;br /&gt;
** required programs&lt;br /&gt;
** provided methods&lt;br /&gt;
*** build all, docs,&lt;br /&gt;
*** call debugger ?&lt;br /&gt;
*** build/maintain release packages&lt;br /&gt;
* document how to technically extend the build system for to add a new class and/or method&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4793</id>
		<title>Voyager API Design Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4793"/>
		<updated>2007-07-30T21:06:57Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Accepting contributions for the Voyager API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a first draft for the Design and Implementation Guide for the Voyager API. Please note that the codename Voyager will not appear in the resulting document anylonger, once this document has reached the final version.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
The Voyager API will be implemented as an object oriented class library, using the Netlabs Object Model (NOM).&lt;br /&gt;
&lt;br /&gt;
In the progress of ongoing development, for different reasons it may be required that the Voyager API could use extensions, due to&lt;br /&gt;
* changes within the system, applications require additional interfaces to&lt;br /&gt;
** the underlying kernel or&lt;br /&gt;
** supporting libraries&lt;br /&gt;
* new hardware or file formats requiring support&lt;br /&gt;
* new concepts requiring implementation of new classes and/or frameworks (sets of classes)&lt;br /&gt;
&lt;br /&gt;
In order to keep a high quality standard within the Voyager API, it is vital to ensure that contributions match the way the current Voyager API is designed and implemented. This is the task of the maintainers of the Voyager API, and is done by&lt;br /&gt;
* maintaining this document, defining the rules and methods for design and implementation&lt;br /&gt;
* providing expertise before or during the design and/or implementation of an extension (the earlier involved, the better)&lt;br /&gt;
* deciding if a given contribution can be accepted or has to be modified to meet the requirements for a contribution to the Voyager API&lt;br /&gt;
&lt;br /&gt;
== About this document ==&lt;br /&gt;
This document is intended for the following people:&lt;br /&gt;
* developers, for understanding&lt;br /&gt;
** the methods and rules that are used for and apply to the task of designing and implementing additions to the Voyager API&lt;br /&gt;
** how to contribute extensions to the maintainers of the Voyager API&lt;br /&gt;
* maintainers of the Voyager API, for&lt;br /&gt;
** ensuring that contributed extensions apply to the rules of design and implementation described in this document and meet the requirements for a contribution&lt;br /&gt;
** performing the defined methods/procedures when accepting a contribution&lt;br /&gt;
&lt;br /&gt;
== Design Goals for the Voyager API ==&lt;br /&gt;
The design goals for the Voyager API are:&lt;br /&gt;
* the API is implemented as an object oriented class library&lt;br /&gt;
* using Netlabs Object Model (NOM)&lt;br /&gt;
** allows bindings for non-OO compiler and script languages&lt;br /&gt;
** allows better binary compatibility for external extensions&lt;br /&gt;
* no 1-1 implementation of (one of) the underlying libraries&lt;br /&gt;
** trade in some flexibility for simplicity&lt;br /&gt;
** cover approx. 60-80% of the used cases of the supported libraries&lt;br /&gt;
* gain the same reputation concerning quality like the OS/2 API&lt;br /&gt;
** see this API as &#039;&#039;&#039;advertisement&#039;&#039;&#039; for Voyager as an &#039;&#039;&#039;exemplary development platform&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Implementing the Voyager API as an object oriented class library ==&lt;br /&gt;
The Voyager API will be implemented using the Netlabs Object Model (NOM), implementing a runtime for an object oriented class library. Thus the API itself will be implemented as software classes, allowing access to data and functionality by their interface, being implemented by methods (kind of functions) and members (variables). &lt;br /&gt;
&lt;br /&gt;
Within the class library, all software classes are part of the class hierarchy, where specialized subclasses are derived from parent classes. Subclasses inherit the behaviour from the parent class, and extend an/or modify the behaviour of the parent class. Some of the parent classes are so-called &#039;abstract classes&#039; that is they are not intended to create instances of it, but only for implementing base functionality for subclasses. A special form of this are &#039;virtual base classes&#039;, which do not implement any code, but only define the mandantory interface of a subclass (e.g. a virtual base class for file decoder defines that a subclass for handling of a specific file must implement the method ReadFileContents).&lt;br /&gt;
&lt;br /&gt;
The complete API will be spearated into major parts by [[Voyager_API_Design|groups of classes]]. When the API is to be extended, this can happen by&lt;br /&gt;
* implementing the extension in a new or existing method in an existing class&lt;br /&gt;
* derive a new class from an existing one, and implementing the extension in this class&lt;br /&gt;
* define a new major API or framework and derive a complete new group of classes from  the root class, implementing the extension in these classes&lt;br /&gt;
&lt;br /&gt;
The following rules apply when deciding which of these options are applicable for a given extension:&lt;br /&gt;
* &#039;&#039;&amp;lt;not yet determined&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Another design issue is to decide when using native compiler types (or appropriate typedef&#039;s) instead of classes for data types. In general, for maximum performance and minimum complexity, the native compiler data types should be used for simple data types. For complex data types, or where compiler implemented operators are not sufficient, data type classes should be implemented. In general, data type classes will be implemented by the Netlabs Object Model (NOM), if they are not specific to a special part of the Voyager API implemented with it.&lt;br /&gt;
&lt;br /&gt;
== The Voyager API Classes and Interface Namespace ==&lt;br /&gt;
&lt;br /&gt;
Cinc: this part must be reviewed and should be considered a proposal only.&lt;br /&gt;
&lt;br /&gt;
The class names and the names of the classes&#039; methods and members are prefixed by a tag identifying the major part of the API. &lt;br /&gt;
&lt;br /&gt;
The reasons for the member name prefix is that the IDL compiler creates access macros with the method or member name prepended by an underscore only. If the  members would not be prefixed, two classes within the entire class hierarchy could not have a method with the same name. The name clash problem is not completely solved by the member name prefix, but eased a lot.&lt;br /&gt;
&lt;br /&gt;
Within a major part of the Voyager API, &lt;br /&gt;
* class names are prepended with a mixed case prefix, like Svc, Sys, Wp&lt;br /&gt;
* member names are prepended with a lower case prefix, like svc, sys, wp&lt;br /&gt;
* symbols are prepended with an uppercase prefix with a trailing underscore,  like SVC_, SYS_, WP_&lt;br /&gt;
&lt;br /&gt;
== Extending the Voyager API ==&lt;br /&gt;
The following tasks are to be processed when suggesting an extension to the Voyager API:&lt;br /&gt;
* document new functionality&lt;br /&gt;
** used case&lt;br /&gt;
** requirements&lt;br /&gt;
* (*) search for (base) classes for either to&lt;br /&gt;
** implement it in a new or existing method in an existing class&lt;br /&gt;
** derive a new class from an existing one for it&lt;br /&gt;
** define a new major API or framework, derive from root class for it&lt;br /&gt;
* (*) analyse and document design options&lt;br /&gt;
* define testcases per design option&lt;br /&gt;
* (*) decide for one option, document the reasons for the decision&lt;br /&gt;
* implement the extension within a testcase&lt;br /&gt;
* perform the testcase, document results&lt;br /&gt;
* send contribution to the API maintainers, including&lt;br /&gt;
** the testcase with source&lt;br /&gt;
** all documentation items&lt;br /&gt;
&lt;br /&gt;
For the steps marked with (*) it may make sense to discuss the existing results with the maintainers of the API, to make sure that the testcase implementation already meets all requirements and design and implementation rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accepting contributions for the Voyager API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When a proposal for an extension is being sent to the maintainer team, the team will determine the maintainer for that extension (not necessarily one of the team). The proposal can be sent in as an idea only, when asking for expertise and feedback, or already as a fully implemented extension.&lt;br /&gt;
&lt;br /&gt;
In order to process the extension proposal, &#039;the maintainer&#039; will perform  the following steps, where generally one major step will be performed only when the predecessor has been finished:&lt;br /&gt;
* provide expertise and feedback to the author of the extension&lt;br /&gt;
* review the contribution for the following aspects (if already available)&lt;br /&gt;
** usability of new functionality&lt;br /&gt;
** design options analysis and decision&lt;br /&gt;
** testcase implementation and results&lt;br /&gt;
* develop further design and implementation alternative(s), where applicable&lt;br /&gt;
** pass back to author for review and modification, where required&lt;br /&gt;
* discuss changes to this Design and Implementation Guide, where applicable/required&lt;br /&gt;
* perform final discussion in maintainer team&lt;br /&gt;
* within the maintainer team, decide to accept or reject the contribution, concerning design and implementation&lt;br /&gt;
&lt;br /&gt;
* when accepted&lt;br /&gt;
** request further documentation for the API docs, where required&lt;br /&gt;
** add the extension and documentation to the Voyager API code archive&lt;br /&gt;
** extend the build environment in the source archive, where required&lt;br /&gt;
* when rejected, document reasons and, where applicable, either&lt;br /&gt;
** request modification&lt;br /&gt;
** propose design alternative(s)&lt;br /&gt;
&lt;br /&gt;
It may be necessary to perform this procedure several times, before an extension is completely accepted or rejected.&lt;br /&gt;
&lt;br /&gt;
== Appendix: Requirements for testcase packages  ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* documentation&lt;br /&gt;
** design&lt;br /&gt;
** per testcase&lt;br /&gt;
*** description (including prerequisites)&lt;br /&gt;
*** how to execute&lt;br /&gt;
*** expected result&lt;br /&gt;
* compiled binaries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: Building the Voyager API ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* define the standard build environment for the Voyager API&lt;br /&gt;
** required programs&lt;br /&gt;
** provided methods&lt;br /&gt;
*** build all, docs,&lt;br /&gt;
*** call debugger ?&lt;br /&gt;
*** build/maintain release packages&lt;br /&gt;
* document how to technically extend the build system for to add a new class and/or method&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4792</id>
		<title>Voyager API Design Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design_Guide&amp;diff=4792"/>
		<updated>2007-07-30T21:02:40Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* The Voyager API Classes and Interface Namespace */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a first draft for the Design and Implementation Guide for the Voyager API. Please note that the codename Voyager will not appear in the resulting document anylonger, once this document has reached the final version.&lt;br /&gt;
&lt;br /&gt;
Please see also the pages&lt;br /&gt;
* [[Voyager_API_Basics|The Voyager API Basics]] - containing the basic ideas for the Voyager API&lt;br /&gt;
* [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
The Voyager API will be implemented as an object oriented class library, using the Netlabs Object Model (NOM).&lt;br /&gt;
&lt;br /&gt;
In the progress of ongoing development, for different reasons it may be required that the Voyager API could use extensions, due to&lt;br /&gt;
* changes within the system, applications require additional interfaces to&lt;br /&gt;
** the underlying kernel or&lt;br /&gt;
** supporting libraries&lt;br /&gt;
* new hardware or file formats requiring support&lt;br /&gt;
* new concepts requiring implementation of new classes and/or frameworks (sets of classes)&lt;br /&gt;
&lt;br /&gt;
In order to keep a high quality standard within the Voyager API, it is vital to ensure that contributions match the way the current Voyager API is designed and implemented. This is the task of the maintainers of the Voyager API, and is done by&lt;br /&gt;
* maintaining this document, defining the rules and methods for design and implementation&lt;br /&gt;
* providing expertise before or during the design and/or implementation of an extension (the earlier involved, the better)&lt;br /&gt;
* deciding if a given contribution can be accepted or has to be modified to meet the requirements for a contribution to the Voyager API&lt;br /&gt;
&lt;br /&gt;
== About this document ==&lt;br /&gt;
This document is intended for the following people:&lt;br /&gt;
* developers, for understanding&lt;br /&gt;
** the methods and rules that are used for and apply to the task of designing and implementing additions to the Voyager API&lt;br /&gt;
** how to contribute extensions to the maintainers of the Voyager API&lt;br /&gt;
* maintainers of the Voyager API, for&lt;br /&gt;
** ensuring that contributed extensions apply to the rules of design and implementation described in this document and meet the requirements for a contribution&lt;br /&gt;
** performing the defined methods/procedures when accepting a contribution&lt;br /&gt;
&lt;br /&gt;
== Design Goals for the Voyager API ==&lt;br /&gt;
The design goals for the Voyager API are:&lt;br /&gt;
* the API is implemented as an object oriented class library&lt;br /&gt;
* using Netlabs Object Model (NOM)&lt;br /&gt;
** allows bindings for non-OO compiler and script languages&lt;br /&gt;
** allows better binary compatibility for external extensions&lt;br /&gt;
* no 1-1 implementation of (one of) the underlying libraries&lt;br /&gt;
** trade in some flexibility for simplicity&lt;br /&gt;
** cover approx. 60-80% of the used cases of the supported libraries&lt;br /&gt;
* gain the same reputation concerning quality like the OS/2 API&lt;br /&gt;
** see this API as &#039;&#039;&#039;advertisement&#039;&#039;&#039; for Voyager as an &#039;&#039;&#039;exemplary development platform&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Implementing the Voyager API as an object oriented class library ==&lt;br /&gt;
The Voyager API will be implemented using the Netlabs Object Model (NOM), implementing a runtime for an object oriented class library. Thus the API itself will be implemented as software classes, allowing access to data and functionality by their interface, being implemented by methods (kind of functions) and members (variables). &lt;br /&gt;
&lt;br /&gt;
Within the class library, all software classes are part of the class hierarchy, where specialized subclasses are derived from parent classes. Subclasses inherit the behaviour from the parent class, and extend an/or modify the behaviour of the parent class. Some of the parent classes are so-called &#039;abstract classes&#039; that is they are not intended to create instances of it, but only for implementing base functionality for subclasses. A special form of this are &#039;virtual base classes&#039;, which do not implement any code, but only define the mandantory interface of a subclass (e.g. a virtual base class for file decoder defines that a subclass for handling of a specific file must implement the method ReadFileContents).&lt;br /&gt;
&lt;br /&gt;
The complete API will be spearated into major parts by [[Voyager_API_Design|groups of classes]]. When the API is to be extended, this can happen by&lt;br /&gt;
* implementing the extension in a new or existing method in an existing class&lt;br /&gt;
* derive a new class from an existing one, and implementing the extension in this class&lt;br /&gt;
* define a new major API or framework and derive a complete new group of classes from  the root class, implementing the extension in these classes&lt;br /&gt;
&lt;br /&gt;
The following rules apply when deciding which of these options are applicable for a given extension:&lt;br /&gt;
* &#039;&#039;&amp;lt;not yet determined&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Another design issue is to decide when using native compiler types (or appropriate typedef&#039;s) instead of classes for data types. In general, for maximum performance and minimum complexity, the native compiler data types should be used for simple data types. For complex data types, or where compiler implemented operators are not sufficient, data type classes should be implemented. In general, data type classes will be implemented by the Netlabs Object Model (NOM), if they are not specific to a special part of the Voyager API implemented with it.&lt;br /&gt;
&lt;br /&gt;
== The Voyager API Classes and Interface Namespace ==&lt;br /&gt;
&lt;br /&gt;
Cinc: this part must be reviewed and should be considered a proposal only.&lt;br /&gt;
&lt;br /&gt;
The class names and the names of the classes&#039; methods and members are prefixed by a tag identifying the major part of the API. &lt;br /&gt;
&lt;br /&gt;
The reasons for the member name prefix is that the IDL compiler creates access macros with the method or member name prepended by an underscore only. If the  members would not be prefixed, two classes within the entire class hierarchy could not have a method with the same name. The name clash problem is not completely solved by the member name prefix, but eased a lot.&lt;br /&gt;
&lt;br /&gt;
Within a major part of the Voyager API, &lt;br /&gt;
* class names are prepended with a mixed case prefix, like Svc, Sys, Wp&lt;br /&gt;
* member names are prepended with a lower case prefix, like svc, sys, wp&lt;br /&gt;
* symbols are prepended with an uppercase prefix with a trailing underscore,  like SVC_, SYS_, WP_&lt;br /&gt;
&lt;br /&gt;
== Extending the Voyager API ==&lt;br /&gt;
The following tasks are to be processed when suggesting an extension to the Voyager API:&lt;br /&gt;
* document new functionality&lt;br /&gt;
** used case&lt;br /&gt;
** requirements&lt;br /&gt;
* (*) search for (base) classes for either to&lt;br /&gt;
** implement it in a new or existing method in an existing class&lt;br /&gt;
** derive a new class from an existing one for it&lt;br /&gt;
** define a new major API or framework, derive from root class for it&lt;br /&gt;
* (*) analyse and document design options&lt;br /&gt;
* define testcases per design option&lt;br /&gt;
* (*) decide for one option, document the reasons for the decision&lt;br /&gt;
* implement the extension within a testcase&lt;br /&gt;
* perform the testcase, document results&lt;br /&gt;
* send contribution to the API maintainers, including&lt;br /&gt;
** the testcase with source&lt;br /&gt;
** all documentation items&lt;br /&gt;
&lt;br /&gt;
For the steps marked with (*) it may make sense to discuss the existing results with the maintainers of the API, to make sure that the testcase implementation already meets all requirements and design and implementation rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accepting contributions for the Voyager API ==&lt;br /&gt;
When a proposal for an extension is being sent to the maintainer team, the team will determine the maintainer for that extension (not necessarily one of the team). The proposal can be sent in as an idea only, when asking for expertise and feedback, or already as a fully implemented extension.&lt;br /&gt;
&lt;br /&gt;
In order to process the extension proposal, &#039;the maintainer&#039; will perform  the following steps, where generally one major step will be performed only when the predecessor has been finished:&lt;br /&gt;
* provide expertise and feedback to the author of the extension&lt;br /&gt;
* review the contribution for the following aspects (if already available)&lt;br /&gt;
** usability of new functionality&lt;br /&gt;
** design options analysis and decision&lt;br /&gt;
** testcase implementation and results&lt;br /&gt;
* develop further design and implementation alternative(s), where applicable&lt;br /&gt;
** pass back to author for review and modification, where required&lt;br /&gt;
* discuss changes to this Design and Implementation Guide, where applicable/required&lt;br /&gt;
* perform final discussion in maintainer team&lt;br /&gt;
* within the maintainer team, decide to accept or reject the contribution, concerning design and implementation&lt;br /&gt;
&lt;br /&gt;
* when accepted&lt;br /&gt;
** request further documentation for the API docs, where required&lt;br /&gt;
** add the extension and documentation to the Voyager API code archive&lt;br /&gt;
** extend the build environment in the source archive, where required&lt;br /&gt;
* when rejected, document reasons and, where applicable, either&lt;br /&gt;
** request modification&lt;br /&gt;
** propose design alternative(s)&lt;br /&gt;
&lt;br /&gt;
It may be necessary to perform this procedure several times, before an extension is completely accepted or rejected.&lt;br /&gt;
&lt;br /&gt;
== Appendix: Requirements for testcase packages  ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* documentation&lt;br /&gt;
** design&lt;br /&gt;
** per testcase&lt;br /&gt;
*** description (including prerequisites)&lt;br /&gt;
*** how to execute&lt;br /&gt;
*** expected result&lt;br /&gt;
* compiled binaries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: Building the Voyager API ==&lt;br /&gt;
&#039;&#039;&amp;lt;to be edited&amp;gt;&#039;&#039;&lt;br /&gt;
* define the standard build environment for the Voyager API&lt;br /&gt;
** required programs&lt;br /&gt;
** provided methods&lt;br /&gt;
*** build all, docs,&lt;br /&gt;
*** call debugger ?&lt;br /&gt;
*** build/maintain release packages&lt;br /&gt;
* document how to technically extend the build system for to add a new class and/or method&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Desktop_class_list&amp;diff=4770</id>
		<title>Desktop class list</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Desktop_class_list&amp;diff=4770"/>
		<updated>2007-07-25T06:45:47Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Started list of desktop classes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of desktop classes and methods for the Voyager desktop. Note that this list is in no way exhaustive.&lt;br /&gt;
&lt;br /&gt;
* WPObject:NOMObject&lt;br /&gt;
** wpInit()&lt;br /&gt;
** wpUnInit()&lt;br /&gt;
** wpAllocMem()&lt;br /&gt;
** wpFreeMem()&lt;br /&gt;
** wpFree()&lt;br /&gt;
* WPFileSystem:WPObject&lt;br /&gt;
&lt;br /&gt;
* WPDataFile:WPFileSystem&lt;br /&gt;
&lt;br /&gt;
* WPFolder:WPFileSystem&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_API_Design&amp;diff=4769</id>
		<title>Voyager API Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_API_Design&amp;diff=4769"/>
		<updated>2007-07-25T06:35:07Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Desktop Objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Wiki Page explaining the design of the Voyager API.&lt;br /&gt;
&lt;br /&gt;
Please see also the page [[Voyager_API_Basics|The Voyager API Basics]], containing the basic ideas and design goals for the Voyager API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note&#039;&#039;&#039;&lt;br /&gt;
* The page is organized as a list of sections, where each section names a specific major part of the Voyager API (with the excetipon of the section &#039;&#039;Virtual Base Classes&#039;&#039;)&lt;br /&gt;
* Each section API may be used as a base for an API of another section, where applicable&lt;br /&gt;
* Take into account that the API will likely be implemented as an object oriented class library. Using the Netlabs Object Model this will be compiler and language independent (so e.g. C and Classic REXX can also be used)&lt;br /&gt;
* If you have additions or a completely new main section, please feel free to add it&lt;br /&gt;
* If you feel that a part of the structure better would be reorganized (joining or splitting major sections, moving parts between major sections), please contact the netlabs.org core team first for prior discussion. However, all suggestions and comments are very welcome and highly appreciated!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Voyager|Voyager Main Page]]&lt;br /&gt;
&lt;br /&gt;
== System Resources &amp;amp; Management ==&lt;br /&gt;
This section implements system near resource handling (including kernel related hardware)&lt;br /&gt;
* Wrapper for Kernel Services, Memory, Interrupts, Timer, ACPI&lt;br /&gt;
* DMI (incl. Process Management)&lt;br /&gt;
* Interprocess Communications&lt;br /&gt;
** Shared Memory, Semaphores, Queues, (Named) Pipes, more...&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Basic Device Input/Output ==&lt;br /&gt;
This section implements input and output from and to peripheral hardware for applications, and encapsulates existing APIs (where possible, in a unified manner)&lt;br /&gt;
* Keyboard, Mouse&lt;br /&gt;
* Sound&lt;br /&gt;
* Video&lt;br /&gt;
* USB&lt;br /&gt;
* Firewire&lt;br /&gt;
* NICs, other adpaters&lt;br /&gt;
* more...&lt;br /&gt;
&lt;br /&gt;
== System Security ==&lt;br /&gt;
This section implements access restrictions and other security methods.&lt;br /&gt;
* refer to Security/2 design ?&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== System Component Configuration ==&lt;br /&gt;
This section implements configuration of system components (possibly also application components via a framework ?)&lt;br /&gt;
&lt;br /&gt;
Here is a list of goals:&lt;br /&gt;
* encapsulates any kernel specific means of configuration&lt;br /&gt;
* implements an internal (?) database for configuration data (like OS2.INI or Registry)&lt;br /&gt;
* may superseed DMI, and a DMI implementation may use this part of the API&lt;br /&gt;
* includes Disk &amp;amp; Partition Management&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== System Service Management ==&lt;br /&gt;
This section implements the means for managing system or application services&lt;br /&gt;
* see the design sketch from Warpstock Europe 2005 as a proposal: [http://www.clanganke.de/os2/pres/wse2005/all04_en.sdd ALL04 - Service Management for OS/2 and eComStation] (requires StarOffice 5.1 or OpenOffice.org)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Unified Data Access ==&lt;br /&gt;
This section implements a unified view on data (fuse alike)&lt;br /&gt;
* Filesystem Protocols incl. Named Pipes (Samba, NFS, more...)&lt;br /&gt;
* Internet Protocols (http, rtsp, SSH, more...)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== lowlevel graphics ==&lt;br /&gt;
This section implements basic GUI stuff.&lt;br /&gt;
* primitives (lines, circles, more...)&lt;br /&gt;
* font rendering&lt;br /&gt;
* image handling (scaling, blending, more...)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== highlevel GUI ==&lt;br /&gt;
This section implements highlevel GUI features used for creating windows, controls and so forth.&lt;br /&gt;
* frame window&lt;br /&gt;
* controls, frame controls&lt;br /&gt;
* text window (support for terminal window)&lt;br /&gt;
* Add more...&lt;br /&gt;
&lt;br /&gt;
== Desktop Objects ==&lt;br /&gt;
This section implements nothing less than all classes that implement the workplace Shell replacement.&lt;br /&gt;
* (a.k.a. Workplace Shell Replacement and its objects)&lt;br /&gt;
&lt;br /&gt;
[[Desktop_class_list|Preliminary list of desktop classes]] to be implemented.&lt;br /&gt;
&lt;br /&gt;
== (Virtual) Base Classes  ==&lt;br /&gt;
This is not a real major API part, but a placeholder for all parts of the API, where we could create (virtual) base classes to allow easy and future safe extension of the Voyager API. The topics listed here could be included in some of the major sections, the reason to summarize it here is to make clear that we need to have a method to create such classes as little frameworks in a consistent way.&lt;br /&gt;
Here is a first list:&lt;br /&gt;
* support classes (strings, arrays)&lt;br /&gt;
* application protocols (including filesystem access)(see section Application protocols)&lt;br /&gt;
* file or stream format encoder/decoder&lt;br /&gt;
* System Configuration Components&lt;br /&gt;
* access to streamed data (file stream, TCP/IP stream, more)&lt;br /&gt;
* internet protocols&lt;br /&gt;
* much more for virtually anything, for all main sections!&lt;br /&gt;
* Add more...&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=ESchemes&amp;diff=4670</id>
		<title>ESchemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=ESchemes&amp;diff=4670"/>
		<updated>2007-06-29T20:08:54Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* OS Skinning/Schemeing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OS Skinning/Schemeing ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ESCHEMES.PNG|thumb|Beta 1.10]]&lt;br /&gt;
[[Image:Eschemes_1_11.png|thumb|Beta 1.11 Colors/Controls preview]] [[Image:Eschemes_1_11_ptr.png|thumb|Beta 1.11 Pointers preview]] &lt;br /&gt;
[[Image:Eschemes_1_11_snd.png|thumb|Beta 1.11 Sounds preview]] &lt;br /&gt;
[[Image:Eschemes_1_11_obj.png|thumb|Beta 1.11 WPS Objects settings preview]] &lt;br /&gt;
[[Image:Eschemes_1_11_cls.png|thumb|Beta 1.11 WPS Classes settings preview]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Files for the eSchemes project can now be found at the [http://betazone.ecomstation.com eComstation Betazone])&lt;br /&gt;
&lt;br /&gt;
Note that eSchemes is only available as a commercial product for non-eCS users.&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
While I think that the look is not very imporant in an OS design, we have to recognize that the desire/need to change the interface to match the user&#039;s taste have had a major role in the design of recent GUIs.&lt;br /&gt;
&lt;br /&gt;
Recent eComstation releases (1.1 and 1.2) are getting better at handling this, with the possibility to change the standard icons, change some of the GUI controls (system box, max/min/hide/close buttons), change the titlebar, change the pushbuttons, check-boxes and radio-buttons.&lt;br /&gt;
&lt;br /&gt;
All in all, it is a pretty comprehensive list of possible interface changes, but we&#039;re still far from the competition.&lt;br /&gt;
Adding some third-party tools, we can get rid of the standard gray color, add some transparency, change window borders, etc.&lt;br /&gt;
&lt;br /&gt;
=== The Problem ===&lt;br /&gt;
&lt;br /&gt;
So, where&#039;s the problem? &lt;br /&gt;
* We need FAR TOO MANY different pieces of software to change the interface&lt;br /&gt;
* Every piece of software does its own thing, and many times there are conflicts&lt;br /&gt;
* Different pieces of sotware choose to do the same things in different ways&lt;br /&gt;
* You have to reboot to activate most of the changes&lt;br /&gt;
* We have no means of using non-square windows&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s see how many pieces of software one may need in order to change the interface in a way that at least resembles the capabilities of other platforms:&lt;br /&gt;
&lt;br /&gt;
* The standard scheme palette. This is pretty limited. It can&#039;t change all the colors, and you can&#039;t add more schemes to the palette. &#039;&#039;(Cinc: You may create new sheme palettes to overcome the limitation.)&#039;&#039;&lt;br /&gt;
* SysColors (http://os2.ru/articles/dev/prog/syscolors/index.phtml.ru) This can change more system colors, but has no support for saving schemes. BTW, the source is available.&lt;br /&gt;
* eStyler or Styler/2. While Styler/2 should support a superset of eStyler functions, there are things that eStyler does (such as replacing buttons) but Styler/2 don&#039;t. But Styler/2 supports on-the-fly changing of title-bar controls, while eStyler doesn&#039;t. So one can&#039;t trade eStyler for Styler/2 (or the other way around) without losing some functionality.&lt;br /&gt;
* ColourManager/2. This one supports changing of all (but the most hidden ones) colors in the interface, and (once again) changing title-bar controls and other buttons. This one requires a reboot, too. And uses a different format for the resources from eStyler. Fortunately, CoulourManager/2 is now available in source-code to eCS developers.&lt;br /&gt;
* CandyBarz (Netlabs). This is the most advanced skinning application for OS/2, but it is less stable than his counterparts, it is somewhat buggy and it&#039;s not developed anymore. It is opensource though, so anyone can in theory restart development. I&#039;m under the impression that eStyler&#039;s (or ColourManager/2) way of changing controls is more stable and less error-prone &#039;&#039;(comment by Cinc: eStyler does the control changing the same way CandyBarZ does it AFAIK)&#039;&#039;, but it may only be that CandyBarZ is quite old now. Can do most of the things that the other pieces of sotware do and more, and it does it on-the-fly.&lt;br /&gt;
&#039;&#039;Cinc: CandyBarZ is/was work in progress with *a lot of* experimental stuff. So no wonder it&#039;s not too stable ;-). As a kind of testbed it showed how some things are better not done for such a theming engine. Well, I know what I&#039;m speaking about here. I was one of the main coders. Transparency, custom controls, bitmaps in frames and controls are my childs.&#039;&#039;&lt;br /&gt;
* Icon themes. Changes all of the standard icons of the OS. It is evolving in the direction of being a full replacement for Stardock&#039;s Icon Schemes, which was more powerful but it is closed-source and development has stopped. Another problem is replacing native term &#039;&#039;scheme&#039;&#039; by windows term &#039;&#039;theme&#039;&#039;. We need common treminology.&lt;br /&gt;
* Window Themes. Changes title-bar controls (like eStyler) after a reboot. Changes radio-buttons and check-boxes, but NOT pushbuttons (you need eStyler or CandyBarZ for this). And also have term &#039;&#039;theme&#039;&#039; instead of &#039;&#039;scheme&#039;&#039;.&lt;br /&gt;
* CandyFolders (Netlabs) to add some transparency to folder backrounds.&lt;br /&gt;
* NPSWPS to add drop shadows to windows, and animation effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See? If one wants to change everything that could be changeable he needs 9 pieces of software, with many overlapped functionalities. And in the end, some pieces of customization are still missing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Given this situation it is impossible to develop/distribute comprehensive themes/skins for our OS, and give the user a hassle-free, auto-installing package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What we need is ONE program capable of changing ALL of the resources, or at least the sum of those that are presently changeable with all the diverse software pieces. If it can&#039;t be done without rebooting, this software should at least have a very good previewing function.&lt;br /&gt;
&lt;br /&gt;
=== To Do ===&lt;br /&gt;
&lt;br /&gt;
To sum it up (and what implemented in eSchemes already):&lt;br /&gt;
&lt;br /&gt;
* Change ALL the colors (like ColourManager/2, SysColors) &#039;&#039;&#039;Implemented with logic like CM/2&#039;&#039;&#039;&lt;br /&gt;
* Change title-bar controls (eStyler and CandyBarZ) &#039;&#039;&#039;Reused eStyler 1.1 code&#039;&#039;&#039;&lt;br /&gt;
* Change pushbuttons (eStyler and CandyBarZ) &#039;&#039;&#039;Reused eStyler 1.1 code&#039;&#039;&#039;&lt;br /&gt;
* Change check-boxes and radio-buttons (Window Themes, ColourManager/2, CandyBarZ) &#039;&#039;&#039;Implemented with logic like CM/2 and Window Themes&#039;&#039;&#039;&lt;br /&gt;
* Change (indipendently, or remove some of the) window borders (CandyBarz)&lt;br /&gt;
* Change icons (Icon themes) &#039;&#039;&#039;Implemented via WPS settings (including not icons only but any WPS settings&#039;&#039;&#039;&lt;br /&gt;
* Change titlebars (eStyler, Styler/2, ColourManager/2, CandyBarZ) &#039;&#039;&#039;Reused eStyler 1.1 code&#039;&#039;&#039;&lt;br /&gt;
* Globally change desktop/folder backgrounds (ColourManager/2) &#039;&#039;(Cinc: this one I don&#039;t understand. Please clarify.)&#039;&#039;&lt;br /&gt;
* Transparency (CandyBarZ + CandyFolders)&lt;br /&gt;
* Animation and drop-shadows (NPSWPS)&lt;br /&gt;
* Subclassing/substituting the remaining controls (scroll bars, etc) (CandyBarZ)&lt;br /&gt;
* WISH: different title-bar controls for active/inactive windows &#039;&#039;(Cinc: CandyBarZ or are you speaking about titlebar buttons? -- Cris: yes, I&#039;m speaking about buttons)&#039;&#039;&lt;br /&gt;
* WISH: non-rectangular windows. There are at least two different libraries for this:&lt;br /&gt;
** ShapeWindow (LGPL - http://www.sra.co.jp/people/akira/os2/arch/shpwn200.zip)&lt;br /&gt;
** TileWindow (LGPL - http://hp.vector.co.jp/authors/VA001398/os2/softwares/libraries/twtk1_1_4bld14.zip)&lt;br /&gt;
&#039;&#039;Cinc: these are awfully slow. Won&#039;t be possible without diving deep into PM (if possible at all)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cris: don&#039;t think so, at least not if it isn&#039;t overused. With recent HW, the shape-window extensions are quite fast; moreover, if one uses it only to have rounded borders on windows (like WinXP or many Linux distros default scheme) the number of PM windows created is not boosted very much.&#039;&#039;&lt;br /&gt;
* WISH: Ability to save everything as one scheme, easily distributable (&#039;&#039;Cinc: CandyBarZ did this to some extent)&#039;&#039;  &#039;&#039;&#039;Implemented loading (no save yet)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Discussion ===&lt;br /&gt;
[[eschemes discussion|Discussion]]&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Rebuild_your_eCS_desktop&amp;diff=4628</id>
		<title>Rebuild your eCS desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Rebuild_your_eCS_desktop&amp;diff=4628"/>
		<updated>2007-06-09T09:51:34Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Some minor clarifications&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When following the steps outlined here the resulting desktop will be the one created during installation of the system. Any objects added by the user are not lost but preserved and may be moved to the newly built desktop later. This is kind of a last resort desktop maintainance trick when your INI files are completely broken and none of the known INI tools is able to recover them properly.&lt;br /&gt;
&lt;br /&gt;
#Create a copy of your current INI files, just in case...&lt;br /&gt;
#Boot to the recovery options screen by pressing ALT-F1 when the white square appears in the upper left corner during boot&lt;br /&gt;
#Start a command line by pressing F2&lt;br /&gt;
#Go to the directory holding your INI files which is usually &#039;&#039;OS2&#039;&#039; on your boot drive&lt;br /&gt;
#Run &amp;lt;code&amp;gt;makini.exe os2.ini ini.rc&amp;lt;/code&amp;gt; to create the first INI file&lt;br /&gt;
#Run &amp;lt;code&amp;gt;makini.exe os2sys.ini inisys.rc&amp;lt;/code&amp;gt; to create the other INI file&lt;br /&gt;
#Reboot by entering &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system should drop you on a new desktop with some objects already created. Part two is to recreate all the objects built during initial installation.&lt;br /&gt;
&lt;br /&gt;
#Open a command line and go to &amp;lt;code&amp;gt;x:\ecs\install&amp;lt;/code&amp;gt;, where &#039;&#039;x&#039;&#039; is your boot drive&lt;br /&gt;
#Run &amp;lt;code&amp;gt;CLNDESK.EXE x:\ecs\install\rsp\shuf_ctl.ini x:\ecs\install\rsp\shuf_key.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your desktop and the relevant subdirectories (e.g. &#039;&#039;Programs&#039;&#039;) are now populated with all the objects you know from your desktop just after installation. Any objects created during the lifetime of your system prior to recreating your desktop can be found in the folder &#039;&#039;Previous Desktop&#039;&#039; which can be found on your new desktop.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that some of the objects in this folder may be broken. Remember you created&lt;br /&gt;
a new desktop in the first place because the old one was broken...&lt;br /&gt;
&lt;br /&gt;
([[User:Cinc|Cinc]] 11:11, 30 April 2007 (CEST))&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Developers_Workshop_2007&amp;diff=4626</id>
		<title>Developers Workshop 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Developers_Workshop_2007&amp;diff=4626"/>
		<updated>2007-06-08T07:56:27Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Und &amp;#039;nen Sprecher gibts auch...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Logodws07.png|right|frame|The workshop logo was created by [http://www.esthereberwijn.com/ Esther Eberwijn] ]]&lt;br /&gt;
=== Netlabs Developers Workshop 2007 July 7 &amp;amp; 8 Amsterdam, The Netherlands===&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to the &#039;&#039;OS/2&#039;&#039;, &#039;&#039;eComStation&#039;&#039; and &#039;&#039;Voyager&#039;&#039;  &#039;&#039;&#039;[[Developers Workshop]]&#039;&#039;&#039; 2007!&lt;br /&gt;
&lt;br /&gt;
== News==&lt;br /&gt;
15-05-2007: The first 3 presentations are now listed with detailed information; Added two hotels&amp;lt;br&amp;gt;&lt;br /&gt;
08-05-2007: Added the first presentations&amp;lt;br&amp;gt;&lt;br /&gt;
08-04-2007: Sent out a message with ticket information and how to submit presentations&amp;lt;br&amp;gt;&lt;br /&gt;
29-03-2007: Added registration info&lt;br /&gt;
&lt;br /&gt;
== What==&lt;br /&gt;
&lt;br /&gt;
Like the years before, the workshop will be a &#039;&#039;&#039;great mix&#039;&#039;&#039; of information exchange between &#039;&#039;developers&#039;&#039; and &#039;&#039;translators&#039;&#039; from all over the world. They can be present on location or online.&lt;br /&gt;
It is cool to meet developers in real life to match faces to nicknames! This makes working online later easier and more fun as well.&lt;br /&gt;
&lt;br /&gt;
Both days will have seven sessions of 45 minutes each. Starting at 9:00 AM and ending at 17:00 PM.&lt;br /&gt;
&amp;lt;br&amp;gt;We are currently talking to various developers to get the sessions filled with high quality content.&lt;br /&gt;
&amp;lt;br&amp;gt;So keep this page monitored to have the latest information! The final schedule will be posted soon.&lt;br /&gt;
&amp;lt;br&amp;gt;If you have not been contacted yet while you have an interesting subject to present about, then please contact us via mail at: &#039;&#039;&#039;mailto:developersworkshop@netlabs.org&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Topics ===&lt;br /&gt;
&lt;br /&gt;
Currently we have the following topics arranged already:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Introduction to NOM&#039;&#039;&#039; (Netlabs Object Model)&lt;br /&gt;
** &#039;&#039;Chris Wohlgemuth&#039;&#039;&lt;br /&gt;
** NOM is the object model developed for the Voyager project but may be used for any kind of apps. It&#039;s lightweight with C syntax, binary compatibility over releases and a free license. The presentation shows the architecture and gives examples how and why to use NOM in application development.&lt;br /&gt;
*** Why using NOM?&lt;br /&gt;
*** NOM compared to SOM&lt;br /&gt;
**** Garbage collection&lt;br /&gt;
**** Object pointer verification&lt;br /&gt;
**** ...&lt;br /&gt;
*** Current development status&lt;br /&gt;
*** Programming example&lt;br /&gt;
*** Future plans and contributing&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Utilizing multi core processors with multiple threads&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Voyager Resources&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;A Freely Programmable USB-Interface for eCS - Focussing on the DLP-USB245M&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;Uwe Hinz,  OS/2 User Group Dresden&#039;&#039;&lt;br /&gt;
** The presentation shows a possible way to overcome the barrier of missing USB-Drivers for eCS. Instead of programming one particular driver for a particular USB device, it will be explained how the already existing driver &#039;usbedc10.sys&#039; by  Wim Brul can do the job easily. Together with the famous USB-Interface Modul DLB-USB245M and a Microcontroller (MCU) the presentation will show how to build USB devices for eCS that can do digital I/O, analog I/O and a number of tasks in the world of Data Acquisition and Control (DAC). Two working examples written in VXREXX will be presented and some details about the USB protocol will be mentioned as well.&lt;br /&gt;
* &#039;&#039;&#039;How to create popular software products for eComStation&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;Eugene Gorbunoff, eCo Software&#039;&#039;&lt;br /&gt;
*** 100 tricks and tips&lt;br /&gt;
*** How to select a project&lt;br /&gt;
*** What do users need&lt;br /&gt;
*** How to organize work&lt;br /&gt;
*** How to collaborate with other developers&lt;br /&gt;
*** How to survive on eCS market&lt;br /&gt;
* &#039;&#039;&#039;eComStation User Interface&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;Eugene Gorbunoff, eCo Software&#039;&#039;&lt;br /&gt;
*** Advantages and disadvantages &lt;br /&gt;
*** New control elements, libraries and templates&lt;br /&gt;
*** The future of eComStation UI&lt;br /&gt;
&lt;br /&gt;
== Costs==&lt;br /&gt;
&lt;br /&gt;
=== Workshop===&lt;br /&gt;
&lt;br /&gt;
This event is a great gathering and is being organized for the third time now by volunteers. We try to keep costs as low as possible, but we can&#039;t make it for free, unless you are a student!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;To make registration and payments easy and flexible you can use the &lt;br /&gt;
[http://www.mensys.net/DeveloperWorkshop2007/ &#039;&#039;&#039;Mensys&#039;&#039;&#039;] system for this.&lt;br /&gt;
&#039;&#039;&amp;lt;br&amp;gt;Please register and pay up front, even if you are a student, so we don&#039;t have to deal with cash money and credit cards on location. Thereby preparing badges before the event starts already and making things go smoothly.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following options are available:&lt;br /&gt;
&lt;br /&gt;
* netlabs.org Developers Workshop 2007, Saturday and Sunday: &#039;&#039;&#039;45 Euro&#039;&#039;&#039;&lt;br /&gt;
* netlabs.org Developers Workshop 2007, one day: &#039;&#039;&#039;25 Euro&#039;&#039;&#039;&lt;br /&gt;
* netlabs.org Developers Workshop 2007, students: &#039;&#039;&#039;Free&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lunch ===&lt;br /&gt;
&lt;br /&gt;
Each day a very complete lunch buffet (cold and warm) will be provided near the location (50 meters). This will cost &#039;&#039;&#039;14,- Euro&#039;&#039;&#039; per meal (without beverages, for which the bar will be opened), to be paid at the location.&lt;br /&gt;
&lt;br /&gt;
== Where ==&lt;br /&gt;
&lt;br /&gt;
After Dresden (Germany) and Biel (Swiss), this years edition will be held in the beautiful and famous city of &#039;&#039;&#039;Amsterdam&#039;&#039;&#039; in &#039;&#039;&#039;The Netherlands&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;As this city has &#039;&#039;many great things&#039;&#039; to offer, besides this workshop of course, if might be wise to extend your visit with some extra days! Then you can explore the many gems that can be found in this city. Take a look at the [http://www.iamsterdam.com/ &#039;&#039;&#039;Tourist Information&#039;&#039;&#039;] site to fill your agenda.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The event location will be:&lt;br /&gt;
&#039;&#039;&#039;Cultural center Griffioen&#039;&#039;&#039; of the [http://www.vuamsterdam.com//home/index.cfm &#039;&#039;&#039;VU Amsterdam&#039;&#039;&#039;].&lt;br /&gt;
This university is also the seat of [http://en.wikipedia.org/wiki/Andrew_S._Tanenbaum &#039;&#039;&#039;Dr. Andrew S. Tanenbaum&#039;&#039;&#039;]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;It is located on the border of Amsterdam and Amstelveen, but it is &#039;&#039;&#039;very easy&#039;&#039;&#039; to &#039;&#039;&#039;reach&#039;&#039;&#039; from the city center!&lt;br /&gt;
&amp;lt;br&amp;gt;Here is some more information on the location itself, but it is in &#039;&#039;Dutch&#039;&#039; only:&lt;br /&gt;
[http://www.vu.nl/Organisatie/index.cfm/home_subsection.cfm/subsectionid/9DB86C70-F9C7-4704-8C9D9ED46EEDB063 &#039;&#039;&#039;Location information&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Sleeping ==&lt;br /&gt;
As Amsterdam is still a &#039;&#039;&#039;tourist magnet&#039;&#039;&#039; it is wise to arrange your ho(s)tel &#039;&#039;&#039;early&#039;&#039;&#039;!&lt;br /&gt;
&amp;lt;br&amp;gt;The same accounts for cheap flights, which are available from many international airports.&lt;br /&gt;
&lt;br /&gt;
=== Cheap but good===&lt;br /&gt;
For a cheap, but good quality, hostel look at:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.stayokay.com/index.cfm?fuseaction=Herbergen.showHomeHB&amp;amp;lng=2&amp;amp;id=3 &#039;&#039;&#039;StayOkay&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
This one is located on the edge of the city center, and close to the stops of &#039;&#039;&#039;tram line 5&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;Not practical when you come by car!&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handy hotel ===&lt;br /&gt;
If you travel by &#039;&#039;&#039;car&#039;&#039;&#039;, the following hotel might be of interest:&lt;br /&gt;
* [http://www.bastionhotels.nl/en/ourhotels/amsterdamzuidwest/ &#039;&#039;&#039;Bastion Hotel Amsterdam/Centrum-Zuidwest&#039;&#039;&#039;]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Other ho(s)tels===&lt;br /&gt;
If you are looking for other hotels or hostels, try to find one close to &#039;&#039;&#039;tram line 5 or 51&#039;&#039;&#039; as that makes traveling to the location &#039;&#039;&#039;very easy&#039;&#039;&#039;! And cheap, as most hotels might have free/cheap parking.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; When looking for hotels in Amsterdam, We came across two hotels that are located close to the station Amsterdam - Zuid. We have no further information about the hotels, but we thought they should be listed here:&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.novotel.com/novotel/fichehotel/de/nov/0515/fiche_hotel.shtml &#039;&#039;&#039;Novotel Amsterdam&#039;&#039;&#039;]&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.ichotelsgroup.com/h/d/6c/394/de/hd/amsnt &#039;&#039;&#039;Holiday Inn Amsterdam&#039;&#039;&#039;]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Getting there==&lt;br /&gt;
&lt;br /&gt;
There are many ways that lead to Amsterdam:&lt;br /&gt;
&lt;br /&gt;
=== By train===&lt;br /&gt;
&lt;br /&gt;
The event location is close to station &#039;&#039;&#039;&#039;Amsterdam - Zuid&#039;&#039;&#039;&#039;. If you travel with an international train you need to transfer at &#039;&#039;&#039;&#039;Amsterdam - Duivendrecht&#039;&#039;&#039;&#039;. Otherwise it might be easier to go to &#039;&#039;&#039;&#039;Amsterdam - Centraal&#039;&#039;&#039;&#039; and take one of two direct trams from there (&#039;&#039;&#039;line 5 and 51&#039;&#039;&#039;).&lt;br /&gt;
&amp;lt;br&amp;gt;More information about train connections can be found at the [http://ns.nl/servlet/Satellite?cid=1075985690180&amp;amp;pagename=www.ns.nl%2FPage%2FSuperHomepageEnglish&amp;amp;lang=en&amp;amp;c=Page &#039;&#039;&#039;Nederlandse Spoorwegen&#039;&#039;&#039;] site.&lt;br /&gt;
&lt;br /&gt;
=== By plane===&lt;br /&gt;
&lt;br /&gt;
There is an enormous amount of airlines flying to &#039;&#039;&#039;&#039;Amsterdam International Airport Schiphol&#039;&#039;&#039;&#039;. So it should be possible to get there at &#039;&#039;reasonable prices&#039;&#039;, so book your tickets early! The airport is one stop away by train (&#039;&#039;&#039;&#039;Amsterdam - Zuid&#039;&#039;&#039;&#039;). Be sure &#039;&#039;&#039;NOT&#039;&#039;&#039; to travel into the direction of &#039;&#039;&#039;&#039;Amsterdam - Centraal&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;More information about arriving by plane can be found at the [http://schiphol.nl/home/Index.jsp;jsessionid=GKFNHKTzJL3JX1LyNQ6QMVLWH!2089105939?ASSORTMENT%3C%3East_id=1408474395729236&amp;amp;bmLocale=en&amp;amp;GENERIC%3C%3EclientGenericEvent=Changed+locale+to+en&amp;amp;GENERIC%3C%3EeventType=Locale&amp;amp;FOLDER%3C%3Efolder_id=1408474395729236&amp;amp;VIRTUAL_TEMPLATE%3C%3Evt_id=10134198673795849&amp;amp;bmForm=log_client_generic_event&amp;amp;bmFormID=1179256269064&amp;amp;bmUID=1179256269064 &#039;&#039;&#039;Schiphol&#039;&#039;&#039;] site.&lt;br /&gt;
&lt;br /&gt;
=== By car===&lt;br /&gt;
&lt;br /&gt;
Although there is &#039;&#039;plenty&#039;&#039; of &#039;&#039;free parking&#039;&#039; space &#039;&#039;&#039;near&#039;&#039;&#039; the event, be aware that parking is &#039;&#039;&#039;expensive&#039;&#039;&#039; and that there are &#039;&#039;&#039;high fines&#039;&#039;&#039; on &#039;&#039;not&#039;&#039; paying if you stay in the city of Amsterdam !!. &lt;br /&gt;
&amp;lt;br&amp;gt;From all directions: travel to &#039;Ring A10&#039; and take exit &#039;VU Hospital&#039;. More precise directions will follow soon.&lt;br /&gt;
&lt;br /&gt;
In case you have a navigation system, here is the full address of the site:&lt;br /&gt;
&amp;lt;br&amp;gt;Cultuurcentrum Griffioen&lt;br /&gt;
&amp;lt;br&amp;gt;Uilenstede 106&lt;br /&gt;
&amp;lt;br&amp;gt;1183 AM Amstelveen&lt;br /&gt;
&amp;lt;br&amp;gt;Phone: (31)-(0)20-5985100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hope to see you all there!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;Developer Workshop Team&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This page is under construction. If you are looking for information which is not listed yet or have information that might be of interest to others then please mail us at: &#039;&#039;&#039;mailto:developersworkshop@netlabs.org&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Developers_Workshop_2007&amp;diff=4625</id>
		<title>Developers Workshop 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Developers_Workshop_2007&amp;diff=4625"/>
		<updated>2007-06-08T07:53:55Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Some info about NOM presentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Logodws07.png|right|frame|The workshop logo was created by [http://www.esthereberwijn.com/ Esther Eberwijn] ]]&lt;br /&gt;
=== Netlabs Developers Workshop 2007 July 7 &amp;amp; 8 Amsterdam, The Netherlands===&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to the &#039;&#039;OS/2&#039;&#039;, &#039;&#039;eComStation&#039;&#039; and &#039;&#039;Voyager&#039;&#039;  &#039;&#039;&#039;[[Developers Workshop]]&#039;&#039;&#039; 2007!&lt;br /&gt;
&lt;br /&gt;
== News==&lt;br /&gt;
15-05-2007: The first 3 presentations are now listed with detailed information; Added two hotels&amp;lt;br&amp;gt;&lt;br /&gt;
08-05-2007: Added the first presentations&amp;lt;br&amp;gt;&lt;br /&gt;
08-04-2007: Sent out a message with ticket information and how to submit presentations&amp;lt;br&amp;gt;&lt;br /&gt;
29-03-2007: Added registration info&lt;br /&gt;
&lt;br /&gt;
== What==&lt;br /&gt;
&lt;br /&gt;
Like the years before, the workshop will be a &#039;&#039;&#039;great mix&#039;&#039;&#039; of information exchange between &#039;&#039;developers&#039;&#039; and &#039;&#039;translators&#039;&#039; from all over the world. They can be present on location or online.&lt;br /&gt;
It is cool to meet developers in real life to match faces to nicknames! This makes working online later easier and more fun as well.&lt;br /&gt;
&lt;br /&gt;
Both days will have seven sessions of 45 minutes each. Starting at 9:00 AM and ending at 17:00 PM.&lt;br /&gt;
&amp;lt;br&amp;gt;We are currently talking to various developers to get the sessions filled with high quality content.&lt;br /&gt;
&amp;lt;br&amp;gt;So keep this page monitored to have the latest information! The final schedule will be posted soon.&lt;br /&gt;
&amp;lt;br&amp;gt;If you have not been contacted yet while you have an interesting subject to present about, then please contact us via mail at: &#039;&#039;&#039;mailto:developersworkshop@netlabs.org&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Topics ===&lt;br /&gt;
&lt;br /&gt;
Currently we have the following topics arranged already:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Introduction to NOM&#039;&#039;&#039; (Netlabs Object Model)&lt;br /&gt;
** NOM is the object model developed for the Voyager project but may be used for any kind of apps. It&#039;s lightweight with C syntax, binary compatibility over releases and a free license. The presentation shows the architecture and gives examples how and why to use NOM in application development.&lt;br /&gt;
*** Why using NOM?&lt;br /&gt;
*** NOM compared to SOM&lt;br /&gt;
**** Garbage collection&lt;br /&gt;
**** Object pointer verification&lt;br /&gt;
**** ...&lt;br /&gt;
*** Current development status&lt;br /&gt;
*** Programming example&lt;br /&gt;
*** Future plans and contributing&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Utilizing multi core processors with multiple threads&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Voyager Resources&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;A Freely Programmable USB-Interface for eCS - Focussing on the DLP-USB245M&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;Uwe Hinz,  OS/2 User Group Dresden&#039;&#039;&lt;br /&gt;
** The presentation shows a possible way to overcome the barrier of missing USB-Drivers for eCS. Instead of programming one particular driver for a particular USB device, it will be explained how the already existing driver &#039;usbedc10.sys&#039; by  Wim Brul can do the job easily. Together with the famous USB-Interface Modul DLB-USB245M and a Microcontroller (MCU) the presentation will show how to build USB devices for eCS that can do digital I/O, analog I/O and a number of tasks in the world of Data Acquisition and Control (DAC). Two working examples written in VXREXX will be presented and some details about the USB protocol will be mentioned as well.&lt;br /&gt;
* &#039;&#039;&#039;How to create popular software products for eComStation&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;Eugene Gorbunoff, eCo Software&#039;&#039;&lt;br /&gt;
*** 100 tricks and tips&lt;br /&gt;
*** How to select a project&lt;br /&gt;
*** What do users need&lt;br /&gt;
*** How to organize work&lt;br /&gt;
*** How to collaborate with other developers&lt;br /&gt;
*** How to survive on eCS market&lt;br /&gt;
* &#039;&#039;&#039;eComStation User Interface&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;Eugene Gorbunoff, eCo Software&#039;&#039;&lt;br /&gt;
*** Advantages and disadvantages &lt;br /&gt;
*** New control elements, libraries and templates&lt;br /&gt;
*** The future of eComStation UI&lt;br /&gt;
&lt;br /&gt;
== Costs==&lt;br /&gt;
&lt;br /&gt;
=== Workshop===&lt;br /&gt;
&lt;br /&gt;
This event is a great gathering and is being organized for the third time now by volunteers. We try to keep costs as low as possible, but we can&#039;t make it for free, unless you are a student!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;To make registration and payments easy and flexible you can use the &lt;br /&gt;
[http://www.mensys.net/DeveloperWorkshop2007/ &#039;&#039;&#039;Mensys&#039;&#039;&#039;] system for this.&lt;br /&gt;
&#039;&#039;&amp;lt;br&amp;gt;Please register and pay up front, even if you are a student, so we don&#039;t have to deal with cash money and credit cards on location. Thereby preparing badges before the event starts already and making things go smoothly.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following options are available:&lt;br /&gt;
&lt;br /&gt;
* netlabs.org Developers Workshop 2007, Saturday and Sunday: &#039;&#039;&#039;45 Euro&#039;&#039;&#039;&lt;br /&gt;
* netlabs.org Developers Workshop 2007, one day: &#039;&#039;&#039;25 Euro&#039;&#039;&#039;&lt;br /&gt;
* netlabs.org Developers Workshop 2007, students: &#039;&#039;&#039;Free&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lunch ===&lt;br /&gt;
&lt;br /&gt;
Each day a very complete lunch buffet (cold and warm) will be provided near the location (50 meters). This will cost &#039;&#039;&#039;14,- Euro&#039;&#039;&#039; per meal (without beverages, for which the bar will be opened), to be paid at the location.&lt;br /&gt;
&lt;br /&gt;
== Where ==&lt;br /&gt;
&lt;br /&gt;
After Dresden (Germany) and Biel (Swiss), this years edition will be held in the beautiful and famous city of &#039;&#039;&#039;Amsterdam&#039;&#039;&#039; in &#039;&#039;&#039;The Netherlands&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;As this city has &#039;&#039;many great things&#039;&#039; to offer, besides this workshop of course, if might be wise to extend your visit with some extra days! Then you can explore the many gems that can be found in this city. Take a look at the [http://www.iamsterdam.com/ &#039;&#039;&#039;Tourist Information&#039;&#039;&#039;] site to fill your agenda.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The event location will be:&lt;br /&gt;
&#039;&#039;&#039;Cultural center Griffioen&#039;&#039;&#039; of the [http://www.vuamsterdam.com//home/index.cfm &#039;&#039;&#039;VU Amsterdam&#039;&#039;&#039;].&lt;br /&gt;
This university is also the seat of [http://en.wikipedia.org/wiki/Andrew_S._Tanenbaum &#039;&#039;&#039;Dr. Andrew S. Tanenbaum&#039;&#039;&#039;]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;It is located on the border of Amsterdam and Amstelveen, but it is &#039;&#039;&#039;very easy&#039;&#039;&#039; to &#039;&#039;&#039;reach&#039;&#039;&#039; from the city center!&lt;br /&gt;
&amp;lt;br&amp;gt;Here is some more information on the location itself, but it is in &#039;&#039;Dutch&#039;&#039; only:&lt;br /&gt;
[http://www.vu.nl/Organisatie/index.cfm/home_subsection.cfm/subsectionid/9DB86C70-F9C7-4704-8C9D9ED46EEDB063 &#039;&#039;&#039;Location information&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
== Sleeping ==&lt;br /&gt;
As Amsterdam is still a &#039;&#039;&#039;tourist magnet&#039;&#039;&#039; it is wise to arrange your ho(s)tel &#039;&#039;&#039;early&#039;&#039;&#039;!&lt;br /&gt;
&amp;lt;br&amp;gt;The same accounts for cheap flights, which are available from many international airports.&lt;br /&gt;
&lt;br /&gt;
=== Cheap but good===&lt;br /&gt;
For a cheap, but good quality, hostel look at:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.stayokay.com/index.cfm?fuseaction=Herbergen.showHomeHB&amp;amp;lng=2&amp;amp;id=3 &#039;&#039;&#039;StayOkay&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
This one is located on the edge of the city center, and close to the stops of &#039;&#039;&#039;tram line 5&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;Not practical when you come by car!&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handy hotel ===&lt;br /&gt;
If you travel by &#039;&#039;&#039;car&#039;&#039;&#039;, the following hotel might be of interest:&lt;br /&gt;
* [http://www.bastionhotels.nl/en/ourhotels/amsterdamzuidwest/ &#039;&#039;&#039;Bastion Hotel Amsterdam/Centrum-Zuidwest&#039;&#039;&#039;]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Other ho(s)tels===&lt;br /&gt;
If you are looking for other hotels or hostels, try to find one close to &#039;&#039;&#039;tram line 5 or 51&#039;&#039;&#039; as that makes traveling to the location &#039;&#039;&#039;very easy&#039;&#039;&#039;! And cheap, as most hotels might have free/cheap parking.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; When looking for hotels in Amsterdam, We came across two hotels that are located close to the station Amsterdam - Zuid. We have no further information about the hotels, but we thought they should be listed here:&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.novotel.com/novotel/fichehotel/de/nov/0515/fiche_hotel.shtml &#039;&#039;&#039;Novotel Amsterdam&#039;&#039;&#039;]&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.ichotelsgroup.com/h/d/6c/394/de/hd/amsnt &#039;&#039;&#039;Holiday Inn Amsterdam&#039;&#039;&#039;]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Getting there==&lt;br /&gt;
&lt;br /&gt;
There are many ways that lead to Amsterdam:&lt;br /&gt;
&lt;br /&gt;
=== By train===&lt;br /&gt;
&lt;br /&gt;
The event location is close to station &#039;&#039;&#039;&#039;Amsterdam - Zuid&#039;&#039;&#039;&#039;. If you travel with an international train you need to transfer at &#039;&#039;&#039;&#039;Amsterdam - Duivendrecht&#039;&#039;&#039;&#039;. Otherwise it might be easier to go to &#039;&#039;&#039;&#039;Amsterdam - Centraal&#039;&#039;&#039;&#039; and take one of two direct trams from there (&#039;&#039;&#039;line 5 and 51&#039;&#039;&#039;).&lt;br /&gt;
&amp;lt;br&amp;gt;More information about train connections can be found at the [http://ns.nl/servlet/Satellite?cid=1075985690180&amp;amp;pagename=www.ns.nl%2FPage%2FSuperHomepageEnglish&amp;amp;lang=en&amp;amp;c=Page &#039;&#039;&#039;Nederlandse Spoorwegen&#039;&#039;&#039;] site.&lt;br /&gt;
&lt;br /&gt;
=== By plane===&lt;br /&gt;
&lt;br /&gt;
There is an enormous amount of airlines flying to &#039;&#039;&#039;&#039;Amsterdam International Airport Schiphol&#039;&#039;&#039;&#039;. So it should be possible to get there at &#039;&#039;reasonable prices&#039;&#039;, so book your tickets early! The airport is one stop away by train (&#039;&#039;&#039;&#039;Amsterdam - Zuid&#039;&#039;&#039;&#039;). Be sure &#039;&#039;&#039;NOT&#039;&#039;&#039; to travel into the direction of &#039;&#039;&#039;&#039;Amsterdam - Centraal&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;More information about arriving by plane can be found at the [http://schiphol.nl/home/Index.jsp;jsessionid=GKFNHKTzJL3JX1LyNQ6QMVLWH!2089105939?ASSORTMENT%3C%3East_id=1408474395729236&amp;amp;bmLocale=en&amp;amp;GENERIC%3C%3EclientGenericEvent=Changed+locale+to+en&amp;amp;GENERIC%3C%3EeventType=Locale&amp;amp;FOLDER%3C%3Efolder_id=1408474395729236&amp;amp;VIRTUAL_TEMPLATE%3C%3Evt_id=10134198673795849&amp;amp;bmForm=log_client_generic_event&amp;amp;bmFormID=1179256269064&amp;amp;bmUID=1179256269064 &#039;&#039;&#039;Schiphol&#039;&#039;&#039;] site.&lt;br /&gt;
&lt;br /&gt;
=== By car===&lt;br /&gt;
&lt;br /&gt;
Although there is &#039;&#039;plenty&#039;&#039; of &#039;&#039;free parking&#039;&#039; space &#039;&#039;&#039;near&#039;&#039;&#039; the event, be aware that parking is &#039;&#039;&#039;expensive&#039;&#039;&#039; and that there are &#039;&#039;&#039;high fines&#039;&#039;&#039; on &#039;&#039;not&#039;&#039; paying if you stay in the city of Amsterdam !!. &lt;br /&gt;
&amp;lt;br&amp;gt;From all directions: travel to &#039;Ring A10&#039; and take exit &#039;VU Hospital&#039;. More precise directions will follow soon.&lt;br /&gt;
&lt;br /&gt;
In case you have a navigation system, here is the full address of the site:&lt;br /&gt;
&amp;lt;br&amp;gt;Cultuurcentrum Griffioen&lt;br /&gt;
&amp;lt;br&amp;gt;Uilenstede 106&lt;br /&gt;
&amp;lt;br&amp;gt;1183 AM Amstelveen&lt;br /&gt;
&amp;lt;br&amp;gt;Phone: (31)-(0)20-5985100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hope to see you all there!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;Developer Workshop Team&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This page is under construction. If you are looking for information which is not listed yet or have information that might be of interest to others then please mail us at: &#039;&#039;&#039;mailto:developersworkshop@netlabs.org&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Rebuild_your_eCS_desktop&amp;diff=4582</id>
		<title>Rebuild your eCS desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Rebuild_your_eCS_desktop&amp;diff=4582"/>
		<updated>2007-04-30T09:11:40Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Typo :-/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When following the steps outlined here the resulting desktop will be the one created during installation of the system. Any objects added by the user are not lost but preserved and may be moved to the newly built desktop later. This is kind of a last resort desktop maintainance trick when your INI files are completely broken and none of the known INI tools is able to recover them properly.&lt;br /&gt;
&lt;br /&gt;
#Create a copy of your current INI files, just in case...&lt;br /&gt;
#Boot to a command line by pressing ALT-F1 when the white square appears in the upper left corner during boot&lt;br /&gt;
#Go to the directory holding your INI files which is usually &#039;&#039;OS2&#039;&#039; on your boot drive&lt;br /&gt;
#Run &amp;lt;code&amp;gt;makini.exe os2.ini ini.rc&amp;lt;/code&amp;gt; to create the first INI file&lt;br /&gt;
#Run &amp;lt;code&amp;gt;makini.exe os2sys.ini inisys.rc&amp;lt;/code&amp;gt; to create the other INI file&lt;br /&gt;
#Reboot&lt;br /&gt;
&lt;br /&gt;
The system should drop you on a new desktop with some objects already created. Part two is to recreate all the objects built during initial installation.&lt;br /&gt;
&lt;br /&gt;
#Open a command line and go to &amp;lt;code&amp;gt;x:\ecs\install&amp;lt;/code&amp;gt;, where &#039;&#039;x&#039;&#039; is your boot drive&lt;br /&gt;
#Run &amp;lt;code&amp;gt;CLNDESK.EXE x:\ecs\install\rsp\shuf_ctl.ini x:\ecs\install\rsp\shuf_key.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your desktop and the relevant subdirectories (e.g. &#039;&#039;Programs&#039;&#039;) are now populated with all the objects you know from your desktop just after installation. Any objects created during the lifetime of your system prior to recreating your desktop can be found in the folder &#039;&#039;Previous Desktop&#039;&#039; which can be found on your new desktop.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that some of the objects in this folder may be broken. Remember you created&lt;br /&gt;
a new desktop in the first place because the old one was broken...&lt;br /&gt;
&lt;br /&gt;
([[User:Cinc|Cinc]] 11:11, 30 April 2007 (CEST))&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Rebuild_your_eCS_desktop&amp;diff=4581</id>
		<title>Rebuild your eCS desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Rebuild_your_eCS_desktop&amp;diff=4581"/>
		<updated>2007-04-30T09:11:04Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Step by step instructions how to rebuild the desktop on eCS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When following the steps outlined here the resulting desktop will be the one created during installation of the system. Any objects added by the user are not lost but preserved and may be moved to the newly built desktop later. This is kind of a last resort desktop maintainance trick when your INI files are completely broken and none of the known INI tools is able to recover them properly.&lt;br /&gt;
&lt;br /&gt;
#Create a copy of your current INI files, just in case...&lt;br /&gt;
#Boot to a command line by pressing ALT-F1 when the white square appears in the upper left corner during boot&lt;br /&gt;
#Go to the directory holding your INI files which is usually &#039;&#039;OS2&#039;&#039; on your boot drive&lt;br /&gt;
#Run &amp;lt;code&amp;gt;makini.exe os2.ini ini.rc&amp;lt;/code&amp;gt; to create the first INI file&lt;br /&gt;
#Run &amp;lt;code&amp;gt;makini.exe os2sys.ini inisys.rc&amp;lt;/code&amp;gt; to create the other INI file&lt;br /&gt;
#Reboot&lt;br /&gt;
&lt;br /&gt;
The system should drop you on a new desktop with some objects already created. Part two is to recreate all the objects built during initial installation.&lt;br /&gt;
&lt;br /&gt;
#Open a command line and go to &amp;lt;code&amp;gt;x:\ecs\install&amp;lt;/code&amp;gt;, where &#039;&#039;x&#039;&#039; is your boot drive&lt;br /&gt;
#Run &amp;lt;code&amp;gt;CLNDESK.EXE x:\ecs\install\rsp\shuf_ctl.ini x:\ecs\install\rsp\shuf_key.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your desktop and the relevant subdirectories (e.g. &#039;&#039;Programs&#039;&#039;) is now populated with all the objects you know from your desktop just after installation. Any objects created during the lifetime of your system prior to recreating your desktop can be found in the folder &#039;&#039;Previous Desktop&#039;&#039; which can be found on your new desktop.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that some of the objects in this folder may be broken. Remember you created&lt;br /&gt;
a new desktop in the first place because the old one was broken...&lt;br /&gt;
&lt;br /&gt;
([[User:Cinc|Cinc]] 11:11, 30 April 2007 (CEST))&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Main_Page&amp;diff=4580</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Main_Page&amp;diff=4580"/>
		<updated>2007-04-30T08:36:07Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Added section about eCS maintainance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Welcome to the Wiki at netlabs.org. You will find a lot of interesting information about OS/2 and [http://www.ecomstation.com eCS] on this page.&amp;lt;br/&amp;gt;&lt;br /&gt;
If you are interested in joining the &#039;&#039;&#039;community mailinglist&#039;&#039;&#039; please have a look [[Mailinglists | here]]!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CONTRIBUTE&#039;&#039;&#039;: Unfortunately, we have to prevent registering new users till we have fixed the spamming-problems on the Wiki, sorry! If you want to &#039;&#039;&#039;create an user account&#039;&#039;&#039; please send an email with your desired user name to os2info [at] gmx.net and we will generate it for you. Will be fixed ASAP.&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
Where are we now and where could we go. Open for discussions.&lt;br /&gt;
&lt;br /&gt;
*[[Ideas]] - This is so far a random collection of ideas and stuff we have in our heads and which probably is worth creating a project for.&lt;br /&gt;
** [[Ideas#New_PM_Controls|New PM Controls]]&lt;br /&gt;
&lt;br /&gt;
* [[Community]] - Discussions about the netlabs.org community, website, and so on. Complain here :)&lt;br /&gt;
&lt;br /&gt;
* [[The Warp Wishlist]]- The OS/2 Warp WishList is now available on wiki format.&lt;br /&gt;
&lt;br /&gt;
* [[Netlabs bi weekly newsletter]] - &#039;&#039;New&#039;&#039; The latest netlabs.org news&lt;br /&gt;
&lt;br /&gt;
* [[Netlabs News]] - Even later than above&lt;br /&gt;
&lt;br /&gt;
* [[Warpstock Europe Websites]] - Discussion of a concept that aims to provide infrastructure and information to organizers, and information and services to users/visitors.&lt;br /&gt;
&lt;br /&gt;
* [[UniAudio Development]] Universal Audio Driver Development Discussion&lt;br /&gt;
&lt;br /&gt;
* [[WarpVision Development]] WarpVision media player development discussion&lt;br /&gt;
&lt;br /&gt;
*[[Fundraising campaign]] - Projects that could be realized, support your favourite one!&lt;br /&gt;
&lt;br /&gt;
*[[XWorkplace]] - XWorkplace Future Plans and Ideas&lt;br /&gt;
&lt;br /&gt;
*[[Network Connection Manager]] - Design for follow-up to Wireless LAN Monitor&lt;br /&gt;
&lt;br /&gt;
*[[DOSBox Port]] - DOSBox Port for OS/2-eCS Project&lt;br /&gt;
&lt;br /&gt;
*[[Odin]] - ODIN Project todo and Ideas&lt;br /&gt;
&lt;br /&gt;
*[[eSchemes]] - eComStation WPS-based look &amp;amp; feel system&lt;br /&gt;
&lt;br /&gt;
*[[Mr2ice]] - MR/2 ICE is a full featured OS/2 native mail and news client.&lt;br /&gt;
&lt;br /&gt;
*[[MMOS2 Related Projects]] - A list of MMO2 Related sofware developments.&lt;br /&gt;
&lt;br /&gt;
== Shop == [[Image:Netlabs_watch.png|frame|netlabs watch]]&lt;br /&gt;
We do have a shop for shirts and more ... [http://shop.netlabs.org shop.netlabs.org]! Prices include a small extra to support netlabs.org&#039;s future...&lt;br /&gt;
&lt;br /&gt;
== New Logo and Redesign ==&lt;br /&gt;
* [[Redesign]] - The new logo is choosen and a first and hopefully final draft for the new site layout has been created - check it out ;)&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE:&amp;lt;/b&amp;gt; This section should not be extended anymore. We reloaded the [http://www.edm2.com EDM/2 magazine] and we recommend to put all developer stuff in there. This wiki is a mess at the moment and we will clean that up one day and migrate the stuff that makes sense to EDM/2. Thanks!&lt;br /&gt;
&lt;br /&gt;
This section contains hints and tricks and descriptions of undocumented&lt;br /&gt;
stuff. Undocumented means there&#039;s no official documentation or the &lt;br /&gt;
documentation (for example included on DevCon CDs) isn&#039;t available to&lt;br /&gt;
the public anymore. But DON&#039;T JUST COPY any documentation you may have into the Wiki. Keep in mind it&#039;s copyrighted! &lt;br /&gt;
&lt;br /&gt;
* [[Undocumented stuff]]&lt;br /&gt;
* [[Mozilla]] - some stuff regarding building Mozilla on OS/2&lt;br /&gt;
* [http://www.edm2.com/index.php/SDL SDL] - some tips &amp;amp; tricks about how to port applications using SDL to OS/2&lt;br /&gt;
* [http://www.edm2.com/index.php/How_to_program_for_the_WPS WPS] - how to program for the [http://en.wikipedia.org/wiki/Workplace_Shell WPS]. Note: the german Wikipedia may have more information about the WPS. Go [http://de.wikipedia.org/wiki/Workplace_Shell here].&lt;br /&gt;
&lt;br /&gt;
==OS/2 and eCS resources==&lt;br /&gt;
===Drivers===&lt;br /&gt;
*Visit http://www.os2warp.be if you want to know if your hardware is supported.&lt;br /&gt;
*See a [http://www.ecomstation.it/pido2/home/mircomir/fixpak.php?lang=en driver list] generated from eCSoft/2 database.&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
For software have a look here:&lt;br /&gt;
&lt;br /&gt;
* http://hobbes.nmsu.edu&lt;br /&gt;
* http://en.ecomstation.ru/apecs.php&lt;br /&gt;
* http://www.ecomstation.it/ecsoft2/&lt;br /&gt;
* http://www.unixos2.org - ported *nix tools. A little bit cumbersome to find stuff there but nevertheless worth the effort&lt;br /&gt;
&lt;br /&gt;
===Programs===&lt;br /&gt;
How to use specific programs, HowTos, FAQs etc.&lt;br /&gt;
&lt;br /&gt;
MR/2 ICE [[mr2ice]] is a full featured OS/2 native mail and news client.&lt;br /&gt;
&lt;br /&gt;
===eCS Maintainance===&lt;br /&gt;
Quite a few things are different in eComStation compared to OS/2. Find tips and tricks for common (and not so common) tasks.&lt;br /&gt;
&lt;br /&gt;
* [[Rebuild your eCS desktop]]&lt;br /&gt;
&lt;br /&gt;
==netlabs.org Servers==&lt;br /&gt;
===ToDo&#039;s &amp;amp; History===&lt;br /&gt;
This is the list of tasks for netlabs.org Webservers and the history of what I (ktk) did&lt;br /&gt;
*[[netlabs.org]]&lt;br /&gt;
&lt;br /&gt;
===Mail account===&lt;br /&gt;
Some information for those who own a mailbox at netlabs.org&lt;br /&gt;
*[[netlabs.org Mailing]]&lt;br /&gt;
===Admin Guide===&lt;br /&gt;
So far it&#039;s more or less just me who does all the work on netlabs.org webpages and this somewhat sucks because like this a lot of stuff depends on my lazyness. The following document explains the tasks necessary to create a new project at netlabs.org, including setting up CVS repositories, creating webpages and so on. I hope that I will find some volunteers one day who help me on doing that.&lt;br /&gt;
*[[Admin Guide]]&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4547</id>
		<title>Netlabs News</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4547"/>
		<updated>2007-04-01T16:38:07Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* 26. March - 1. April */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Netlabs]]&lt;br /&gt;
[[Category:Newsletter]]&lt;br /&gt;
&lt;br /&gt;
This page will be used to gather news about netlabs.org and it&#039;s projects.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are looking for the bi-weekly newsletter, please go here: [[Netlabs_bi_weekly_newsletter]]&lt;br /&gt;
=== 26. March - 1. April ===&lt;br /&gt;
* WarpIN 1.0.15&lt;br /&gt;
** needs more information&lt;br /&gt;
* GenMAC&lt;br /&gt;
** donation stuff&lt;br /&gt;
* Voyager&lt;br /&gt;
** IDL compiler completely rewritten. This will make life way easier when creating enhancements for NOM.&lt;br /&gt;
** As usual some bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for mail gathering and bi-weekly processing ===&lt;br /&gt;
This is intended to be a procedure on how to create the bi-weekly newsletter, so that multiple people are able to do it, in case others are away.&lt;br /&gt;
&lt;br /&gt;
The news is gathered on a weekly basis.&lt;br /&gt;
Sources for news are various. We know the following:&lt;br /&gt;
* [irc://irc.netlabs.org/#netlabs #netlabs] channel, just connect and see what comes by&lt;br /&gt;
* http://news.netlabs.org/&lt;br /&gt;
* various SVN timelines for the projects that are already in SVN (needs to be listed explicitly?)&lt;br /&gt;
&lt;br /&gt;
There is a mail id on netlabs for mailing out the newsletter to various contacts.&lt;br /&gt;
The mail id is: news at netlabs dot org&lt;br /&gt;
It uses the following IMAP mailserver: mail dot netlabs dot org&lt;br /&gt;
&lt;br /&gt;
For the start of a new newsletter a copy from the previous one can be made and then copy the new news into it, to make life easy :-)&lt;br /&gt;
The easiest way to get the text is grabbing it from the webpage in normal view mode.&lt;br /&gt;
Check the text a second time, and align it a bit.&lt;br /&gt;
Address it with BCC to the following addresses:&lt;br /&gt;
* martin at os2world dot com&lt;br /&gt;
* stevew at jafar dot hartnell dot edu&lt;br /&gt;
* submit at os2voice dot org&lt;br /&gt;
* webmaster at ecomstation dot com&lt;br /&gt;
* webredactie at os2-gg dot nl&lt;br /&gt;
* ktk at netlabs dot org&lt;br /&gt;
* j dot van dot der dot heide at hccnet dot nl&lt;br /&gt;
* os2info at gmx dot net&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget the subject line with the next number and of it goes.&lt;br /&gt;
&lt;br /&gt;
After the newsletter is sent the &#039;Netlabs bi-weekly newsletter&#039; webpage has to be updated. (http://wiki.netlabs.org/index.php/Netlabs_bi_weekly_newsletter). Just copy the news on top of the others and add a heading.&lt;br /&gt;
&lt;br /&gt;
Then the draft version of the bi-weekly page can be emptied and the heading for the next week can be added.&lt;br /&gt;
&lt;br /&gt;
That is basicly the process of the bi-weekly newsletter.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4527</id>
		<title>Netlabs News</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4527"/>
		<updated>2007-03-12T18:21:19Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* 5. March - 11. March */ More Voyager news&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Netlabs]]&lt;br /&gt;
[[Category:Newsletter]]&lt;br /&gt;
&lt;br /&gt;
This page will be used to gather news about netlabs.org and it&#039;s projects.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are looking for the bi-weekly newsletter, please go here: [[Netlabs_bi_weekly_newsletter]]&lt;br /&gt;
=== 5. March - 11. March ===&lt;br /&gt;
* Samba for eCS (OS/2)&lt;br /&gt;
** there is now also a svn and a trac see: http://svn.netlabs.org/samba&lt;br /&gt;
* Updates to The Config.sys Documentation Project&lt;br /&gt;
** Finally &amp;quot;The Config.sys Documentation Project&amp;quot; and the &amp;quot;ConfigTool 1.3.0 database&amp;quot; are combined together into a single wiki page on the EDM2. The invitation is open to everybody on the OS/2-eCS community to extend the wiki and add more config.sys commands.&lt;br /&gt;
** http://www.edm2.com/index.php/The_Config.sys_Documentation_Project&lt;br /&gt;
* Voyager News&lt;br /&gt;
** Added patches from winter camp 2007 hacking.&lt;br /&gt;
** Basic drag and drop for the desktop. Still working on that.&lt;br /&gt;
**Some more methods for the NOM kernel classes.&lt;br /&gt;
**Some automatic parameter checking when calling methods implemented.&lt;br /&gt;
**Preparation for runtime type information and introspection.&lt;br /&gt;
**Improved the Doxygen documentation.&lt;br /&gt;
**As usual a bunch of bug fixes... err... code refinements ;).&lt;br /&gt;
**Updates to the FAQ regarding license and source code.&lt;br /&gt;
**See SVN for more information: http://svn.netlabs.org/v_nom/timeline and http://svn.netlabs.org/v_desktop/timeline&lt;br /&gt;
&lt;br /&gt;
=== 26. February - 4. March ===&lt;br /&gt;
* Warpstock Europe Website Discussion&lt;br /&gt;
** netlabs.org wiki is used to host a general discussion about concept for a Warpstock Europe website&lt;br /&gt;
** User input is welcome!&lt;br /&gt;
** See: http://wiki.netlabs.org/index.php/Warpstock_Europe_Websites&lt;br /&gt;
* DoxBox Version 0.70&lt;br /&gt;
** Now supports playing Audio-CDs in DOSBox&lt;br /&gt;
** See: ftp://ftp.netlabs.org/pub/dosbox&lt;br /&gt;
** Also of interest to DosBox users: DosBoxFront&lt;br /&gt;
*** See: http://hobbes.nmsu.edu/cgi-bin/h-search?key=dosboxfront&lt;br /&gt;
* Samba Server 3.0.24 and 3.0.25pre&lt;br /&gt;
** Paul Smedley is building Samba Server for netlabs.org&lt;br /&gt;
** See: http://smedley.info/os2ports/samba.html&lt;br /&gt;
* Uniaud&lt;br /&gt;
** We are working on getting the source code buildable&lt;br /&gt;
** See: http://svn.netlabs.org/uniaud&lt;br /&gt;
* Network Connection Manager - Design for follow-up to Wireless LAN Monitor&lt;br /&gt;
** Christian Langanke has started to work on the design for a follow-up to the Wireless LAN Monitor&lt;br /&gt;
** See: http://wiki.netlabs.org/index.php/Network_Connection_Manager&lt;br /&gt;
* netlabs.org without Adrian for 3 months&lt;br /&gt;
** Adrian Gschwend will be on vacation for 3 months :-)&lt;br /&gt;
** Read more about it here: http://blog.netlabs.org/?p=9&lt;br /&gt;
* FM/2&lt;br /&gt;
** Small bug fixes&lt;br /&gt;
** See: http://svn.netlabs.org/fm2/timeline &lt;br /&gt;
* kLIBC&lt;br /&gt;
** Small updates in the source code&lt;br /&gt;
** See: http://svn.netlabs.org/libc/timeline&lt;br /&gt;
* NewView&lt;br /&gt;
** Various small updates&lt;br /&gt;
** See: http://svn.netlabs.org/newview/timeline&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for mail gathering and bi-weekly processing ===&lt;br /&gt;
This is intended to be a procedure on how to create the bi-weekly newsletter, so that multiple people are able to do it, in case others are away.&lt;br /&gt;
&lt;br /&gt;
The news is gathered on a weekly basis.&lt;br /&gt;
Sources for news are various. We know the following:&lt;br /&gt;
* [irc://irc.netlabs.org/#netlabs #netlabs] channel, just connect and see what comes by&lt;br /&gt;
* http://news.netlabs.org/&lt;br /&gt;
* various SVN timelines for the projects that are already in SVN (needs to be listed explicitly?)&lt;br /&gt;
&lt;br /&gt;
There is a mail id on netlabs for mailing out the newsletter to various contacts.&lt;br /&gt;
The mail id is: news at netlabs dot org&lt;br /&gt;
It uses the following IMAP mailserver: mail dot netlabs dot org&lt;br /&gt;
&lt;br /&gt;
For the start of a new newsletter a copy from the previous one can be made and then copy the new news into it, to make life easy :-)&lt;br /&gt;
The easiest way to get the text is grabbing it from the webpage in normal view mode.&lt;br /&gt;
Check the text a second time, and align it a bit.&lt;br /&gt;
Address it with BCC to the following addresses:&lt;br /&gt;
* martin at os2world dot com&lt;br /&gt;
* stevew at jafar dot hartnell dot edu&lt;br /&gt;
* submit at os2voice dot org&lt;br /&gt;
* webmaster at ecomstation dot com&lt;br /&gt;
* webredactie at os2-gg dot nl&lt;br /&gt;
* ktk at netlabs dot org&lt;br /&gt;
* j dot van dot der dot heide at hccnet dot nl&lt;br /&gt;
* os2info at gmx dot net&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget the subject line with the next number and of it goes.&lt;br /&gt;
&lt;br /&gt;
After the newsletter is sent the &#039;Netlabs bi-weekly newsletter&#039; webpage has to be updated. (http://wiki.netlabs.org/index.php/Netlabs_bi_weekly_newsletter). Just copy the news on top of the others and add a heading.&lt;br /&gt;
&lt;br /&gt;
Then the draft version of the bi-weekly page can be emptied and the heading for the next week can be added.&lt;br /&gt;
&lt;br /&gt;
That is basicly the process of the bi-weekly newsletter.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4526</id>
		<title>Netlabs News</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4526"/>
		<updated>2007-03-12T18:14:45Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* 5. March - 11. March */ Added Voyager news&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Netlabs]]&lt;br /&gt;
[[Category:Newsletter]]&lt;br /&gt;
&lt;br /&gt;
This page will be used to gather news about netlabs.org and it&#039;s projects.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are looking for the bi-weekly newsletter, please go here: [[Netlabs_bi_weekly_newsletter]]&lt;br /&gt;
=== 5. March - 11. March ===&lt;br /&gt;
* Samba for eCS (OS/2)&lt;br /&gt;
** there is now also a svn and a trac see: http://svn.netlabs.org/samba&lt;br /&gt;
* Updates to The Config.sys Documentation Project&lt;br /&gt;
** Finally &amp;quot;The Config.sys Documentation Project&amp;quot; and the &amp;quot;ConfigTool 1.3.0 database&amp;quot; are combined together into a single wiki page on the EDM2. The invitation is open to everybody on the OS/2-eCS community to extend the wiki and add more config.sys commands.&lt;br /&gt;
** http://www.edm2.com/index.php/The_Config.sys_Documentation_Project&lt;br /&gt;
* Voyager News&lt;br /&gt;
** Added patches from winter camp 2007 hacking.&lt;br /&gt;
** Basic drag and drop for the desktop. Still working on that.&lt;br /&gt;
**Some more methods for the NOM kernel classes.&lt;br /&gt;
**Some automatic parameter checking when calling methods implemented.&lt;br /&gt;
**Improved the Doxygen documentation.&lt;br /&gt;
**As usual a bunch of bug fixes... err... code refinements ;).&lt;br /&gt;
**Updates to the FAQ regarding license and source code.&lt;br /&gt;
&lt;br /&gt;
=== 26. February - 4. March ===&lt;br /&gt;
* Warpstock Europe Website Discussion&lt;br /&gt;
** netlabs.org wiki is used to host a general discussion about concept for a Warpstock Europe website&lt;br /&gt;
** User input is welcome!&lt;br /&gt;
** See: http://wiki.netlabs.org/index.php/Warpstock_Europe_Websites&lt;br /&gt;
* DoxBox Version 0.70&lt;br /&gt;
** Now supports playing Audio-CDs in DOSBox&lt;br /&gt;
** See: ftp://ftp.netlabs.org/pub/dosbox&lt;br /&gt;
** Also of interest to DosBox users: DosBoxFront&lt;br /&gt;
*** See: http://hobbes.nmsu.edu/cgi-bin/h-search?key=dosboxfront&lt;br /&gt;
* Samba Server 3.0.24 and 3.0.25pre&lt;br /&gt;
** Paul Smedley is building Samba Server for netlabs.org&lt;br /&gt;
** See: http://smedley.info/os2ports/samba.html&lt;br /&gt;
* Uniaud&lt;br /&gt;
** We are working on getting the source code buildable&lt;br /&gt;
** See: http://svn.netlabs.org/uniaud&lt;br /&gt;
* Network Connection Manager - Design for follow-up to Wireless LAN Monitor&lt;br /&gt;
** Christian Langanke has started to work on the design for a follow-up to the Wireless LAN Monitor&lt;br /&gt;
** See: http://wiki.netlabs.org/index.php/Network_Connection_Manager&lt;br /&gt;
* netlabs.org without Adrian for 3 months&lt;br /&gt;
** Adrian Gschwend will be on vacation for 3 months :-)&lt;br /&gt;
** Read more about it here: http://blog.netlabs.org/?p=9&lt;br /&gt;
* FM/2&lt;br /&gt;
** Small bug fixes&lt;br /&gt;
** See: http://svn.netlabs.org/fm2/timeline &lt;br /&gt;
* kLIBC&lt;br /&gt;
** Small updates in the source code&lt;br /&gt;
** See: http://svn.netlabs.org/libc/timeline&lt;br /&gt;
* NewView&lt;br /&gt;
** Various small updates&lt;br /&gt;
** See: http://svn.netlabs.org/newview/timeline&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for mail gathering and bi-weekly processing ===&lt;br /&gt;
This is intended to be a procedure on how to create the bi-weekly newsletter, so that multiple people are able to do it, in case others are away.&lt;br /&gt;
&lt;br /&gt;
The news is gathered on a weekly basis.&lt;br /&gt;
Sources for news are various. We know the following:&lt;br /&gt;
* [irc://irc.netlabs.org/#netlabs #netlabs] channel, just connect and see what comes by&lt;br /&gt;
* http://news.netlabs.org/&lt;br /&gt;
* various SVN timelines for the projects that are already in SVN (needs to be listed explicitly?)&lt;br /&gt;
&lt;br /&gt;
There is a mail id on netlabs for mailing out the newsletter to various contacts.&lt;br /&gt;
The mail id is: news at netlabs dot org&lt;br /&gt;
It uses the following IMAP mailserver: mail dot netlabs dot org&lt;br /&gt;
&lt;br /&gt;
For the start of a new newsletter a copy from the previous one can be made and then copy the new news into it, to make life easy :-)&lt;br /&gt;
The easiest way to get the text is grabbing it from the webpage in normal view mode.&lt;br /&gt;
Check the text a second time, and align it a bit.&lt;br /&gt;
Address it with BCC to the following addresses:&lt;br /&gt;
* martin at os2world dot com&lt;br /&gt;
* stevew at jafar dot hartnell dot edu&lt;br /&gt;
* submit at os2voice dot org&lt;br /&gt;
* webmaster at ecomstation dot com&lt;br /&gt;
* webredactie at os2-gg dot nl&lt;br /&gt;
* ktk at netlabs dot org&lt;br /&gt;
* j dot van dot der dot heide at hccnet dot nl&lt;br /&gt;
* os2info at gmx dot net&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget the subject line with the next number and of it goes.&lt;br /&gt;
&lt;br /&gt;
After the newsletter is sent the &#039;Netlabs bi-weekly newsletter&#039; webpage has to be updated. (http://wiki.netlabs.org/index.php/Netlabs_bi_weekly_newsletter). Just copy the news on top of the others and add a heading.&lt;br /&gt;
&lt;br /&gt;
Then the draft version of the bi-weekly page can be emptied and the heading for the next week can be added.&lt;br /&gt;
&lt;br /&gt;
That is basicly the process of the bi-weekly newsletter.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4524</id>
		<title>Voyager FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4524"/>
		<updated>2007-03-12T06:30:53Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* This project is too big, you will fail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
=Voyager Frequently Asked Questions=&lt;br /&gt;
Assembled by:&lt;br /&gt;
* Adrian Gschwend, aka &#039;&#039;ktk&#039;&#039;&lt;br /&gt;
* Cinc&lt;br /&gt;
&lt;br /&gt;
Intro:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;I know that you&#039;re afraid. You&#039;re afraid of us. You&#039;re afraid of change. I don&#039;t know the future. I didn&#039;t come here to tell you how this is going to end. I came here to tell you how it&#039;s going to begin.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
([http://en.wikiquote.org/wiki/Matrix Source] :)&lt;br /&gt;
==General==&lt;br /&gt;
===What is Voyager?===&lt;br /&gt;
Voyager is the codename for the idea of having a replacement OS/2 on top of modern technology. This idea is the result of around 1.5 years of thinking a &#039;&#039;&#039;lot&#039;&#039;&#039; about what we can do in the future as current OS/2 and [http://www.ecomstation.com/ eComStation] users.&lt;br /&gt;
Note that it&#039;s absolutely impossible to convey what we plan to do in a few sentences. I made a speech on it at Warpstock Europe 2005 that, by itself, took 1.5 hours so you get the point :)&lt;br /&gt;
&lt;br /&gt;
Before you continue you should probably consult:&lt;br /&gt;
&lt;br /&gt;
* My presentation at [http://warpstock.net/wse2005/presentations/presentations/ Warpstock Europe 2005]. Get the ALL06 PDF.&lt;br /&gt;
* My presentation as DivX ([ftp://ftp.netlabs.org/pub/voyager/wse05_all06-1.avi part 1, current situation (360 MB)],[ftp://ftp.netlabs.org/pub/voyager/wse05_all06-2.avi part 2, outlook &amp;amp; Voyager (366 MB)])  or MP3 (available soon). Use WarpVision or VLC 0.8.4a to play (VLC 0.8.2 won&#039;t work).&lt;br /&gt;
* The [[Voyager]] page in this Wiki and...&lt;br /&gt;
* The [http://dir.gmane.org/gmane.org.netlabs.voyager.devel Voyager mailinglist] at gmane.org&lt;br /&gt;
&lt;br /&gt;
Note that our path is firmly set and long past the point of discussion. As a potential contributor, know from the onset, that acceptance of this path is a must.  Take it or leave it, it&#039;s our choice and we have our reasons.&lt;br /&gt;
&lt;br /&gt;
===How is this releated to OS/2 and eCS?===&lt;br /&gt;
A lot and not much ;) Voyager is basically a re-implementation of a lot of ideas already implemented in the [http://en.wikipedia.org/wiki/Workplace_Shell WPS], the Workplace Shell of OS/2, the multimedia subsystem (like IO procedures) and other areas which make OS/2 unique. As mentioned in the ALL06 PDF, the WPS has still unique concepts that are not implemented in any of the free and well-known desktops like [http://www.gnome.org Gnome] or [http://www.kde.org KDE].&lt;br /&gt;
Our goal is to get the &amp;quot;WPS and OS/2 feeling&amp;quot; on top of new, (and existing), open source technologies, in a way that&#039;s more or less independent of the kernel used.&lt;br /&gt;
&lt;br /&gt;
One of the main concerns of current OS/2 and eCS users is good backward compatiblity. This is addressed [[Voyager_FAQ#Will_Voyager_support_my_OS.2F2_and_eCS_applications.3F | below]].&lt;br /&gt;
&lt;br /&gt;
===How is this related to MacOS X?===&lt;br /&gt;
I talk a lot about the MacOS X in my presentation for various reasons:&lt;br /&gt;
* The MacOS X Desktop does have a lot in common with the WPS. We&#039;re going to limit our talk to some of the ideas and concepts here. The reasons for the similarity are quite simple: Apple, IBM and HP had a company called [http://en.wikipedia.org/wiki/Taligent Taligent] in the 90s which worked on an object oriented OS. The project was cancelled in 1995, but some of the conceptual ideas survived. Some of these made it into the MacOS X which has also been influenced by [http://en.wikipedia.org/wiki/NeXT_Computer NeXT] which also has some ideas in common with OS/2s WPS.&lt;br /&gt;
* MacOS X provides a powerful 2D engine called [http://www.apple.com/macosx/features/quartzextreme/ Quartz Extreme], we think this is the way to go today and Voyager has planned something like this utilizing [http://www.cairographics.org Cairo] as the 2D engine.&lt;br /&gt;
* MacOS X provides an X implementation for compatiblity with Unix applications. Netlabs.org will provide something similar with [http://everblue.netlabs.org/ Everblue].&lt;br /&gt;
* Apple has already solved quite a few problems that we have now with OS/2 and eCS, (no real multiuser system, no real security concept etc). If you want to know more about our plans to deal with this read the [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming Guide] at apple.com. It is always a good idea to learn from others as there&#039;s no point in re-inventing the wheel.&lt;br /&gt;
&lt;br /&gt;
===Is Voyager yet another Linux distribution?===&lt;br /&gt;
No! Voyager is more than just repackaged linux stuff with a pretty desktop (in fact it is more likely BSD stuff...). We will kill some sacred cows of the *nix camp like X as the graphics foundation or so called choice. You won&#039;t have ten editors for your config files, you won&#039;t have several window managers but one, you won&#039;t have a dozen file systems to choose from but only one or two. You get the picture... &#039;&#039;&#039;Since there&#039;s no decision for the kernel yet the rumours Voyager would use the linux kernel are just - rumours.&#039;&#039;&#039;&lt;br /&gt;
Voyager won&#039;t require you do recompile your kernel every few weeks or hunt down package dependency when installing new apps by providing a standard set of base libs.&lt;br /&gt;
&lt;br /&gt;
===I heard Voyager uses the Linux kernel===&lt;br /&gt;
Read the answer to the previous question! For your convenience I highlighted the sentence which may interest you.&lt;br /&gt;
&lt;br /&gt;
I type this very slowly so every OS/2 zealot going berzerk may understand it: There is no decision about which kernel to use, yet. There&#039;s no decision about using the Linux kernel, there&#039;s not even a discussion about using the Linux kernel. Whenever somebody is telling you Voyager is using the Linux kernel just ignore that.&lt;br /&gt;
&lt;br /&gt;
===Will netlabs.org stop providing software for OS/2 and eCS now?===&lt;br /&gt;
&#039;&#039;&#039;Definitely&#039;&#039;&#039; not! We will continue to provide essential software for OS/2 the next years. Voyager is in our opinion a great option for the future but we know very well that it will take some time until you can use that as full replacement for what you use now.&lt;br /&gt;
&lt;br /&gt;
The best choice you can do at the moment is to work with eComStation, version 2 of eCS will provide some essential enhancements, many of the ideas are planned for Voyager as well. So one could say that Voyager could become something like eComStation 3.0 once.&lt;br /&gt;
===How can I support Voyager?===&lt;br /&gt;
There are several possibilities:&lt;br /&gt;
* We definitely need skilled developers. We have a wide range of tasks available, please consult the [[Voyager]] page to get an impression and join the [http://dir.gmane.org/gmane.org.netlabs.voyager.devel mailinglist] if you can contribute in some form.&lt;br /&gt;
* Motivate skilled coders to help on the project. We think that the idea is very tempting and unique and we already successfully motivated developers outside of the OS/2 and eCS community. This is essential for this project.&lt;br /&gt;
* Buy [http://www.ecomstation.com eComStation]. netlabs.org is working closely with SSI and Mensys to provide new software on eCS. Supporting eCS is thus an exellent way to also fund development of Voyager indirectly.&lt;br /&gt;
* Buy netlabs.org sponsoring units in the [http://shop.mensys.nl/catalogue/mns_NETLABS.html Mensys] shop, we get 100% of the amount you donate there!&lt;br /&gt;
* Present Voyager at your local usergroup. We need to spread the word to motivate people to contribute in any form. For sure you are welcome to show the DivX of the presentation as well.&lt;br /&gt;
* Help out with the [[Voyager_Support | documentation]] of Voyager&lt;br /&gt;
&lt;br /&gt;
==Technology==&lt;br /&gt;
===Will Voyager support my OS/2 and eCS applications?===&lt;br /&gt;
That&#039;s a question we can&#039;t answer that easy at the moment. For sure it would be nice if we reach that state one day but that depends on quite a lot of things. There are several options:&lt;br /&gt;
* use a virtual machine like [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN] to run OS/2 or eCS in there. Will definitely work but is not a soft migration&lt;br /&gt;
* implement the OS/2 base API on an existing Kernel to provide API compatibility. This could even be extended to binary compatibility if we work hard on it.&lt;br /&gt;
** [http://www.osfree.org osFree] has something in mind, see [http://www.falvotech.com/projects/os3.php here] as well.&lt;br /&gt;
** There is a project at [http://os2linux.sourceforge.net/  Sourceforge] which provides a base OS/2 API already on Linux, written by an IBM employee. This library is not complete yet but provides a base to work on&lt;br /&gt;
* implement at least parts of GPI and PM on top of an existing 2D engine like Cairo for PM compatibility. This is a very big task and we are not sure if it is worth doing that but if a group of people volunteers to write that, get in contact with us on the Voyager mailinglist. Note that such a project should definitely integrate well with our idea, otherwise it will not help at all.&lt;br /&gt;
&lt;br /&gt;
Another possiblity might come up with the design of Voyager, at the moment the most likely Glitz backend will be xorg OpenGL drivers, so we would get drivers from the HW-vendors. This opens a new interesting approach for backward compatibility, that would involve the following steps:&lt;br /&gt;
* compile Xorg on OS/2 with Innotek LIBC&lt;br /&gt;
* get the binary only drivers to work (should work somehow in theory)&lt;br /&gt;
* compile Glitz using xorg backend&lt;br /&gt;
* recompile GTK2 &amp;amp; all libraries used with Innotek LIBC&lt;br /&gt;
* write a GRADD driver that renders using OpenGL, which means it would render into the OpenGL driver of Xorg. Like this it should even be possible to have a windowed PM in Glitz.&lt;br /&gt;
&lt;br /&gt;
The benefit would be that we would also get HW acceleration in the current OS/2 or eCS.&lt;br /&gt;
&lt;br /&gt;
In short one can say that binary compatibility is technically possible up to a certain point at least. One can debate about if this is useful or not.&lt;br /&gt;
&lt;br /&gt;
===Why something new? There is Gnome, KDE...===&lt;br /&gt;
&lt;br /&gt;
If you think KDE, GNOME... fit your needs , that&#039;s fine, just move on because you have found a solution for your personal computing needs. The people involved&lt;br /&gt;
with Voyager so far don&#039;t think desktops other than the WPS which are available today fit their needs. Different people, different preferences.&lt;br /&gt;
&lt;br /&gt;
Or to quote [http://en.wikiquote.org/wiki/Larry_wall Larry Wall]: &amp;quot;There&#039;s More Than One Way to Do It&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Why not X?===&lt;br /&gt;
&lt;br /&gt;
Voyager is a desktop OS. We don&#039;t see any need for opening a window on a machine located somewhere in China when your monitor is only 50cm away from you.&lt;br /&gt;
&lt;br /&gt;
And, we don&#039;t like X. Period.&lt;br /&gt;
&lt;br /&gt;
(Note: We talk about X in terms of Xlib here, we are currently trying to understand the display driver concept of XFree86/Xorg because we would like to be able to use the OpenGL drivers of it).&lt;br /&gt;
&lt;br /&gt;
===This project is too big, you will fail===&lt;br /&gt;
&lt;br /&gt;
Maybe. But honestly without trying you won&#039;t know...&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
===Under what license is Voyager released?===&lt;br /&gt;
The source is dual licensed. It is covered by the CDDL and the LGPL.&lt;br /&gt;
&lt;br /&gt;
===Where can I download sourcecode?===&lt;br /&gt;
The source can be found in a subversion tree on netlabs.org. Trac provides&lt;br /&gt;
a web interface for browsing. Currently you find the following.&lt;br /&gt;
&lt;br /&gt;
* [http://svn.netlabs.org/v_doc Documentation].&lt;br /&gt;
* [http://svn.netlabs.org/v_nom Netlabs Object Model].&lt;br /&gt;
* [http://svn.netlabs.org/v_desktop Desktop].&lt;br /&gt;
* [http://svn.netlabs.org/v_triton Multimedia subsystem].&lt;br /&gt;
&lt;br /&gt;
Information how to download the source will follow.&lt;br /&gt;
&lt;br /&gt;
===Should I still work on OS/2 and eCS applications?===&lt;br /&gt;
Sure! OS/2 and eCS will be around for a very long time and Voyager will need quite some time to be mature enough to be usable. But if you intend to support the&lt;br /&gt;
Voyager approach any time you should try to code in a portable way. Instead of using the OS/2-API use a portable runtime instead e.g. GLib, NPL or APL. Consider using a cross&lt;br /&gt;
platform toolkit for the UI like DynamicWindows, GTK, XUL. Use only standard WPS methods without PM-specific tricks.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t like the Voyager approach anyway, why do you ask in the first place ;)?&lt;br /&gt;
&lt;br /&gt;
===Whats next with Voyager - where are we?===&lt;br /&gt;
Ask the oracle :-)&lt;br /&gt;
&lt;br /&gt;
We definitely can&#039;t give any assumptions about when we will be ready for a public release. One lesson we definitely learned in the past years with netlabs.org and other software projects is that release plans never work as announced :)&lt;br /&gt;
&lt;br /&gt;
There are some very rough plans at the moment:&lt;br /&gt;
* we would like to present some first prototypes of various components at Developer Workshop 2006 in Biel/Bienne. Those components are more or less technology studies for interested developers.&lt;br /&gt;
* till Warpstock Europe 2006 we hope to present a basic development setup which makes it easy for other developers to join the project on various platforms. This means you should be able to contribute on OS/2 &amp;amp; eCS, Linux, BSD and probably even MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Where we go from there is a choice I leave to you.&amp;quot;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4523</id>
		<title>Voyager FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4523"/>
		<updated>2007-03-12T06:28:24Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Added links to subversion.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
=Voyager Frequently Asked Questions=&lt;br /&gt;
Assembled by:&lt;br /&gt;
* Adrian Gschwend, aka &#039;&#039;ktk&#039;&#039;&lt;br /&gt;
* Cinc&lt;br /&gt;
&lt;br /&gt;
Intro:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;I know that you&#039;re afraid. You&#039;re afraid of us. You&#039;re afraid of change. I don&#039;t know the future. I didn&#039;t come here to tell you how this is going to end. I came here to tell you how it&#039;s going to begin.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
([http://en.wikiquote.org/wiki/Matrix Source] :)&lt;br /&gt;
==General==&lt;br /&gt;
===What is Voyager?===&lt;br /&gt;
Voyager is the codename for the idea of having a replacement OS/2 on top of modern technology. This idea is the result of around 1.5 years of thinking a &#039;&#039;&#039;lot&#039;&#039;&#039; about what we can do in the future as current OS/2 and [http://www.ecomstation.com/ eComStation] users.&lt;br /&gt;
Note that it&#039;s absolutely impossible to convey what we plan to do in a few sentences. I made a speech on it at Warpstock Europe 2005 that, by itself, took 1.5 hours so you get the point :)&lt;br /&gt;
&lt;br /&gt;
Before you continue you should probably consult:&lt;br /&gt;
&lt;br /&gt;
* My presentation at [http://warpstock.net/wse2005/presentations/presentations/ Warpstock Europe 2005]. Get the ALL06 PDF.&lt;br /&gt;
* My presentation as DivX ([ftp://ftp.netlabs.org/pub/voyager/wse05_all06-1.avi part 1, current situation (360 MB)],[ftp://ftp.netlabs.org/pub/voyager/wse05_all06-2.avi part 2, outlook &amp;amp; Voyager (366 MB)])  or MP3 (available soon). Use WarpVision or VLC 0.8.4a to play (VLC 0.8.2 won&#039;t work).&lt;br /&gt;
* The [[Voyager]] page in this Wiki and...&lt;br /&gt;
* The [http://dir.gmane.org/gmane.org.netlabs.voyager.devel Voyager mailinglist] at gmane.org&lt;br /&gt;
&lt;br /&gt;
Note that our path is firmly set and long past the point of discussion. As a potential contributor, know from the onset, that acceptance of this path is a must.  Take it or leave it, it&#039;s our choice and we have our reasons.&lt;br /&gt;
&lt;br /&gt;
===How is this releated to OS/2 and eCS?===&lt;br /&gt;
A lot and not much ;) Voyager is basically a re-implementation of a lot of ideas already implemented in the [http://en.wikipedia.org/wiki/Workplace_Shell WPS], the Workplace Shell of OS/2, the multimedia subsystem (like IO procedures) and other areas which make OS/2 unique. As mentioned in the ALL06 PDF, the WPS has still unique concepts that are not implemented in any of the free and well-known desktops like [http://www.gnome.org Gnome] or [http://www.kde.org KDE].&lt;br /&gt;
Our goal is to get the &amp;quot;WPS and OS/2 feeling&amp;quot; on top of new, (and existing), open source technologies, in a way that&#039;s more or less independent of the kernel used.&lt;br /&gt;
&lt;br /&gt;
One of the main concerns of current OS/2 and eCS users is good backward compatiblity. This is addressed [[Voyager_FAQ#Will_Voyager_support_my_OS.2F2_and_eCS_applications.3F | below]].&lt;br /&gt;
&lt;br /&gt;
===How is this related to MacOS X?===&lt;br /&gt;
I talk a lot about the MacOS X in my presentation for various reasons:&lt;br /&gt;
* The MacOS X Desktop does have a lot in common with the WPS. We&#039;re going to limit our talk to some of the ideas and concepts here. The reasons for the similarity are quite simple: Apple, IBM and HP had a company called [http://en.wikipedia.org/wiki/Taligent Taligent] in the 90s which worked on an object oriented OS. The project was cancelled in 1995, but some of the conceptual ideas survived. Some of these made it into the MacOS X which has also been influenced by [http://en.wikipedia.org/wiki/NeXT_Computer NeXT] which also has some ideas in common with OS/2s WPS.&lt;br /&gt;
* MacOS X provides a powerful 2D engine called [http://www.apple.com/macosx/features/quartzextreme/ Quartz Extreme], we think this is the way to go today and Voyager has planned something like this utilizing [http://www.cairographics.org Cairo] as the 2D engine.&lt;br /&gt;
* MacOS X provides an X implementation for compatiblity with Unix applications. Netlabs.org will provide something similar with [http://everblue.netlabs.org/ Everblue].&lt;br /&gt;
* Apple has already solved quite a few problems that we have now with OS/2 and eCS, (no real multiuser system, no real security concept etc). If you want to know more about our plans to deal with this read the [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming Guide] at apple.com. It is always a good idea to learn from others as there&#039;s no point in re-inventing the wheel.&lt;br /&gt;
&lt;br /&gt;
===Is Voyager yet another Linux distribution?===&lt;br /&gt;
No! Voyager is more than just repackaged linux stuff with a pretty desktop (in fact it is more likely BSD stuff...). We will kill some sacred cows of the *nix camp like X as the graphics foundation or so called choice. You won&#039;t have ten editors for your config files, you won&#039;t have several window managers but one, you won&#039;t have a dozen file systems to choose from but only one or two. You get the picture... &#039;&#039;&#039;Since there&#039;s no decision for the kernel yet the rumours Voyager would use the linux kernel are just - rumours.&#039;&#039;&#039;&lt;br /&gt;
Voyager won&#039;t require you do recompile your kernel every few weeks or hunt down package dependency when installing new apps by providing a standard set of base libs.&lt;br /&gt;
&lt;br /&gt;
===I heard Voyager uses the Linux kernel===&lt;br /&gt;
Read the answer to the previous question! For your convenience I highlighted the sentence which may interest you.&lt;br /&gt;
&lt;br /&gt;
I type this very slowly so every OS/2 zealot going berzerk may understand it: There is no decision about which kernel to use, yet. There&#039;s no decision about using the Linux kernel, there&#039;s not even a discussion about using the Linux kernel. Whenever somebody is telling you Voyager is using the Linux kernel just ignore that.&lt;br /&gt;
&lt;br /&gt;
===Will netlabs.org stop providing software for OS/2 and eCS now?===&lt;br /&gt;
&#039;&#039;&#039;Definitely&#039;&#039;&#039; not! We will continue to provide essential software for OS/2 the next years. Voyager is in our opinion a great option for the future but we know very well that it will take some time until you can use that as full replacement for what you use now.&lt;br /&gt;
&lt;br /&gt;
The best choice you can do at the moment is to work with eComStation, version 2 of eCS will provide some essential enhancements, many of the ideas are planned for Voyager as well. So one could say that Voyager could become something like eComStation 3.0 once.&lt;br /&gt;
===How can I support Voyager?===&lt;br /&gt;
There are several possibilities:&lt;br /&gt;
* We definitely need skilled developers. We have a wide range of tasks available, please consult the [[Voyager]] page to get an impression and join the [http://dir.gmane.org/gmane.org.netlabs.voyager.devel mailinglist] if you can contribute in some form.&lt;br /&gt;
* Motivate skilled coders to help on the project. We think that the idea is very tempting and unique and we already successfully motivated developers outside of the OS/2 and eCS community. This is essential for this project.&lt;br /&gt;
* Buy [http://www.ecomstation.com eComStation]. netlabs.org is working closely with SSI and Mensys to provide new software on eCS. Supporting eCS is thus an exellent way to also fund development of Voyager indirectly.&lt;br /&gt;
* Buy netlabs.org sponsoring units in the [http://shop.mensys.nl/catalogue/mns_NETLABS.html Mensys] shop, we get 100% of the amount you donate there!&lt;br /&gt;
* Present Voyager at your local usergroup. We need to spread the word to motivate people to contribute in any form. For sure you are welcome to show the DivX of the presentation as well.&lt;br /&gt;
* Help out with the [[Voyager_Support | documentation]] of Voyager&lt;br /&gt;
&lt;br /&gt;
==Technology==&lt;br /&gt;
===Will Voyager support my OS/2 and eCS applications?===&lt;br /&gt;
That&#039;s a question we can&#039;t answer that easy at the moment. For sure it would be nice if we reach that state one day but that depends on quite a lot of things. There are several options:&lt;br /&gt;
* use a virtual machine like [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN] to run OS/2 or eCS in there. Will definitely work but is not a soft migration&lt;br /&gt;
* implement the OS/2 base API on an existing Kernel to provide API compatibility. This could even be extended to binary compatibility if we work hard on it.&lt;br /&gt;
** [http://www.osfree.org osFree] has something in mind, see [http://www.falvotech.com/projects/os3.php here] as well.&lt;br /&gt;
** There is a project at [http://os2linux.sourceforge.net/  Sourceforge] which provides a base OS/2 API already on Linux, written by an IBM employee. This library is not complete yet but provides a base to work on&lt;br /&gt;
* implement at least parts of GPI and PM on top of an existing 2D engine like Cairo for PM compatibility. This is a very big task and we are not sure if it is worth doing that but if a group of people volunteers to write that, get in contact with us on the Voyager mailinglist. Note that such a project should definitely integrate well with our idea, otherwise it will not help at all.&lt;br /&gt;
&lt;br /&gt;
Another possiblity might come up with the design of Voyager, at the moment the most likely Glitz backend will be xorg OpenGL drivers, so we would get drivers from the HW-vendors. This opens a new interesting approach for backward compatibility, that would involve the following steps:&lt;br /&gt;
* compile Xorg on OS/2 with Innotek LIBC&lt;br /&gt;
* get the binary only drivers to work (should work somehow in theory)&lt;br /&gt;
* compile Glitz using xorg backend&lt;br /&gt;
* recompile GTK2 &amp;amp; all libraries used with Innotek LIBC&lt;br /&gt;
* write a GRADD driver that renders using OpenGL, which means it would render into the OpenGL driver of Xorg. Like this it should even be possible to have a windowed PM in Glitz.&lt;br /&gt;
&lt;br /&gt;
The benefit would be that we would also get HW acceleration in the current OS/2 or eCS.&lt;br /&gt;
&lt;br /&gt;
In short one can say that binary compatibility is technically possible up to a certain point at least. One can debate about if this is useful or not.&lt;br /&gt;
&lt;br /&gt;
===Why something new? There is Gnome, KDE...===&lt;br /&gt;
&lt;br /&gt;
If you think KDE, GNOME... fit your needs , that&#039;s fine, just move on because you have found a solution for your personal computing needs. The people involved&lt;br /&gt;
with Voyager so far don&#039;t think desktops other than the WPS which are available today fit their needs. Different people, different preferences.&lt;br /&gt;
&lt;br /&gt;
Or to quote [http://en.wikiquote.org/wiki/Larry_wall Larry Wall]: &amp;quot;There&#039;s More Than One Way to Do It&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Why not X?===&lt;br /&gt;
&lt;br /&gt;
Voyager is a desktop OS. We don&#039;t see any need for opening a window on a machine located somewhere in China when your monitor is only 50cm away from you.&lt;br /&gt;
&lt;br /&gt;
And, we don&#039;t like X. Period.&lt;br /&gt;
&lt;br /&gt;
(Note: We talk about X in terms of Xlib here, we are currently trying to understand the display driver concept of XFree86/Xorg because we would like to be able to use the OpenGL drivers of it).&lt;br /&gt;
&lt;br /&gt;
===This project is too big, you will fail===&lt;br /&gt;
&lt;br /&gt;
Maybe. But honestly without trying you wont know...&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
===Under what license is Voyager released?===&lt;br /&gt;
The source is dual licensed. It is covered by the CDDL and the LGPL.&lt;br /&gt;
&lt;br /&gt;
===Where can I download sourcecode?===&lt;br /&gt;
The source can be found in a subversion tree on netlabs.org. Trac provides&lt;br /&gt;
a web interface for browsing. Currently you find the following.&lt;br /&gt;
&lt;br /&gt;
* [http://svn.netlabs.org/v_doc Documentation].&lt;br /&gt;
* [http://svn.netlabs.org/v_nom Netlabs Object Model].&lt;br /&gt;
* [http://svn.netlabs.org/v_desktop Desktop].&lt;br /&gt;
* [http://svn.netlabs.org/v_triton Multimedia subsystem].&lt;br /&gt;
&lt;br /&gt;
Information how to download the source will follow.&lt;br /&gt;
&lt;br /&gt;
===Should I still work on OS/2 and eCS applications?===&lt;br /&gt;
Sure! OS/2 and eCS will be around for a very long time and Voyager will need quite some time to be mature enough to be usable. But if you intend to support the&lt;br /&gt;
Voyager approach any time you should try to code in a portable way. Instead of using the OS/2-API use a portable runtime instead e.g. GLib, NPL or APL. Consider using a cross&lt;br /&gt;
platform toolkit for the UI like DynamicWindows, GTK, XUL. Use only standard WPS methods without PM-specific tricks.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t like the Voyager approach anyway, why do you ask in the first place ;)?&lt;br /&gt;
&lt;br /&gt;
===Whats next with Voyager - where are we?===&lt;br /&gt;
Ask the oracle :-)&lt;br /&gt;
&lt;br /&gt;
We definitely can&#039;t give any assumptions about when we will be ready for a public release. One lesson we definitely learned in the past years with netlabs.org and other software projects is that release plans never work as announced :)&lt;br /&gt;
&lt;br /&gt;
There are some very rough plans at the moment:&lt;br /&gt;
* we would like to present some first prototypes of various components at Developer Workshop 2006 in Biel/Bienne. Those components are more or less technology studies for interested developers.&lt;br /&gt;
* till Warpstock Europe 2006 we hope to present a basic development setup which makes it easy for other developers to join the project on various platforms. This means you should be able to contribute on OS/2 &amp;amp; eCS, Linux, BSD and probably even MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Where we go from there is a choice I leave to you.&amp;quot;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4522</id>
		<title>Voyager FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4522"/>
		<updated>2007-03-12T06:19:43Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Added current license information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
=Voyager Frequently Asked Questions=&lt;br /&gt;
Assembled by:&lt;br /&gt;
* Adrian Gschwend, aka &#039;&#039;ktk&#039;&#039;&lt;br /&gt;
* Cinc&lt;br /&gt;
&lt;br /&gt;
Intro:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;I know that you&#039;re afraid. You&#039;re afraid of us. You&#039;re afraid of change. I don&#039;t know the future. I didn&#039;t come here to tell you how this is going to end. I came here to tell you how it&#039;s going to begin.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
([http://en.wikiquote.org/wiki/Matrix Source] :)&lt;br /&gt;
==General==&lt;br /&gt;
===What is Voyager?===&lt;br /&gt;
Voyager is the codename for the idea of having a replacement OS/2 on top of modern technology. This idea is the result of around 1.5 years of thinking a &#039;&#039;&#039;lot&#039;&#039;&#039; about what we can do in the future as current OS/2 and [http://www.ecomstation.com/ eComStation] users.&lt;br /&gt;
Note that it&#039;s absolutely impossible to convey what we plan to do in a few sentences. I made a speech on it at Warpstock Europe 2005 that, by itself, took 1.5 hours so you get the point :)&lt;br /&gt;
&lt;br /&gt;
Before you continue you should probably consult:&lt;br /&gt;
&lt;br /&gt;
* My presentation at [http://warpstock.net/wse2005/presentations/presentations/ Warpstock Europe 2005]. Get the ALL06 PDF.&lt;br /&gt;
* My presentation as DivX ([ftp://ftp.netlabs.org/pub/voyager/wse05_all06-1.avi part 1, current situation (360 MB)],[ftp://ftp.netlabs.org/pub/voyager/wse05_all06-2.avi part 2, outlook &amp;amp; Voyager (366 MB)])  or MP3 (available soon). Use WarpVision or VLC 0.8.4a to play (VLC 0.8.2 won&#039;t work).&lt;br /&gt;
* The [[Voyager]] page in this Wiki and...&lt;br /&gt;
* The [http://dir.gmane.org/gmane.org.netlabs.voyager.devel Voyager mailinglist] at gmane.org&lt;br /&gt;
&lt;br /&gt;
Note that our path is firmly set and long past the point of discussion. As a potential contributor, know from the onset, that acceptance of this path is a must.  Take it or leave it, it&#039;s our choice and we have our reasons.&lt;br /&gt;
&lt;br /&gt;
===How is this releated to OS/2 and eCS?===&lt;br /&gt;
A lot and not much ;) Voyager is basically a re-implementation of a lot of ideas already implemented in the [http://en.wikipedia.org/wiki/Workplace_Shell WPS], the Workplace Shell of OS/2, the multimedia subsystem (like IO procedures) and other areas which make OS/2 unique. As mentioned in the ALL06 PDF, the WPS has still unique concepts that are not implemented in any of the free and well-known desktops like [http://www.gnome.org Gnome] or [http://www.kde.org KDE].&lt;br /&gt;
Our goal is to get the &amp;quot;WPS and OS/2 feeling&amp;quot; on top of new, (and existing), open source technologies, in a way that&#039;s more or less independent of the kernel used.&lt;br /&gt;
&lt;br /&gt;
One of the main concerns of current OS/2 and eCS users is good backward compatiblity. This is addressed [[Voyager_FAQ#Will_Voyager_support_my_OS.2F2_and_eCS_applications.3F | below]].&lt;br /&gt;
&lt;br /&gt;
===How is this related to MacOS X?===&lt;br /&gt;
I talk a lot about the MacOS X in my presentation for various reasons:&lt;br /&gt;
* The MacOS X Desktop does have a lot in common with the WPS. We&#039;re going to limit our talk to some of the ideas and concepts here. The reasons for the similarity are quite simple: Apple, IBM and HP had a company called [http://en.wikipedia.org/wiki/Taligent Taligent] in the 90s which worked on an object oriented OS. The project was cancelled in 1995, but some of the conceptual ideas survived. Some of these made it into the MacOS X which has also been influenced by [http://en.wikipedia.org/wiki/NeXT_Computer NeXT] which also has some ideas in common with OS/2s WPS.&lt;br /&gt;
* MacOS X provides a powerful 2D engine called [http://www.apple.com/macosx/features/quartzextreme/ Quartz Extreme], we think this is the way to go today and Voyager has planned something like this utilizing [http://www.cairographics.org Cairo] as the 2D engine.&lt;br /&gt;
* MacOS X provides an X implementation for compatiblity with Unix applications. Netlabs.org will provide something similar with [http://everblue.netlabs.org/ Everblue].&lt;br /&gt;
* Apple has already solved quite a few problems that we have now with OS/2 and eCS, (no real multiuser system, no real security concept etc). If you want to know more about our plans to deal with this read the [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming Guide] at apple.com. It is always a good idea to learn from others as there&#039;s no point in re-inventing the wheel.&lt;br /&gt;
&lt;br /&gt;
===Is Voyager yet another Linux distribution?===&lt;br /&gt;
No! Voyager is more than just repackaged linux stuff with a pretty desktop (in fact it is more likely BSD stuff...). We will kill some sacred cows of the *nix camp like X as the graphics foundation or so called choice. You won&#039;t have ten editors for your config files, you won&#039;t have several window managers but one, you won&#039;t have a dozen file systems to choose from but only one or two. You get the picture... &#039;&#039;&#039;Since there&#039;s no decision for the kernel yet the rumours Voyager would use the linux kernel are just - rumours.&#039;&#039;&#039;&lt;br /&gt;
Voyager won&#039;t require you do recompile your kernel every few weeks or hunt down package dependency when installing new apps by providing a standard set of base libs.&lt;br /&gt;
&lt;br /&gt;
===I heard Voyager uses the Linux kernel===&lt;br /&gt;
Read the answer to the previous question! For your convenience I highlighted the sentence which may interest you.&lt;br /&gt;
&lt;br /&gt;
I type this very slowly so every OS/2 zealot going berzerk may understand it: There is no decision about which kernel to use, yet. There&#039;s no decision about using the Linux kernel, there&#039;s not even a discussion about using the Linux kernel. Whenever somebody is telling you Voyager is using the Linux kernel just ignore that.&lt;br /&gt;
&lt;br /&gt;
===Will netlabs.org stop providing software for OS/2 and eCS now?===&lt;br /&gt;
&#039;&#039;&#039;Definitely&#039;&#039;&#039; not! We will continue to provide essential software for OS/2 the next years. Voyager is in our opinion a great option for the future but we know very well that it will take some time until you can use that as full replacement for what you use now.&lt;br /&gt;
&lt;br /&gt;
The best choice you can do at the moment is to work with eComStation, version 2 of eCS will provide some essential enhancements, many of the ideas are planned for Voyager as well. So one could say that Voyager could become something like eComStation 3.0 once.&lt;br /&gt;
===How can I support Voyager?===&lt;br /&gt;
There are several possibilities:&lt;br /&gt;
* We definitely need skilled developers. We have a wide range of tasks available, please consult the [[Voyager]] page to get an impression and join the [http://dir.gmane.org/gmane.org.netlabs.voyager.devel mailinglist] if you can contribute in some form.&lt;br /&gt;
* Motivate skilled coders to help on the project. We think that the idea is very tempting and unique and we already successfully motivated developers outside of the OS/2 and eCS community. This is essential for this project.&lt;br /&gt;
* Buy [http://www.ecomstation.com eComStation]. netlabs.org is working closely with SSI and Mensys to provide new software on eCS. Supporting eCS is thus an exellent way to also fund development of Voyager indirectly.&lt;br /&gt;
* Buy netlabs.org sponsoring units in the [http://shop.mensys.nl/catalogue/mns_NETLABS.html Mensys] shop, we get 100% of the amount you donate there!&lt;br /&gt;
* Present Voyager at your local usergroup. We need to spread the word to motivate people to contribute in any form. For sure you are welcome to show the DivX of the presentation as well.&lt;br /&gt;
* Help out with the [[Voyager_Support | documentation]] of Voyager&lt;br /&gt;
&lt;br /&gt;
==Technology==&lt;br /&gt;
===Will Voyager support my OS/2 and eCS applications?===&lt;br /&gt;
That&#039;s a question we can&#039;t answer that easy at the moment. For sure it would be nice if we reach that state one day but that depends on quite a lot of things. There are several options:&lt;br /&gt;
* use a virtual machine like [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN] to run OS/2 or eCS in there. Will definitely work but is not a soft migration&lt;br /&gt;
* implement the OS/2 base API on an existing Kernel to provide API compatibility. This could even be extended to binary compatibility if we work hard on it.&lt;br /&gt;
** [http://www.osfree.org osFree] has something in mind, see [http://www.falvotech.com/projects/os3.php here] as well.&lt;br /&gt;
** There is a project at [http://os2linux.sourceforge.net/  Sourceforge] which provides a base OS/2 API already on Linux, written by an IBM employee. This library is not complete yet but provides a base to work on&lt;br /&gt;
* implement at least parts of GPI and PM on top of an existing 2D engine like Cairo for PM compatibility. This is a very big task and we are not sure if it is worth doing that but if a group of people volunteers to write that, get in contact with us on the Voyager mailinglist. Note that such a project should definitely integrate well with our idea, otherwise it will not help at all.&lt;br /&gt;
&lt;br /&gt;
Another possiblity might come up with the design of Voyager, at the moment the most likely Glitz backend will be xorg OpenGL drivers, so we would get drivers from the HW-vendors. This opens a new interesting approach for backward compatibility, that would involve the following steps:&lt;br /&gt;
* compile Xorg on OS/2 with Innotek LIBC&lt;br /&gt;
* get the binary only drivers to work (should work somehow in theory)&lt;br /&gt;
* compile Glitz using xorg backend&lt;br /&gt;
* recompile GTK2 &amp;amp; all libraries used with Innotek LIBC&lt;br /&gt;
* write a GRADD driver that renders using OpenGL, which means it would render into the OpenGL driver of Xorg. Like this it should even be possible to have a windowed PM in Glitz.&lt;br /&gt;
&lt;br /&gt;
The benefit would be that we would also get HW acceleration in the current OS/2 or eCS.&lt;br /&gt;
&lt;br /&gt;
In short one can say that binary compatibility is technically possible up to a certain point at least. One can debate about if this is useful or not.&lt;br /&gt;
&lt;br /&gt;
===Why something new? There is Gnome, KDE...===&lt;br /&gt;
&lt;br /&gt;
If you think KDE, GNOME... fit your needs , that&#039;s fine, just move on because you have found a solution for your personal computing needs. The people involved&lt;br /&gt;
with Voyager so far don&#039;t think desktops other than the WPS which are available today fit their needs. Different people, different preferences.&lt;br /&gt;
&lt;br /&gt;
Or to quote [http://en.wikiquote.org/wiki/Larry_wall Larry Wall]: &amp;quot;There&#039;s More Than One Way to Do It&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Why not X?===&lt;br /&gt;
&lt;br /&gt;
Voyager is a desktop OS. We don&#039;t see any need for opening a window on a machine located somewhere in China when your monitor is only 50cm away from you.&lt;br /&gt;
&lt;br /&gt;
And, we don&#039;t like X. Period.&lt;br /&gt;
&lt;br /&gt;
(Note: We talk about X in terms of Xlib here, we are currently trying to understand the display driver concept of XFree86/Xorg because we would like to be able to use the OpenGL drivers of it).&lt;br /&gt;
&lt;br /&gt;
===This project is too big, you will fail===&lt;br /&gt;
&lt;br /&gt;
Maybe. But honestly without trying you wont know...&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
===Under what license is Voyager released?===&lt;br /&gt;
The source is dual licensed. It is covered by the CDDL and the LGPL.&lt;br /&gt;
&lt;br /&gt;
===Where can I download sourcecode?===&lt;br /&gt;
Once the license is defined there will be a subversion tree on netlabs.&lt;br /&gt;
&lt;br /&gt;
===Should I still work on OS/2 and eCS applications?===&lt;br /&gt;
Sure! OS/2 and eCS will be around for a very long time and Voyager will need quite some time to be mature enough to be usable. But if you intend to support the&lt;br /&gt;
Voyager approach any time you should try to code in a portable way. Instead of using the OS/2-API use a portable runtime instead e.g. GLib, NPL or APL. Consider using a cross&lt;br /&gt;
platform toolkit for the UI like DynamicWindows, GTK, XUL. Use only standard WPS methods without PM-specific tricks.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t like the Voyager approach anyway, why do you ask in the first place ;)?&lt;br /&gt;
&lt;br /&gt;
===Whats next with Voyager - where are we?===&lt;br /&gt;
Ask the oracle :-)&lt;br /&gt;
&lt;br /&gt;
We definitely can&#039;t give any assumptions about when we will be ready for a public release. One lesson we definitely learned in the past years with netlabs.org and other software projects is that release plans never work as announced :)&lt;br /&gt;
&lt;br /&gt;
There are some very rough plans at the moment:&lt;br /&gt;
* we would like to present some first prototypes of various components at Developer Workshop 2006 in Biel/Bienne. Those components are more or less technology studies for interested developers.&lt;br /&gt;
* till Warpstock Europe 2006 we hope to present a basic development setup which makes it easy for other developers to join the project on various platforms. This means you should be able to contribute on OS/2 &amp;amp; eCS, Linux, BSD and probably even MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Where we go from there is a choice I leave to you.&amp;quot;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4446</id>
		<title>Netlabs News</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4446"/>
		<updated>2007-02-12T08:03:03Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* 5. February - 11. February */  Added Voyager news&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Netlabs]]&lt;br /&gt;
[[Category:Newsletter]]&lt;br /&gt;
&lt;br /&gt;
This page will be used to gather news about netlabs.org and it&#039;s projects.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are looking for the bi-weekly newsletter, please go here: [[Netlabs_bi_weekly_newsletter]]&lt;br /&gt;
=== 5. February - 11. February ===&lt;br /&gt;
* netlabs server&lt;br /&gt;
** The webpages at www.netlabs.org are almost on the same level as they used to be from a content point of view&lt;br /&gt;
** FTP users still do not work, that needs some more work (LDAP...)&lt;br /&gt;
** There will be more enhancements to the server the next two weeks&lt;br /&gt;
* FM/2&lt;br /&gt;
** Added file associations&lt;br /&gt;
** Some new bugs found&lt;br /&gt;
** See: http://svn.netlabs.org/fm2/timeline&lt;br /&gt;
* kBuild&lt;br /&gt;
** AMD64 additions&lt;br /&gt;
** Changes in gnumake-header&lt;br /&gt;
** See: http://svn.netlabs.org/kbuild/timeline&lt;br /&gt;
* kLibC&lt;br /&gt;
** Various updates&lt;br /&gt;
** See: http://svn.netlabs.org/libc/timeline&lt;br /&gt;
* Lucide&lt;br /&gt;
** Some bugs reported and a feature request raised&lt;br /&gt;
** See: http://svn.netlabs.org/lucide/timeline&lt;br /&gt;
* NewView&lt;br /&gt;
** Quite some updates&lt;br /&gt;
** See: http://svn.netlabs.org/newview/timeline&lt;br /&gt;
* Again Updates to the The Config.sys Documentation Project&lt;br /&gt;
** Device and Basedev sections were updated&lt;br /&gt;
** See: http://www.edm2.com/index.php/The_Config.sys_Documentation_Project/DEVICE_Statements&lt;br /&gt;
** See: http://www.edm2.com/index.php/The_Config.sys_Documentation_Project/BASEDEV_Statements&lt;br /&gt;
* Voyager&lt;br /&gt;
** Quite some Doxygen tags for documentation added to the source&lt;br /&gt;
** Fixes, changes, checkins...&lt;br /&gt;
** Started work on drag and drop in the desktop&lt;br /&gt;
** See: http://svn.netlabs.org/v_nom/timeline, http://svn.netlabs.org/v_desktop/timeline&lt;br /&gt;
&lt;br /&gt;
=== 29. January - 4. February ===&lt;br /&gt;
* netlabs server&lt;br /&gt;
** Server switch is done&lt;br /&gt;
** Many updates to do, but that will go smoothly overtime now&lt;br /&gt;
* kBuild&lt;br /&gt;
** A load of updates!&lt;br /&gt;
** See: http://svn.netlabs.org/kbuild/timeline&lt;br /&gt;
* Lucide&lt;br /&gt;
** 1.0 GA released&lt;br /&gt;
** Various fixes&lt;br /&gt;
** updated with Freetype 2.3.1&lt;br /&gt;
** See: http://svn.netlabs.org/lucide/timeline&lt;br /&gt;
* NewView&lt;br /&gt;
** Various command line updates&lt;br /&gt;
** See: http://svn.netlabs.org/newview/timeline&lt;br /&gt;
* x-ATA&lt;br /&gt;
** Added: more Intel ICH chips, more VIA chips, more ATI chips&lt;br /&gt;
** Release v1.7.8&lt;br /&gt;
** See: http://svn.netlabs.org/xata/timeline&lt;br /&gt;
* Updates to the The Config.sys Documentation Project, DEVICE Statements Section&lt;br /&gt;
** See: http://www.edm2.com/index.php/The_Config.sys_Documentation_Project/DEVICE_Statements&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for mail gathering and bi-weekly processing ===&lt;br /&gt;
This is intended to be a procedure on how to create the bi-weekly newsletter, so that multiple people are able to do it, in case others are away.&lt;br /&gt;
&lt;br /&gt;
The news is gathered on a weekly basis.&lt;br /&gt;
Sources for news are various. We know the following:&lt;br /&gt;
* [irc://irc.netlabs.org/#netlabs #netlabs] channel, just connect and see what comes by&lt;br /&gt;
* http://news.netlabs.org/&lt;br /&gt;
* various SVN timelines for the projects that are already in SVN (needs to be listed explicitly?)&lt;br /&gt;
&lt;br /&gt;
There is a mail id on netlabs for mailing out the newsletter to various contacts.&lt;br /&gt;
The mail id is: news at netlabs dot org&lt;br /&gt;
It uses the following IMAP mailserver: mail dot netlabs dot org&lt;br /&gt;
&lt;br /&gt;
For the start of a new newsletter a copy from the previous one can be made and then copy the new news into it, to make life easy :-)&lt;br /&gt;
The easiest way to get the text is grabbing it from the webpage in normal view mode.&lt;br /&gt;
Check the text a second time, and align it a bit.&lt;br /&gt;
Address it with BCC to the following addresses:&lt;br /&gt;
* martin at os2world dot com&lt;br /&gt;
* stevew at jafar dot hartnell dot edu&lt;br /&gt;
* submit at os2voice dot org&lt;br /&gt;
* webmaster at ecomstation dot com&lt;br /&gt;
* webredactie at os2-gg dot nl&lt;br /&gt;
* ktk at netlabs dot org&lt;br /&gt;
* j dot van dot der dot heide at hccnet dot nl&lt;br /&gt;
* os2info at gmx dot net&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget the subject line with the next number and of it goes.&lt;br /&gt;
&lt;br /&gt;
After the newsletter is sent the &#039;Netlabs bi-weekly newsletter&#039; webpage has to be updated. (http://wiki.netlabs.org/index.php/Netlabs_bi_weekly_newsletter). Just copy the news on top of the others and add a heading.&lt;br /&gt;
&lt;br /&gt;
Then the draft version of the bi-weekly page can be emptied and the heading for the next week can be added.&lt;br /&gt;
&lt;br /&gt;
That is basicly the process of the bi-weekly newsletter.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_Discussion&amp;diff=4439</id>
		<title>Voyager Discussion</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_Discussion&amp;diff=4439"/>
		<updated>2007-02-07T17:03:14Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Technologies to study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&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;
* [http://www.tango-project.org The Tango Desktop Project] - exists to help create a consistent graphical user interface experience for free and Open Source software.&lt;br /&gt;
* [http://www.freesoftwaremagazine.com/articles/accelerated_x?page=0%2C1 XGL v. AIGLX)]&lt;br /&gt;
* [http://www.virtualgl.org/ VirtualGL]&lt;br /&gt;
* [http://0pointer.de/public/pulseaudio-presentation-lca2007.pdf The PulseAudio Server (PDF)]. A presentation about an audio server for *nix.&lt;br /&gt;
&lt;br /&gt;
===Kernels===&lt;br /&gt;
* http://haiku-os.org - OpenBeOS successor&lt;br /&gt;
* http://www.ertos.nicta.com.au/software/darbat/ - Darwin on L4&lt;br /&gt;
&lt;br /&gt;
== Design Discussion ==&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? Discussion was moved to a separate page:&lt;br /&gt;
&lt;br /&gt;
[[Ideas for a new Window Manager]]&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). [http://www.ruby-lang.org/en/ Ruby] may be another language worth to be supported.&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>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4422</id>
		<title>Voyager FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4422"/>
		<updated>2007-01-27T12:29:23Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Is Voyager yet another Linux distribution? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
=Voyager Frequently Asked Questions=&lt;br /&gt;
Assembled by:&lt;br /&gt;
* Adrian Gschwend, aka &#039;&#039;ktk&#039;&#039;&lt;br /&gt;
* Cinc&lt;br /&gt;
&lt;br /&gt;
Intro:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;I know that you&#039;re afraid. You&#039;re afraid of us. You&#039;re afraid of change. I don&#039;t know the future. I didn&#039;t come here to tell you how this is going to end. I came here to tell you how it&#039;s going to begin.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
([http://en.wikiquote.org/wiki/Matrix Source] :)&lt;br /&gt;
==General==&lt;br /&gt;
===What is Voyager?===&lt;br /&gt;
Voyager is the codename for the idea of having a replacement OS/2 on top of modern technology. This idea is the result of around 1.5 years of thinking a &#039;&#039;&#039;lot&#039;&#039;&#039; about what we can do in the future as current OS/2 and [http://www.ecomstation.com/ eComStation] users.&lt;br /&gt;
Note that it&#039;s absolutely impossible to convey what we plan to do in a few sentences. I made a speech on it at Warpstock Europe 2005 that, by itself, took 1.5 hours so you get the point :)&lt;br /&gt;
&lt;br /&gt;
Before you continue you should probably consult:&lt;br /&gt;
&lt;br /&gt;
* My presentation at [http://warpstock.net/wse2005/presentations/presentations/ Warpstock Europe 2005]. Get the ALL06 PDF.&lt;br /&gt;
* My presentation as DivX ([ftp://ftp.netlabs.org/pub/voyager/wse05_all06-1.avi part 1, current situation (360 MB)],[ftp://ftp.netlabs.org/pub/voyager/wse05_all06-2.avi part 2, outlook &amp;amp; Voyager (366 MB)])  or MP3 (available soon). Use WarpVision or VLC 0.8.4a to play (VLC 0.8.2 won&#039;t work).&lt;br /&gt;
* The [[Voyager]] page in this Wiki and...&lt;br /&gt;
* The [http://dir.gmane.org/gmane.org.netlabs.voyager.devel Voyager mailinglist] at gmane.org&lt;br /&gt;
&lt;br /&gt;
Note that our path is firmly set and long past the point of discussion. As a potential contributor, know from the onset, that acceptance of this path is a must.  Take it or leave it, it&#039;s our choice and we have our reasons.&lt;br /&gt;
&lt;br /&gt;
===How is this releated to OS/2 and eCS?===&lt;br /&gt;
A lot and not much ;) Voyager is basically a re-implementation of a lot of ideas already implemented in the [http://en.wikipedia.org/wiki/Workplace_Shell WPS], the Workplace Shell of OS/2, the multimedia subsystem (like IO procedures) and other areas which make OS/2 unique. As mentioned in the ALL06 PDF, the WPS has still unique concepts that are not implemented in any of the free and well-known desktops like [http://www.gnome.org Gnome] or [http://www.kde.org KDE].&lt;br /&gt;
Our goal is to get the &amp;quot;WPS and OS/2 feeling&amp;quot; on top of new, (and existing), open source technologies, in a way that&#039;s more or less independent of the kernel used.&lt;br /&gt;
&lt;br /&gt;
One of the main concerns of current OS/2 and eCS users is good backward compatiblity. This is addressed [[Voyager_FAQ#Will_Voyager_support_my_OS.2F2_and_eCS_applications.3F | below]].&lt;br /&gt;
&lt;br /&gt;
===How is this related to MacOS X?===&lt;br /&gt;
I talk a lot about the MacOS X in my presentation for various reasons:&lt;br /&gt;
* The MacOS X Desktop does have a lot in common with the WPS. We&#039;re going to limit our talk to some of the ideas and concepts here. The reasons for the similarity are quite simple: Apple, IBM and HP had a company called [http://en.wikipedia.org/wiki/Taligent Taligent] in the 90s which worked on an object oriented OS. The project was cancelled in 1995, but some of the conceptual ideas survived. Some of these made it into the MacOS X which has also been influenced by [http://en.wikipedia.org/wiki/NeXT_Computer NeXT] which also has some ideas in common with OS/2s WPS.&lt;br /&gt;
* MacOS X provides a powerful 2D engine called [http://www.apple.com/macosx/features/quartzextreme/ Quartz Extreme], we think this is the way to go today and Voyager has planned something like this utilizing [http://www.cairographics.org Cairo] as the 2D engine.&lt;br /&gt;
* MacOS X provides an X implementation for compatiblity with Unix applications. Netlabs.org will provide something similar with [http://everblue.netlabs.org/ Everblue].&lt;br /&gt;
* Apple has already solved quite a few problems that we have now with OS/2 and eCS, (no real multiuser system, no real security concept etc). If you want to know more about our plans to deal with this read the [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming Guide] at apple.com. It is always a good idea to learn from others as there&#039;s no point in re-inventing the wheel.&lt;br /&gt;
&lt;br /&gt;
===Is Voyager yet another Linux distribution?===&lt;br /&gt;
No! Voyager is more than just repackaged linux stuff with a pretty desktop (in fact it is more likely BSD stuff...). We will kill some sacred cows of the *nix camp like X as the graphics foundation or so called choice. You won&#039;t have ten editors for your config files, you won&#039;t have several window managers but one, you won&#039;t have a dozen file systems to choose from but only one or two. You get the picture... &#039;&#039;&#039;Since there&#039;s no decision for the kernel yet the rumours Voyager would use the linux kernel are just - rumours.&#039;&#039;&#039;&lt;br /&gt;
Voyager won&#039;t require you do recompile your kernel every few weeks or hunt down package dependency when installing new apps by providing a standard set of base libs.&lt;br /&gt;
&lt;br /&gt;
===I heard Voyager uses the Linux kernel===&lt;br /&gt;
Read the answer to the previous question! For your convenience I highlighted the sentence which may interest you.&lt;br /&gt;
&lt;br /&gt;
I type this very slowly so every OS/2 zealot going berzerk may understand it: There is no decision about which kernel to use, yet. There&#039;s no decision about using the Linux kernel, there&#039;s not even a discussion about using the Linux kernel. Whenever somebody is telling you Voyager is using the Linux kernel just ignore that.&lt;br /&gt;
&lt;br /&gt;
===Will netlabs.org stop providing software for OS/2 and eCS now?===&lt;br /&gt;
&#039;&#039;&#039;Definitely&#039;&#039;&#039; not! We will continue to provide essential software for OS/2 the next years. Voyager is in our opinion a great option for the future but we know very well that it will take some time until you can use that as full replacement for what you use now.&lt;br /&gt;
&lt;br /&gt;
The best choice you can do at the moment is to work with eComStation, version 2 of eCS will provide some essential enhancements, many of the ideas are planned for Voyager as well. So one could say that Voyager could become something like eComStation 3.0 once.&lt;br /&gt;
===How can I support Voyager?===&lt;br /&gt;
There are several possiblities:&lt;br /&gt;
* We definitely need skilled developers. We have a wide range of tasks available, please consult the [[Voyager]] page to get an impression and join the [http://dir.gmane.org/gmane.org.netlabs.voyager.devel mailinglist] if you can contribute in some form.&lt;br /&gt;
* Motivate skilled coders to help on the project. We think that the idea is very tempting and unique and we already successfuly motivated developers outside of the OS/2 and eCS community. This is essential for this project.&lt;br /&gt;
* Buy [http://www.ecomstation.com eComStation]. netlabs.org is working closely with SSI and Mensys to provide new software on eCS. Supporting eCS is thus an exellent way to also fund development of Voyager indirectly.&lt;br /&gt;
* Buy netlabs.org sponsoring units in the [http://shop.mensys.nl/catalogue/mns_NETLABS.html Mensys] shop, we get 100% of the amount you donate there!&lt;br /&gt;
* Present Voyager at your local usergroup. We need to spread the word to motivate people to contribute in any form. For sure you are welcome to show the DivX of the presentation as well.&lt;br /&gt;
&lt;br /&gt;
==Technology==&lt;br /&gt;
===Will Voyager support my OS/2 and eCS applications?===&lt;br /&gt;
That&#039;s a question we can&#039;t answer that easy at the moment. For sure it would be nice if we reach that state one day but that depends on quite a lot of things. There are several options:&lt;br /&gt;
* use a virtual machine like [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN] to run OS/2 or eCS in there. Will definitely work but is not a soft migration&lt;br /&gt;
* implement the OS/2 base API on an existing Kernel to provide API compatibility. This could even be extended to binary compatibility if we work hard on it.&lt;br /&gt;
** [http://www.osfree.org osFree] has something in mind, see [http://www.falvotech.com/projects/os3.php here] as well.&lt;br /&gt;
** There is a project at [http://os2linux.sourceforge.net/  Sourceforge] which provides a base OS/2 API already on Linux, written by an IBM employee. This library is not complete yet but provides a base to work on&lt;br /&gt;
* implement at least parts of GPI and PM on top of an existing 2D engine like Cairo for PM compatibility. This is a very big task and we are not sure if it is worth doing that but if a group of people volunteers to write that, get in contact with us on the Voyager mailinglist. Note that such a project should definitely integrate well with our idea, otherwise it will not help at all.&lt;br /&gt;
&lt;br /&gt;
Another possiblity might come up with the design of Voyager, at the moment the most likely Glitz backend will be xorg OpenGL drivers, so we would get drivers from the HW-vendors. This opens a new interesting approach for backward compatibility, that would involve the following steps:&lt;br /&gt;
* compile Xorg on OS/2 with Innotek LIBC&lt;br /&gt;
* get the binary only drivers to work (should work somehow in theory)&lt;br /&gt;
* compile Glitz using xorg backend&lt;br /&gt;
* recompile GTK2 &amp;amp; all libraries used with Innotek LIBC&lt;br /&gt;
* write a GRADD driver that renders using OpenGL, which means it would render into the OpenGL driver of Xorg. Like this it should even be possible to have a windowed PM in Glitz.&lt;br /&gt;
&lt;br /&gt;
The benefit would be that we would also get HW acceleration in the current OS/2 or eCS.&lt;br /&gt;
&lt;br /&gt;
In short one can say that binary compatibility is technically possible up to a certain point at least. One can debate about if this is useful or not.&lt;br /&gt;
&lt;br /&gt;
===Why something new? There is Gnome, KDE...===&lt;br /&gt;
&lt;br /&gt;
If you think KDE, GNOME... fit your needs , that&#039;s fine, just move on because you have found a solution for your personal computing needs. The people involved&lt;br /&gt;
with Voyager so far don&#039;t think desktops other than the WPS which are available today fit their needs. Different people, different preferences.&lt;br /&gt;
&lt;br /&gt;
Or to quote [http://en.wikiquote.org/wiki/Larry_wall Larry Wall]: &amp;quot;There&#039;s More Than One Way to Do It&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Why not X?===&lt;br /&gt;
&lt;br /&gt;
Voyager is a desktop OS. We don&#039;t see any need for opening a window on a machine located somewhere in China when your monitor is only 50cm away from you.&lt;br /&gt;
&lt;br /&gt;
And, we don&#039;t like X. Period.&lt;br /&gt;
&lt;br /&gt;
(Note: We talk about X in terms of Xlib here, we are currently trying to understand the display driver concept of XFree86/Xorg because we would like to be able to use the OpenGL drivers of it).&lt;br /&gt;
&lt;br /&gt;
===This project is too big, you will fail===&lt;br /&gt;
&lt;br /&gt;
Maybe. But honestly without trying you wont know...&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
===Under what license will Voyager be released?===&lt;br /&gt;
The license will be liberal so using Voyager will not be restricted. On the other hand it will assure that Voyager remains open source. It will not be GPL.&lt;br /&gt;
&lt;br /&gt;
===Where can I download sourcecode?===&lt;br /&gt;
Once the license is defined there will be a subversion tree on netlabs.&lt;br /&gt;
&lt;br /&gt;
===Should I still work on OS/2 and eCS applications?===&lt;br /&gt;
Sure! OS/2 and eCS will be around for a very long time and Voyager will need quite some time to be mature enough to be usable. But if you intend to support the&lt;br /&gt;
Voyager approach any time you should try to code in a portable way. Instead of using the OS/2-API use a portable runtime instead e.g. GLib, NPL or APL. Consider using a cross&lt;br /&gt;
platform toolkit for the UI like DynamicWindows, GTK, XUL. Use only standard WPS methods without PM-specific tricks.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t like the Voyager approach anyway, why do you ask in the first place ;)?&lt;br /&gt;
&lt;br /&gt;
===Whats next with Voyager - where are we?===&lt;br /&gt;
Ask the oracle :-)&lt;br /&gt;
&lt;br /&gt;
We definitely can&#039;t give any assumptions about when we will be ready for a public release. One lesson we definitely learned in the past years with netlabs.org and other software projects is that release plans never work as announced :)&lt;br /&gt;
&lt;br /&gt;
There are some very rough plans at the moment:&lt;br /&gt;
* we would like to present some first prototypes of various components at Developer Workshop 2006 in Biel/Bienne. Those components are more or less technology studies for interested developers.&lt;br /&gt;
* till Warpstock Europe 2006 we hope to present a basic development setup which makes it easy for other developers to join the project on various platforms. This means you should be able to contribute on OS/2 &amp;amp; eCS, Linux, BSD and probably even MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Where we go from there is a choice I leave to you.&amp;quot;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4421</id>
		<title>Voyager FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_FAQ&amp;diff=4421"/>
		<updated>2007-01-27T12:27:25Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* I heard Voyager uses the Linux kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
=Voyager Frequently Asked Questions=&lt;br /&gt;
Assembled by:&lt;br /&gt;
* Adrian Gschwend, aka &#039;&#039;ktk&#039;&#039;&lt;br /&gt;
* Cinc&lt;br /&gt;
&lt;br /&gt;
Intro:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;I know that you&#039;re afraid. You&#039;re afraid of us. You&#039;re afraid of change. I don&#039;t know the future. I didn&#039;t come here to tell you how this is going to end. I came here to tell you how it&#039;s going to begin.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
([http://en.wikiquote.org/wiki/Matrix Source] :)&lt;br /&gt;
==General==&lt;br /&gt;
===What is Voyager?===&lt;br /&gt;
Voyager is the codename for the idea of having a replacement OS/2 on top of modern technology. This idea is the result of around 1.5 years of thinking a &#039;&#039;&#039;lot&#039;&#039;&#039; about what we can do in the future as current OS/2 and [http://www.ecomstation.com/ eComStation] users.&lt;br /&gt;
Note that it&#039;s absolutely impossible to convey what we plan to do in a few sentences. I made a speech on it at Warpstock Europe 2005 that, by itself, took 1.5 hours so you get the point :)&lt;br /&gt;
&lt;br /&gt;
Before you continue you should probably consult:&lt;br /&gt;
&lt;br /&gt;
* My presentation at [http://warpstock.net/wse2005/presentations/presentations/ Warpstock Europe 2005]. Get the ALL06 PDF.&lt;br /&gt;
* My presentation as DivX ([ftp://ftp.netlabs.org/pub/voyager/wse05_all06-1.avi part 1, current situation (360 MB)],[ftp://ftp.netlabs.org/pub/voyager/wse05_all06-2.avi part 2, outlook &amp;amp; Voyager (366 MB)])  or MP3 (available soon). Use WarpVision or VLC 0.8.4a to play (VLC 0.8.2 won&#039;t work).&lt;br /&gt;
* The [[Voyager]] page in this Wiki and...&lt;br /&gt;
* The [http://dir.gmane.org/gmane.org.netlabs.voyager.devel Voyager mailinglist] at gmane.org&lt;br /&gt;
&lt;br /&gt;
Note that our path is firmly set and long past the point of discussion. As a potential contributor, know from the onset, that acceptance of this path is a must.  Take it or leave it, it&#039;s our choice and we have our reasons.&lt;br /&gt;
&lt;br /&gt;
===How is this releated to OS/2 and eCS?===&lt;br /&gt;
A lot and not much ;) Voyager is basically a re-implementation of a lot of ideas already implemented in the [http://en.wikipedia.org/wiki/Workplace_Shell WPS], the Workplace Shell of OS/2, the multimedia subsystem (like IO procedures) and other areas which make OS/2 unique. As mentioned in the ALL06 PDF, the WPS has still unique concepts that are not implemented in any of the free and well-known desktops like [http://www.gnome.org Gnome] or [http://www.kde.org KDE].&lt;br /&gt;
Our goal is to get the &amp;quot;WPS and OS/2 feeling&amp;quot; on top of new, (and existing), open source technologies, in a way that&#039;s more or less independent of the kernel used.&lt;br /&gt;
&lt;br /&gt;
One of the main concerns of current OS/2 and eCS users is good backward compatiblity. This is addressed [[Voyager_FAQ#Will_Voyager_support_my_OS.2F2_and_eCS_applications.3F | below]].&lt;br /&gt;
&lt;br /&gt;
===How is this related to MacOS X?===&lt;br /&gt;
I talk a lot about the MacOS X in my presentation for various reasons:&lt;br /&gt;
* The MacOS X Desktop does have a lot in common with the WPS. We&#039;re going to limit our talk to some of the ideas and concepts here. The reasons for the similarity are quite simple: Apple, IBM and HP had a company called [http://en.wikipedia.org/wiki/Taligent Taligent] in the 90s which worked on an object oriented OS. The project was cancelled in 1995, but some of the conceptual ideas survived. Some of these made it into the MacOS X which has also been influenced by [http://en.wikipedia.org/wiki/NeXT_Computer NeXT] which also has some ideas in common with OS/2s WPS.&lt;br /&gt;
* MacOS X provides a powerful 2D engine called [http://www.apple.com/macosx/features/quartzextreme/ Quartz Extreme], we think this is the way to go today and Voyager has planned something like this utilizing [http://www.cairographics.org Cairo] as the 2D engine.&lt;br /&gt;
* MacOS X provides an X implementation for compatiblity with Unix applications. Netlabs.org will provide something similar with [http://everblue.netlabs.org/ Everblue].&lt;br /&gt;
* Apple has already solved quite a few problems that we have now with OS/2 and eCS, (no real multiuser system, no real security concept etc). If you want to know more about our plans to deal with this read the [http://developer.apple.com/documentation/Darwin/Kernel-date.html Kernel Programming Guide] at apple.com. It is always a good idea to learn from others as there&#039;s no point in re-inventing the wheel.&lt;br /&gt;
&lt;br /&gt;
===Is Voyager yet another Linux distribution?===&lt;br /&gt;
No! Voyager is more than just repackaged linux stuff with a pretty desktop. We will kill some sacred cows of the linux camp like X as the graphics foundation or so called choice. You won&#039;t have ten editors for your config files, you won&#039;t have several window managers but one, you won&#039;t have a dozen file systems to choose from but only one or two. You get the picture... &#039;&#039;&#039;Since there&#039;s no decision for the kernel yet the rumours Voyager would use the linux kernel are just - rumours.&#039;&#039;&#039;&lt;br /&gt;
Voyager won&#039;t require you do recompile your kernel every few weeks or hunt down package dependency when installing new apps by providing a standard set of base libs.&lt;br /&gt;
&lt;br /&gt;
===I heard Voyager uses the Linux kernel===&lt;br /&gt;
Read the answer to the previous question! For your convenience I highlighted the sentence which may interest you.&lt;br /&gt;
&lt;br /&gt;
I type this very slowly so every OS/2 zealot going berzerk may understand it: There is no decision about which kernel to use, yet. There&#039;s no decision about using the Linux kernel, there&#039;s not even a discussion about using the Linux kernel. Whenever somebody is telling you Voyager is using the Linux kernel just ignore that.&lt;br /&gt;
&lt;br /&gt;
===Will netlabs.org stop providing software for OS/2 and eCS now?===&lt;br /&gt;
&#039;&#039;&#039;Definitely&#039;&#039;&#039; not! We will continue to provide essential software for OS/2 the next years. Voyager is in our opinion a great option for the future but we know very well that it will take some time until you can use that as full replacement for what you use now.&lt;br /&gt;
&lt;br /&gt;
The best choice you can do at the moment is to work with eComStation, version 2 of eCS will provide some essential enhancements, many of the ideas are planned for Voyager as well. So one could say that Voyager could become something like eComStation 3.0 once.&lt;br /&gt;
===How can I support Voyager?===&lt;br /&gt;
There are several possiblities:&lt;br /&gt;
* We definitely need skilled developers. We have a wide range of tasks available, please consult the [[Voyager]] page to get an impression and join the [http://dir.gmane.org/gmane.org.netlabs.voyager.devel mailinglist] if you can contribute in some form.&lt;br /&gt;
* Motivate skilled coders to help on the project. We think that the idea is very tempting and unique and we already successfuly motivated developers outside of the OS/2 and eCS community. This is essential for this project.&lt;br /&gt;
* Buy [http://www.ecomstation.com eComStation]. netlabs.org is working closely with SSI and Mensys to provide new software on eCS. Supporting eCS is thus an exellent way to also fund development of Voyager indirectly.&lt;br /&gt;
* Buy netlabs.org sponsoring units in the [http://shop.mensys.nl/catalogue/mns_NETLABS.html Mensys] shop, we get 100% of the amount you donate there!&lt;br /&gt;
* Present Voyager at your local usergroup. We need to spread the word to motivate people to contribute in any form. For sure you are welcome to show the DivX of the presentation as well.&lt;br /&gt;
&lt;br /&gt;
==Technology==&lt;br /&gt;
===Will Voyager support my OS/2 and eCS applications?===&lt;br /&gt;
That&#039;s a question we can&#039;t answer that easy at the moment. For sure it would be nice if we reach that state one day but that depends on quite a lot of things. There are several options:&lt;br /&gt;
* use a virtual machine like [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ XEN] to run OS/2 or eCS in there. Will definitely work but is not a soft migration&lt;br /&gt;
* implement the OS/2 base API on an existing Kernel to provide API compatibility. This could even be extended to binary compatibility if we work hard on it.&lt;br /&gt;
** [http://www.osfree.org osFree] has something in mind, see [http://www.falvotech.com/projects/os3.php here] as well.&lt;br /&gt;
** There is a project at [http://os2linux.sourceforge.net/  Sourceforge] which provides a base OS/2 API already on Linux, written by an IBM employee. This library is not complete yet but provides a base to work on&lt;br /&gt;
* implement at least parts of GPI and PM on top of an existing 2D engine like Cairo for PM compatibility. This is a very big task and we are not sure if it is worth doing that but if a group of people volunteers to write that, get in contact with us on the Voyager mailinglist. Note that such a project should definitely integrate well with our idea, otherwise it will not help at all.&lt;br /&gt;
&lt;br /&gt;
Another possiblity might come up with the design of Voyager, at the moment the most likely Glitz backend will be xorg OpenGL drivers, so we would get drivers from the HW-vendors. This opens a new interesting approach for backward compatibility, that would involve the following steps:&lt;br /&gt;
* compile Xorg on OS/2 with Innotek LIBC&lt;br /&gt;
* get the binary only drivers to work (should work somehow in theory)&lt;br /&gt;
* compile Glitz using xorg backend&lt;br /&gt;
* recompile GTK2 &amp;amp; all libraries used with Innotek LIBC&lt;br /&gt;
* write a GRADD driver that renders using OpenGL, which means it would render into the OpenGL driver of Xorg. Like this it should even be possible to have a windowed PM in Glitz.&lt;br /&gt;
&lt;br /&gt;
The benefit would be that we would also get HW acceleration in the current OS/2 or eCS.&lt;br /&gt;
&lt;br /&gt;
In short one can say that binary compatibility is technically possible up to a certain point at least. One can debate about if this is useful or not.&lt;br /&gt;
&lt;br /&gt;
===Why something new? There is Gnome, KDE...===&lt;br /&gt;
&lt;br /&gt;
If you think KDE, GNOME... fit your needs , that&#039;s fine, just move on because you have found a solution for your personal computing needs. The people involved&lt;br /&gt;
with Voyager so far don&#039;t think desktops other than the WPS which are available today fit their needs. Different people, different preferences.&lt;br /&gt;
&lt;br /&gt;
Or to quote [http://en.wikiquote.org/wiki/Larry_wall Larry Wall]: &amp;quot;There&#039;s More Than One Way to Do It&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Why not X?===&lt;br /&gt;
&lt;br /&gt;
Voyager is a desktop OS. We don&#039;t see any need for opening a window on a machine located somewhere in China when your monitor is only 50cm away from you.&lt;br /&gt;
&lt;br /&gt;
And, we don&#039;t like X. Period.&lt;br /&gt;
&lt;br /&gt;
(Note: We talk about X in terms of Xlib here, we are currently trying to understand the display driver concept of XFree86/Xorg because we would like to be able to use the OpenGL drivers of it).&lt;br /&gt;
&lt;br /&gt;
===This project is too big, you will fail===&lt;br /&gt;
&lt;br /&gt;
Maybe. But honestly without trying you wont know...&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
===Under what license will Voyager be released?===&lt;br /&gt;
The license will be liberal so using Voyager will not be restricted. On the other hand it will assure that Voyager remains open source. It will not be GPL.&lt;br /&gt;
&lt;br /&gt;
===Where can I download sourcecode?===&lt;br /&gt;
Once the license is defined there will be a subversion tree on netlabs.&lt;br /&gt;
&lt;br /&gt;
===Should I still work on OS/2 and eCS applications?===&lt;br /&gt;
Sure! OS/2 and eCS will be around for a very long time and Voyager will need quite some time to be mature enough to be usable. But if you intend to support the&lt;br /&gt;
Voyager approach any time you should try to code in a portable way. Instead of using the OS/2-API use a portable runtime instead e.g. GLib, NPL or APL. Consider using a cross&lt;br /&gt;
platform toolkit for the UI like DynamicWindows, GTK, XUL. Use only standard WPS methods without PM-specific tricks.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t like the Voyager approach anyway, why do you ask in the first place ;)?&lt;br /&gt;
&lt;br /&gt;
===Whats next with Voyager - where are we?===&lt;br /&gt;
Ask the oracle :-)&lt;br /&gt;
&lt;br /&gt;
We definitely can&#039;t give any assumptions about when we will be ready for a public release. One lesson we definitely learned in the past years with netlabs.org and other software projects is that release plans never work as announced :)&lt;br /&gt;
&lt;br /&gt;
There are some very rough plans at the moment:&lt;br /&gt;
* we would like to present some first prototypes of various components at Developer Workshop 2006 in Biel/Bienne. Those components are more or less technology studies for interested developers.&lt;br /&gt;
* till Warpstock Europe 2006 we hope to present a basic development setup which makes it easy for other developers to join the project on various platforms. This means you should be able to contribute on OS/2 &amp;amp; eCS, Linux, BSD and probably even MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Where we go from there is a choice I leave to you.&amp;quot;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4399</id>
		<title>Netlabs News</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4399"/>
		<updated>2007-01-14T13:19:10Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* 1. January - 7 January */ Changed screenshot URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Netlabs]]&lt;br /&gt;
[[Category:Newsletter]]&lt;br /&gt;
&lt;br /&gt;
This page will be used to gather news about netlabs.org and it&#039;s projects.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are looking for the bi-weekly newsletter, please go here: [[Netlabs_bi_weekly_newsletter]]&lt;br /&gt;
=== 8. January - 14 January ===&lt;br /&gt;
* netlabs.org server news&lt;br /&gt;
** Server configuration is going well&lt;br /&gt;
** Initial SVN tests performed succesfully (among other things)&lt;br /&gt;
* Developer Workshop 2007&lt;br /&gt;
** Is going to be held in the Netherlands on June 23 &amp;amp; 24.&lt;br /&gt;
** Location: Cultural Center Griffioen in Amsterdam&lt;br /&gt;
** See: http://www.vu.nl/Organisatie/index.cfm/home_subsection.cfm/subsectionid/9DB86C70-F9C7-4704-8C9D9ED46EEDB063&lt;br /&gt;
** Watch the wiki page for upcoming news: http://wiki.netlabs.org/index.php/Developers_Workshop_2007 &lt;br /&gt;
* New QT3 Applications&lt;br /&gt;
** KDIFF&lt;br /&gt;
** QDVDAuthor&lt;br /&gt;
** needs more info&lt;br /&gt;
* XWorkPlace Version 1.0.7&lt;br /&gt;
** Fixed: Window List size/position (Bug 903)&lt;br /&gt;
** Fixed: Bug 902 and 910&lt;br /&gt;
** Added: ADDWIDGETS and DELETEWIDGETS setup strings to the XCenter (Bug 906)&lt;br /&gt;
** Bug Tracker: http://xtracker.netlabs.org/&lt;br /&gt;
** Download: http://hobbes.nmsu.edu/cgi-bin/h-search?key=XWP-1-0-7&lt;br /&gt;
* Some PathRewrite New&lt;br /&gt;
** needs content&lt;br /&gt;
** Temp Download: ftp://ftp.netlabs.org/incoming/ecsprw.wpi&lt;br /&gt;
* Canabis&lt;br /&gt;
** EXPAT/77 added to build instructions&lt;br /&gt;
** XML support added&lt;br /&gt;
** Several improvements&lt;br /&gt;
** See: http://svn.netlabs.org/canabis/timeline&lt;br /&gt;
* FM/2&lt;br /&gt;
** Ticket 60 and 61 fixed&lt;br /&gt;
** See: http://svn.netlabs.org/fm2/timeline&lt;br /&gt;
* kBuild&lt;br /&gt;
** Some fixes&lt;br /&gt;
** See: http://svn.netlabs.org/kbuild/timeline&lt;br /&gt;
* kLIBC&lt;br /&gt;
** Some fixes (I/O bugs, signals)&lt;br /&gt;
** See: http://svn.netlabs.org/libc/timeline&lt;br /&gt;
* NewView&lt;br /&gt;
** Various updates&lt;br /&gt;
** See: http://svn.netlabs.org/newview/timeline&lt;br /&gt;
* UniAud&lt;br /&gt;
** ???&lt;br /&gt;
* WarpVision&lt;br /&gt;
** ???&lt;br /&gt;
&lt;br /&gt;
=== 1. January - 7 January ===&lt;br /&gt;
* UniAudio&lt;br /&gt;
** latest ALSA tree updates&lt;br /&gt;
* WarpVision&lt;br /&gt;
** Fixed OGG/MKV/MOV embedded subtitles&lt;br /&gt;
** DVD Menu experiments &amp;amp; investigations&lt;br /&gt;
* kBuild&lt;br /&gt;
** Various small updates&lt;br /&gt;
** See: http://svn.netlabs.org/kbuild/timeline&lt;br /&gt;
* kLIBC&lt;br /&gt;
** Fixed build breaks&lt;br /&gt;
** See: http://svn.netlabs.org/libc/timeline&lt;br /&gt;
* Lucide Updates&lt;br /&gt;
** Unicode clipboard fixes&lt;br /&gt;
** Work on loading password protected PDFs&lt;br /&gt;
** http://svn.netlabs.org/lucide/timeline&lt;br /&gt;
* NewView Updates&lt;br /&gt;
** Various small updates&lt;br /&gt;
** See: http://svn.netlabs.org/newview/timeline&lt;br /&gt;
* Voyager&lt;br /&gt;
** Quite a few code checkins in the NOM and desktop trees. New [ftp://ftp.netlabs.org/pub/misc/cinc/voyager/voyager_14_01_2007.jpg screenshot].&lt;br /&gt;
** Updates to the [ftp://ftp.netlabs.org/pub/misc/cinc/voyager/Object-design.pdf Object Design document] (PDF)&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for mail gathering and bi-weekly processing ===&lt;br /&gt;
This is intended to be a procedure on how to create the bi-weekly newsletter, so that multiple people are able to do it, in case others are away.&lt;br /&gt;
&lt;br /&gt;
The news is gathered on a weekly basis.&lt;br /&gt;
Sources for news are various. We know the following:&lt;br /&gt;
* [irc://irc.netlabs.org/#netlabs #netlabs] channel, just connect and see what comes by&lt;br /&gt;
* http://news.netlabs.org/&lt;br /&gt;
* various SVN timelines for the projects that are already in SVN (needs to be listed explicitly?)&lt;br /&gt;
&lt;br /&gt;
There is a mail id on netlabs for mailing out the newsletter to various contacts.&lt;br /&gt;
The mail id is: news at netlabs dot org&lt;br /&gt;
It uses the following IMAP mailserver: mail dot netlabs dot org&lt;br /&gt;
&lt;br /&gt;
For the start of a new newsletter a copy from the previous one can be made and then copy the new news into it, to make life easy :-)&lt;br /&gt;
The easiest way to get the text is grabbing it from the webpage in normal view mode.&lt;br /&gt;
Check the text a second time, and align it a bit.&lt;br /&gt;
Address it with BCC to the following addresses:&lt;br /&gt;
* martin at os2world dot com&lt;br /&gt;
* stevew at jafar dot hartnell dot edu&lt;br /&gt;
* submit at os2voice dot org&lt;br /&gt;
* webmaster at ecomstation dot com&lt;br /&gt;
* webredactie at os2-gg dot nl&lt;br /&gt;
* ktk at netlabs dot org&lt;br /&gt;
* j dot van dot der dot heide at hccnet dot nl&lt;br /&gt;
* os2info at gmx dot net&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget the subject line with the next number and of it goes.&lt;br /&gt;
&lt;br /&gt;
After the newsletter is sent the &#039;Netlabs bi-weekly newsletter&#039; webpage has to be updated. (http://wiki.netlabs.org/index.php/Netlabs_bi_weekly_newsletter). Just copy the news on top of the others and add a heading.&lt;br /&gt;
&lt;br /&gt;
Then the draft version of the bi-weekly page can be emptied and the heading for the next week can be added.&lt;br /&gt;
&lt;br /&gt;
That is basicly the process of the bi-weekly newsletter.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4391</id>
		<title>Netlabs News</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4391"/>
		<updated>2007-01-13T00:22:36Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* 1. January - 7 January */ Voyager screenshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Netlabs]]&lt;br /&gt;
[[Category:Newsletter]]&lt;br /&gt;
&lt;br /&gt;
This page will be used to gather news about netlabs.org and it&#039;s projects.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are looking for the bi-weekly newsletter, please go here: [[Netlabs_bi_weekly_newsletter]]&lt;br /&gt;
=== 8. January - 14 January ===&lt;br /&gt;
* New QT3 Applications&lt;br /&gt;
** KDIFF&lt;br /&gt;
** QDVDAuthor&lt;br /&gt;
** needs more info&lt;br /&gt;
* XWorkPlace Version 1.0.7&lt;br /&gt;
** needs content&lt;br /&gt;
* Some PathRewrite New&lt;br /&gt;
** needs content&lt;br /&gt;
** Temp Download: ftp://ftp.netlabs.org/incoming/ecsprw.wpi&lt;br /&gt;
&lt;br /&gt;
=== 1. January - 7 January ===&lt;br /&gt;
* netlabs.org server news&lt;br /&gt;
* UniAudio&lt;br /&gt;
** latest ALSA tree updates&lt;br /&gt;
* WarpVision&lt;br /&gt;
** Fixed OGG/MKV/MOV embedded subtitles&lt;br /&gt;
** DVD Menu experiments &amp;amp; investigations&lt;br /&gt;
* kBuild&lt;br /&gt;
** Various small updates&lt;br /&gt;
** See: http://svn.netlabs.org/kbuild/timeline&lt;br /&gt;
* kLIBC&lt;br /&gt;
** Fixed build breaks&lt;br /&gt;
** See: http://svn.netlabs.org/libc/timeline&lt;br /&gt;
* Lucide Updates&lt;br /&gt;
** Unicode clipboard fixes&lt;br /&gt;
** Work on loading password protected PDFs&lt;br /&gt;
** http://svn.netlabs.org/lucide/timeline&lt;br /&gt;
* NewView Updates&lt;br /&gt;
** Various small updates&lt;br /&gt;
** See: http://svn.netlabs.org/newview/timeline&lt;br /&gt;
* Voyager&lt;br /&gt;
** Quite a few code checkins in the NOM and desktop trees. New [ftp://ftp.netlabs.org/pub/misc/cinc/voyager/voyager_12_01_2007.jpg screenshot].&lt;br /&gt;
** Updates to the [ftp://ftp.netlabs.org/pub/misc/cinc/voyager/Object-design.pdf Object Design document] (PDF)&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for mail gathering and bi-weekly processing ===&lt;br /&gt;
This is intended to be a procedure on how to create the bi-weekly newsletter, so that multiple people are able to do it, in case others are away.&lt;br /&gt;
&lt;br /&gt;
The news is gathered on a weekly basis.&lt;br /&gt;
Sources for news are various. We know the following:&lt;br /&gt;
* [irc://irc.netlabs.org/#netlabs #netlabs] channel, just connect and see what comes by&lt;br /&gt;
* http://news.netlabs.org/&lt;br /&gt;
* various SVN timelines for the projects that are already in SVN (needs to be listed explicitly?)&lt;br /&gt;
&lt;br /&gt;
There is a mail id on netlabs for mailing out the newsletter to various contacts.&lt;br /&gt;
The mail id is: news at netlabs dot org&lt;br /&gt;
It uses the following IMAP mailserver: mail dot netlabs dot org&lt;br /&gt;
&lt;br /&gt;
For the start of a new newsletter a copy from the previous one can be made and then copy the new news into it, to make life easy :-)&lt;br /&gt;
The easiest way to get the text is grabbing it from the webpage in normal view mode.&lt;br /&gt;
Check the text a second time, and align it a bit.&lt;br /&gt;
Address it with BCC to the following addresses:&lt;br /&gt;
* martin at os2world dot com&lt;br /&gt;
* stevew at jafar dot hartnell dot edu&lt;br /&gt;
* submit at os2voice dot org&lt;br /&gt;
* webmaster at ecomstation dot com&lt;br /&gt;
* webredactie at os2-gg dot nl&lt;br /&gt;
* ktk at netlabs dot org&lt;br /&gt;
* j dot van dot der dot heide at hccnet dot nl&lt;br /&gt;
* os2info at gmx dot net&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget the subject line with the next number and of it goes.&lt;br /&gt;
&lt;br /&gt;
After the newsletter is sent the &#039;Netlabs bi-weekly newsletter&#039; webpage has to be updated. (http://wiki.netlabs.org/index.php/Netlabs_bi_weekly_newsletter). Just copy the news on top of the others and add a heading.&lt;br /&gt;
&lt;br /&gt;
Then the draft version of the bi-weekly page can be emptied and the heading for the next week can be added.&lt;br /&gt;
&lt;br /&gt;
That is basicly the process of the bi-weekly newsletter.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4369</id>
		<title>Netlabs News</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Netlabs_News&amp;diff=4369"/>
		<updated>2007-01-06T19:45:07Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Voyager info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Netlabs]]&lt;br /&gt;
[[Category:Newsletter]]&lt;br /&gt;
&lt;br /&gt;
This page will be used to gather news about netlabs.org and it&#039;s projects.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are looking for the bi-weekly newsletter, please go here: [[Netlabs_bi_weekly_newsletter]]&lt;br /&gt;
=== 1. January - 7 January ===&lt;br /&gt;
* netlabs.org server news&lt;br /&gt;
* UniAudio&lt;br /&gt;
* WarpVision&lt;br /&gt;
* kBuild&lt;br /&gt;
** Various small updates&lt;br /&gt;
** See: http://svn.netlabs.org/kbuild/timeline&lt;br /&gt;
* kLIBC&lt;br /&gt;
** Fixed build breaks&lt;br /&gt;
** See: http://svn.netlabs.org/libc/timeline&lt;br /&gt;
* Lucide Updates&lt;br /&gt;
** Unicode clipboard fixes&lt;br /&gt;
** Work on loading password protected PDFs&lt;br /&gt;
** http://svn.netlabs.org/lucide/timeline&lt;br /&gt;
* NewView Updates&lt;br /&gt;
** Various small updates&lt;br /&gt;
** See: http://svn.netlabs.org/newview/timeline&lt;br /&gt;
* Voyager&lt;br /&gt;
** Quite a few code checkins in the NOM and desktop trees&lt;br /&gt;
** Updates to the [ftp://ftp.netlabs.org/pub/misc/cinc/voyager/Object-design.pdf Object Design document] (PDF)&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for mail gathering and bi-weekly processing ===&lt;br /&gt;
This is intended to be a procedure on how to create the bi-weekly newsletter, so that multiple people are able to do it, in case others are away.&lt;br /&gt;
&lt;br /&gt;
The news is gathered on a weekly basis.&lt;br /&gt;
Sources for news are various. We know the following:&lt;br /&gt;
* [irc://irc.netlabs.org/#netlabs #netlabs] channel, just connect and see what comes by&lt;br /&gt;
* http://news.netlabs.org/&lt;br /&gt;
* various SVN timelines for the projects that are already in SVN (needs to be listed explicitly?)&lt;br /&gt;
&lt;br /&gt;
There is a mail id on netlabs for mailing out the newsletter to various contacts.&lt;br /&gt;
The mail id is: news at netlabs dot org&lt;br /&gt;
It uses the following IMAP mailserver: mail dot netlabs dot org&lt;br /&gt;
&lt;br /&gt;
For the start of a new newsletter a copy from the previous one can be made and then copy the new news into it, to make life easy :-)&lt;br /&gt;
The easiest way to get the text is grabbing it from the webpage in normal view mode.&lt;br /&gt;
Check the text a second time, and align it a bit.&lt;br /&gt;
Address it with BCC to the following addresses:&lt;br /&gt;
* martin at os2world dot com&lt;br /&gt;
* stevew at jafar dot hartnell dot edu&lt;br /&gt;
* submit at os2voice dot org&lt;br /&gt;
* webmaster at ecomstation dot com&lt;br /&gt;
* webredactie at os2-gg dot nl&lt;br /&gt;
* ktk at netlabs dot org&lt;br /&gt;
* j dot van dot der dot heide at hccnet dot nl&lt;br /&gt;
* os2info at gmx dot net&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget the subject line with the next number and of it goes.&lt;br /&gt;
&lt;br /&gt;
After the newsletter is sent the &#039;Netlabs bi-weekly newsletter&#039; webpage has to be updated. (http://wiki.netlabs.org/index.php/Netlabs_bi_weekly_newsletter). Just copy the news on top of the others and add a heading.&lt;br /&gt;
&lt;br /&gt;
Then the draft version of the bi-weekly page can be emptied and the heading for the next week can be added.&lt;br /&gt;
&lt;br /&gt;
That is basicly the process of the bi-weekly newsletter.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=4343</id>
		<title>Voyager</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager&amp;diff=4343"/>
		<updated>2006-12-29T12:37:53Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Tidied the page by moving the whole contents away :P&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The old contents of this page moved [[Voyager_Discussion|here]]. That page contains the ideas which evolved from quite some discussions.&lt;br /&gt;
&lt;br /&gt;
This page will cover the actual implementation of Voyager after the cornerstones are set now.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_Discussion&amp;diff=4342</id>
		<title>Voyager Discussion</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_Discussion&amp;diff=4342"/>
		<updated>2006-12-29T12:32:21Z</updated>

		<summary type="html">&lt;p&gt;Cinc: New page with the Voyager discussions and ideas so far. Moved from Voager page here.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&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;
* [http://www.tango-project.org The Tango Desktop Project] - exists to help create a consistent graphical user interface experience for free and Open Source software.&lt;br /&gt;
* [http://www.freesoftwaremagazine.com/articles/accelerated_x?page=0%2C1 XGL v. AIGLX)]&lt;br /&gt;
* [http://www.virtualgl.org/ VirtualGL]&lt;br /&gt;
&lt;br /&gt;
===Kernels===&lt;br /&gt;
* http://haiku-os.org - OpenBeOS successor&lt;br /&gt;
* http://www.ertos.nicta.com.au/software/darbat/ - Darwin on L4&lt;br /&gt;
&lt;br /&gt;
== Design Discussion ==&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? Discussion was moved to a separate page:&lt;br /&gt;
&lt;br /&gt;
[[Ideas for a new Window Manager]]&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). [http://www.ruby-lang.org/en/ Ruby] may be another language worth to be supported.&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>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4341</id>
		<title>Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4341"/>
		<updated>2006-12-29T08:30:57Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The desktop should resemble the WPS experience. There won&#039;t be binary compatibility (if you want that, feel free to add it) but source compatibilty is top priority.&lt;br /&gt;
&lt;br /&gt;
Some cornerstones:&lt;br /&gt;
&lt;br /&gt;
* OO design&lt;br /&gt;
* Extendable by just adding new classes like the WPS (subclassing without recompiling)&lt;br /&gt;
* Class replacing&lt;br /&gt;
* No recompilation for new features&lt;br /&gt;
* Drag and drop of almost everything (icons, colors, fonts etc.)&lt;br /&gt;
* Scriptable by REXX&lt;br /&gt;
* Maybe REXX-classes (classes written in REXX)&lt;br /&gt;
* DSOM functionality (not at the beginning but development shouldn&#039;t prevent it)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please don&#039;t discuss items on this page. Use the discussion page or the [[Voyager]] page.&lt;br /&gt;
&lt;br /&gt;
== Design decisions ==&lt;br /&gt;
&lt;br /&gt;
At this point in time:&lt;br /&gt;
&lt;br /&gt;
* The graphical toolkit is [http://www.gtk.org GTK]&lt;br /&gt;
* [http://www.gtk.org GLib] is used as the portability layer&lt;br /&gt;
* An object model similar to SOM is the foundation (NOM: Netlabs Object Model)&lt;br /&gt;
* GTK will be wrapped into objects to make development easier&lt;br /&gt;
* Compiler is gcc 3.3.x (may change later. Compilation on OS/2 should always be possible)&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fdbus D-BUS] will be the foundation for interprocess communication&lt;br /&gt;
* Make is gmake&lt;br /&gt;
&lt;br /&gt;
If you have compelling arguments against these decisions feel free to point to a better solution. But be aware that just saying &amp;quot;I don&#039;t like it&amp;quot; won&#039;t make serious points. Some hundred/thousand/millions lines of code will likely change our minds faster.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
(Last change 29.Dec2006)&lt;br /&gt;
&lt;br /&gt;
* The prototype code ([ftp://ftp.netlabs.org/pub/voyager/desktop/images/prototype.jpg screenshot]) is migrated to GTK 2.6.x. See [ftp://ftp.netlabs.org/pub/misc/cinc/vdesktop-gtk.jpg screenshot 1] and [ftp://ftp.netlabs.org/pub/misc/cinc/notebook.jpg screenshot 2]. It&#039;s currently running on X only and can be considered a proof of concept. Work is in progress to add more classes and methods and wrap the GTK API into objects.&lt;br /&gt;
&lt;br /&gt;
* Some historical status information can be found on [ftp://ftp.netlabs.org/pub/voyager/desktop/documentation.htm this page].&lt;br /&gt;
&lt;br /&gt;
* The orbit IDL compiler is ported to OS/2 and is the foundation for the Voyager IDL compiler.&lt;br /&gt;
&lt;br /&gt;
* h-file emitter of the Voyager IDL compiler is done&lt;br /&gt;
&lt;br /&gt;
* c-file emitter of the IDL compiler is done&lt;br /&gt;
&lt;br /&gt;
* ih-file emitter is done&lt;br /&gt;
&lt;br /&gt;
* Completely based on gcc. No dependencies on closed code.&lt;br /&gt;
&lt;br /&gt;
== To do ==&lt;br /&gt;
&lt;br /&gt;
The following list is only the most important stuff.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt;Write an IDL compiler&amp;lt;/strike&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;Migrate header files to our own (using IBM stuff atm)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* Enable class replacing&lt;br /&gt;
* Make it distributed (DSOM)&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4340</id>
		<title>Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4340"/>
		<updated>2006-12-29T08:29:45Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The desktop should resemble the WPS experience. There won&#039;t be binary compatibility (if you want that, feel free to add it) but source compatibilty is top priority.&lt;br /&gt;
&lt;br /&gt;
Some cornerstones:&lt;br /&gt;
&lt;br /&gt;
* OO design&lt;br /&gt;
* Extendable by just adding new classes like the WPS (subclassing without recompiling)&lt;br /&gt;
* Class replacing&lt;br /&gt;
* No recompilation for new features&lt;br /&gt;
* Drag and drop of almost everything (icons, colors, fonts etc.)&lt;br /&gt;
* Scriptable by REXX&lt;br /&gt;
* Maybe REXX-classes (classes written in REXX)&lt;br /&gt;
* DSOM functionality (not at the beginning but development shouldn&#039;t prevent it)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please don&#039;t discuss items on this page. Use the discussion page or the [[Voyager]] page.&lt;br /&gt;
&lt;br /&gt;
== Design decisions ==&lt;br /&gt;
&lt;br /&gt;
At this point in time:&lt;br /&gt;
&lt;br /&gt;
* The graphical toolkit is [http://www.gtk.org GTK]&lt;br /&gt;
* [http://www.gtk.org GLib] is used as the portability layer&lt;br /&gt;
* An object model similar to SOM is the foundation (NOM: Netlabs Object Model)&lt;br /&gt;
* GTK will be wrapped into objects to make development easier&lt;br /&gt;
* Compiler is gcc 3.3.x (may change later. Compilation on OS/2 should always be possible)&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fdbus D-BUS] will be the foundation for interprocess communication&lt;br /&gt;
* Make is gmake&lt;br /&gt;
&lt;br /&gt;
If you have compelling arguments against these decisions feel free to point to a better solution. But be aware that just saying &amp;quot;I don&#039;t like it&amp;quot; won&#039;t make serious points. Some hundred/thousand/millions lines of code will likely change our minds faster.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
(Last change 29.Dec2006)&lt;br /&gt;
&lt;br /&gt;
* The prototype code ([ftp://ftp.netlabs.org/pub/voyager/desktop/images/prototype.jpg screenshot]) is migrated to GTK 2.6.x. See [ftp://ftp.netlabs.org/pub/misc/cinc/vdesktop-gtk.jpg screenshot 1] and [ftp://ftp.netlabs.org/pub/misc/cinc/notebook.jpg screenshot 2]. It&#039;s currently running on X only and can be considered a proof of concept. Work is in progress to add more classes and methods and wrap the GTK API into objects.&lt;br /&gt;
&lt;br /&gt;
* Some historical status information can be found on [ftp://ftp.netlabs.org/pub/voyager/desktop/documentation.htm this page].&lt;br /&gt;
&lt;br /&gt;
* The orbit IDL compiler is ported to OS/2 and is the foundation for the Voyager IDL compiler.&lt;br /&gt;
&lt;br /&gt;
* h-file emitter of the Voyager IDL compiler is done&lt;br /&gt;
&lt;br /&gt;
* c-file emitter of the IDL compiler is done&lt;br /&gt;
&lt;br /&gt;
* ih-file emitter is done&lt;br /&gt;
&lt;br /&gt;
== To do ==&lt;br /&gt;
&lt;br /&gt;
The following list is only the most important stuff.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt;Write an IDL compiler&amp;lt;/strike&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;Migrate header files to our own (using IBM stuff atm)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* Enable class replacing&lt;br /&gt;
* Make it distributed (DSOM)&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4339</id>
		<title>Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4339"/>
		<updated>2006-12-29T08:26:12Z</updated>

		<summary type="html">&lt;p&gt;Cinc: Status updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The desktop should resemble the WPS experience. There won&#039;t be binary compatibility (if you want that, feel free to add it) but source compatibilty is top priority.&lt;br /&gt;
&lt;br /&gt;
Some cornerstones:&lt;br /&gt;
&lt;br /&gt;
* OO design&lt;br /&gt;
* Extendable by just adding new classes like the WPS (subclassing without recompiling)&lt;br /&gt;
* Class replacing&lt;br /&gt;
* No recompilation for new features&lt;br /&gt;
* Drag and drop of almost everything (icons, colors, fonts etc.)&lt;br /&gt;
* Scriptable by REXX&lt;br /&gt;
* Maybe REXX-classes (classes written in REXX)&lt;br /&gt;
* DSOM functionality (not at the beginning but development shouldn&#039;t prevent it)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please don&#039;t discuss items on this page. Use the discussion page or the [[Voyager]] page.&lt;br /&gt;
&lt;br /&gt;
== Design decisions ==&lt;br /&gt;
&lt;br /&gt;
At this point in time:&lt;br /&gt;
&lt;br /&gt;
* The graphical toolkit is [http://www.gtk.org GTK]&lt;br /&gt;
* [http://www.gtk.org GLib] is used as the portability layer&lt;br /&gt;
* An object model similar to SOM is the foundation (NOM: Netlabs Object Model)&lt;br /&gt;
* GTK will be wrapped into objects to make development easier&lt;br /&gt;
* Compiler is gcc 3.3.x (may change later. Compilation on OS/2 should always be possible)&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fdbus D-BUS] will be the foundation for interprocess communication&lt;br /&gt;
* Make is gmake&lt;br /&gt;
&lt;br /&gt;
If you have compelling arguments against these decisions feel free to point to a better solution. But be aware that just saying &amp;quot;I don&#039;t like it&amp;quot; won&#039;t make serious points. Some hundred/thousand/millions lines of code will likely change our minds faster.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
(Last change 29.Dec2006)&lt;br /&gt;
&lt;br /&gt;
* The prototype code ([ftp://ftp.netlabs.org/pub/voyager/desktop/images/prototype.jpg screenshot]) is migrated to GTK 2.6.x. See [ftp://ftp.netlabs.org/pub/misc/cinc/vdesktop-gtk.jpg screenshot 1] and [ftp://ftp.netlabs.org/pub/misc/cinc/notebook.jpg screenshot 2]. It&#039;s currently running on X only and can be considered a proof of concept. Work is in progress to add more classes and methods and wrap the GTK API into objects.&lt;br /&gt;
&lt;br /&gt;
* Some historical status information can be found on [ftp://ftp.netlabs.org/pub/voyager/desktop/documentation.htm this page].&lt;br /&gt;
&lt;br /&gt;
* The orbit IDL compiler is ported to OS/2 and is the foundation for the Voyager IDL compiler.&lt;br /&gt;
&lt;br /&gt;
* h-file emitter of the Voyager IDL compiler is done&lt;br /&gt;
&lt;br /&gt;
* c-file emitter of the IDL compiler is done&lt;br /&gt;
&lt;br /&gt;
* ih-file emitter is done&lt;br /&gt;
&lt;br /&gt;
== To do ==&lt;br /&gt;
&lt;br /&gt;
The following list is only the most important stuff.&lt;br /&gt;
&lt;br /&gt;
* Write an IDL compiler&lt;br /&gt;
* Migrate header files to our own (using IBM stuff atm)&lt;br /&gt;
* Enable class replacing&lt;br /&gt;
* Make it distributed (DSOM)&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4338</id>
		<title>Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4338"/>
		<updated>2006-12-29T08:22:54Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Design decisions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The desktop should resemble the WPS experience. There won&#039;t be binary compatibility (if you want that, feel free to add it) but source compatibilty is top priority.&lt;br /&gt;
&lt;br /&gt;
Some cornerstones:&lt;br /&gt;
&lt;br /&gt;
* OO design&lt;br /&gt;
* Extendable by just adding new classes like the WPS (subclassing without recompiling)&lt;br /&gt;
* Class replacing&lt;br /&gt;
* No recompilation for new features&lt;br /&gt;
* Drag and drop of almost everything (icons, colors, fonts etc.)&lt;br /&gt;
* Scriptable by REXX&lt;br /&gt;
* Maybe REXX-classes (classes written in REXX)&lt;br /&gt;
* DSOM functionality (not at the beginning but development shouldn&#039;t prevent it)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please don&#039;t discuss items on this page. Use the discussion page or the [[Voyager]] page.&lt;br /&gt;
&lt;br /&gt;
== Design decisions ==&lt;br /&gt;
&lt;br /&gt;
At this point in time:&lt;br /&gt;
&lt;br /&gt;
* The graphical toolkit is [http://www.gtk.org GTK]&lt;br /&gt;
* [http://www.gtk.org GLib] is used as the portability layer&lt;br /&gt;
* An object model similar to SOM is the foundation (NOM: Netlabs Object Model)&lt;br /&gt;
* GTK will be wrapped into objects to make development easier&lt;br /&gt;
* Compiler is gcc 3.3.x (may change later. Compilation on OS/2 should always be possible)&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fdbus D-BUS] will be the foundation for interprocess communication&lt;br /&gt;
* Make is gmake&lt;br /&gt;
&lt;br /&gt;
If you have compelling arguments against these decisions feel free to point to a better solution. But be aware that just saying &amp;quot;I don&#039;t like it&amp;quot; won&#039;t make serious points. Some hundred/thousand/millions lines of code will likely change our minds faster.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
* The prototype code ([ftp://ftp.netlabs.org/pub/voyager/desktop/images/prototype.jpg screenshot]) is migrated to GTK 2.6.x. See [ftp://ftp.netlabs.org/pub/misc/cinc/vdesktop-gtk.jpg screenshot 1] and [ftp://ftp.netlabs.org/pub/misc/cinc/notebook.jpg screenshot 2]. It&#039;s currently running on X only and can be considered a proof of concept. Work is in progress to add more classes and methods and wrap the GTK API into objects.&lt;br /&gt;
&lt;br /&gt;
* Some historical status information can be found on [ftp://ftp.netlabs.org/pub/voyager/desktop/documentation.htm this page].&lt;br /&gt;
&lt;br /&gt;
* The orbit IDL compiler is ported to OS/2 and is the foundation for the Voyager IDL compiler.&lt;br /&gt;
&lt;br /&gt;
* h-file emitter of the Voyager IDL compiler is more or less finished (05.Sep.2006).&lt;br /&gt;
&lt;br /&gt;
== To do ==&lt;br /&gt;
&lt;br /&gt;
The following list is only the most important stuff.&lt;br /&gt;
&lt;br /&gt;
* Write an IDL compiler&lt;br /&gt;
* Migrate header files to our own (using IBM stuff atm)&lt;br /&gt;
* Enable class replacing&lt;br /&gt;
* Make it distributed (DSOM)&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4337</id>
		<title>Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Desktop&amp;diff=4337"/>
		<updated>2006-12-29T08:22:30Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Design decisions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The desktop should resemble the WPS experience. There won&#039;t be binary compatibility (if you want that, feel free to add it) but source compatibilty is top priority.&lt;br /&gt;
&lt;br /&gt;
Some cornerstones:&lt;br /&gt;
&lt;br /&gt;
* OO design&lt;br /&gt;
* Extendable by just adding new classes like the WPS (subclassing without recompiling)&lt;br /&gt;
* Class replacing&lt;br /&gt;
* No recompilation for new features&lt;br /&gt;
* Drag and drop of almost everything (icons, colors, fonts etc.)&lt;br /&gt;
* Scriptable by REXX&lt;br /&gt;
* Maybe REXX-classes (classes written in REXX)&lt;br /&gt;
* DSOM functionality (not at the beginning but development shouldn&#039;t prevent it)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please don&#039;t discuss items on this page. Use the discussion page or the [[Voyager]] page.&lt;br /&gt;
&lt;br /&gt;
== Design decisions ==&lt;br /&gt;
&lt;br /&gt;
At this point in time:&lt;br /&gt;
&lt;br /&gt;
* The graphical toolkit is [http://www.gtk.org GTK]&lt;br /&gt;
* [http://www.gtk.org GLib] is used as the portability layer&lt;br /&gt;
* An object model similar to SOM is the foundation (NOM: Netlabs Object Model)&lt;br /&gt;
* GTK will be wrapped into objects to make development easier&lt;br /&gt;
* Compiler is gcc 3.3.x (may change later. Compilation on OS/2 should always be possible)&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Software_2fdbus D-BUS] will be the foundation for interprocess communication&lt;br /&gt;
* Make is gmake&lt;br /&gt;
&lt;br /&gt;
If you have compelling arguments against these decisions feel free to point to a better solution. But be aware that just saying &amp;quot;I don&#039;t like it&amp;quot; wont make serious points. Some hundred/thousand/millions lines of code will likely change our minds faster.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
* The prototype code ([ftp://ftp.netlabs.org/pub/voyager/desktop/images/prototype.jpg screenshot]) is migrated to GTK 2.6.x. See [ftp://ftp.netlabs.org/pub/misc/cinc/vdesktop-gtk.jpg screenshot 1] and [ftp://ftp.netlabs.org/pub/misc/cinc/notebook.jpg screenshot 2]. It&#039;s currently running on X only and can be considered a proof of concept. Work is in progress to add more classes and methods and wrap the GTK API into objects.&lt;br /&gt;
&lt;br /&gt;
* Some historical status information can be found on [ftp://ftp.netlabs.org/pub/voyager/desktop/documentation.htm this page].&lt;br /&gt;
&lt;br /&gt;
* The orbit IDL compiler is ported to OS/2 and is the foundation for the Voyager IDL compiler.&lt;br /&gt;
&lt;br /&gt;
* h-file emitter of the Voyager IDL compiler is more or less finished (05.Sep.2006).&lt;br /&gt;
&lt;br /&gt;
== To do ==&lt;br /&gt;
&lt;br /&gt;
The following list is only the most important stuff.&lt;br /&gt;
&lt;br /&gt;
* Write an IDL compiler&lt;br /&gt;
* Migrate header files to our own (using IBM stuff atm)&lt;br /&gt;
* Enable class replacing&lt;br /&gt;
* Make it distributed (DSOM)&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
	<entry>
		<id>https://wiki.netlabs.org/index.php?title=Voyager_Support&amp;diff=4336</id>
		<title>Voyager Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.netlabs.org/index.php?title=Voyager_Support&amp;diff=4336"/>
		<updated>2006-12-29T08:16:10Z</updated>

		<summary type="html">&lt;p&gt;Cinc: /* Netlabs Object Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Voyager]]&lt;br /&gt;
Voyager is a very complex projects and it just can be successful when everyone contributes as good as possible. To make it easier for you to join the project we defined some jobs where you might help.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
Good documentation is  an important part of Voyager. For various reasons we decided to do the documentation in [http://www.docbook.org DocBook]. This is an XML based format used for many publications, O&#039;reilly books are done with that too. Many other open source projects use this format as a base, it allows us to create any kind of output out of it like HTML or PDF but also more in the future.&lt;br /&gt;
&lt;br /&gt;
The drawback is that it takes some more time to get into DocBook, in the beginning it is easier to use a WYSIWYG application like OpenOffice.org to create the document. Currently two Voyager developers write their documentation in OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
So one help would be to keep [http://voyager.netlabs.org/ The Design of Voyager] up to date with the OpenOffice.org documents of the two developers. Beside this one might also work on an easy to use way on eCS to work with DocBook.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DocBook Editors===&lt;br /&gt;
At the time writing there are the following options available to edit DocBook in an easier way:&lt;br /&gt;
&lt;br /&gt;
* [http://www.eclipse.org Eclipse] with the [http://vex.sourceforge.net/ Vex] and [http://www.xmlbuddy.com/ XMLBuddy] plugin. Vex is open source and XMLBuddy is free in the entry version which is enough for our needs. Unfortunately we do not have an Eclipse port for eCS yet so this requires to work on one of the supported Eclipse platforms right now.&lt;br /&gt;
* [http://www.xmlmind.com/xmleditor/ XMLmind], a standalone Java based XML Editor which seems to support DocBook as well. According to the requirements this should work on eCS but we did not test that yet. It would be nice to set up a package that can be easily installed on eCS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At Warpstock Europe 2005 there was also a [http://warpstock.net/WSE2005/Presentations/Presentations/#docbook presentation about DocBook] on eCS by Jarda Kačer and Jirka Kosek. It would be a good idea to work together with those guys to get that to work on eCS as well.&lt;br /&gt;
&lt;br /&gt;
===DocBook Syntax===&lt;br /&gt;
The best way to learn DocBook is to have a look at the [http://svn.netlabs.org/v_doc/browser/DOV current book], most of the needed tags are probably already used once. Beside this one should have a look at [http://www.docbook.org/tdg/ DocBook: The Definitive Guide], which is available online or as HTML download. &lt;br /&gt;
&lt;br /&gt;
Some remarks:&lt;br /&gt;
* Use [http://www.docbook.org/tdg/en/html/xref.html xref] whenever possible to create a reference to another part of the document. This makes reading the book much more interactive.&lt;br /&gt;
* For images one should use PNG versions for the web release and PDF for the PDF edition of the book. See the [http://FIXME mediaobject] example in [http://svn.netlabs.org/v_doc/browser/DOV/ch03.xml Chapter 3]. Please make sure that the PNG versions use a size that makes sense for web publishing. We did not do many tests on PDF yet, we have to see how this works regarding scaling.&lt;br /&gt;
* We use Subversion to keep a history of the document, this also means that the structure of the document should not change unless there is new content. Because of its XML nature, every editor will use its own indenting for the file. The only valid format to commit to Subversion is the indenting of Vex. So in case your editor changes the layout please make sure that Vex did format it before it gets committed, otherwise we get very big changesets!&lt;br /&gt;
* There is an additional &amp;lt;tt&amp;gt;DOCTYPE&amp;lt;/tt&amp;gt; declaration in each chapter, the XSLT for transforming it does not like that because it is also defined in &amp;lt;tt&amp;gt;book.xml&amp;lt;/tt&amp;gt;. To create the HTML and the PDF version of the book this line gets stripped out automatically by the build process before the document is transformed.&lt;br /&gt;
* Do not worry about the online versions, they are done by some scripts. Just make sure your own copy builds correctly in HTML before you commit it.&lt;br /&gt;
* Do not forget to commit images as well to the Subversion in case you added some.&lt;br /&gt;
&lt;br /&gt;
==ToDo==&lt;br /&gt;
This is a list of documents that need to get maintained.&lt;br /&gt;
&lt;br /&gt;
===The Design of Voyager===&lt;br /&gt;
====Netlabs Object Model====&lt;br /&gt;
* [ftp://ftp.netlabs.org/pub/misc/cinc/voyager/Object-design.pdf Object Design]&lt;br /&gt;
* Author: Chris Wohlgemuth, &amp;lt;tt&amp;gt;cinc-ml at netlabs.org&amp;lt;/tt&amp;gt;, Cinc on irc://irc.netlabs.org/netlabs&lt;br /&gt;
&lt;br /&gt;
====Desktop====&lt;br /&gt;
* [ftp://ftp.netlabs.org/pub/misc/cinc/voyager/Desktop-design.pdf Desktop Design]&lt;br /&gt;
* Author: Chris Wohlgemuth, &amp;lt;tt&amp;gt;cinc-ml at netlabs.org&amp;lt;/tt&amp;gt;, Cinc on irc://irc.netlabs.org/netlabs&lt;br /&gt;
&lt;br /&gt;
====Triton====&lt;br /&gt;
* [http://svn.netlabs.org/v_triton/browser/trunk/Docs/mmio-general.odt MMIO General] - OpenOffice.org&lt;br /&gt;
* Author: Peter Kocsis, &amp;lt;tt&amp;gt;FIXME&amp;lt;/tt&amp;gt;, Doodle on irc://irc.netlabs.org/netlabs&lt;br /&gt;
&lt;br /&gt;
===Object-Oriented Interface Design (CUA)===&lt;br /&gt;
This is the book written by IBM back in the early nineties, the original title was&lt;br /&gt;
* Object-Oriented Interface Design - IBM Common User Access Guidelines ISBN 1-56529-170-0&lt;br /&gt;
&lt;br /&gt;
We never found a PDF version of this book, just a very poor online HTML version. With the help of some scripts we assembled a standalone version of this book. Unfortunately the HTML syntax is very poor and the book lacks the images. Good for you because you can help us on that ;-)&lt;br /&gt;
&lt;br /&gt;
* Get the [http://svn.netlabs.org/v_doc/browser/CUA recent version] of this book in our Subversion&lt;br /&gt;
* Install [http://weilbacher.org/Mozilla/builds.html NVU] and open the xhtml file.&lt;br /&gt;
* Start to clean it up. The syntax should look like in the beginning, very simple but clean XHTML code, as few &amp;lt;tt&amp;gt;br&amp;lt;/tt&amp;gt; as possible, &amp;lt;tt&amp;gt;h1&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;h2&amp;lt;/tt&amp;gt; for topic formating and &amp;lt;tt&amp;gt;p&amp;lt;/tt&amp;gt; for paragraphs.&lt;br /&gt;
* Kill all table of contents and such things in the XHTML version. We will transform the XHTML to DocBook in a second step and DocBook will take care of that.&lt;br /&gt;
* And if you are brave try to reproduce the images, at least those that make sense. This book is still available second hand, use that as a reference. For sure it would greatly help if someone finds a PDF version of the original document (in case that exists). It might get pretty tricky to reproduce some of the images because IBM created some sample applications for it, use what makes sense to you. For sure the images should be taken from a recent OS/2 or eCS system.&lt;/div&gt;</summary>
		<author><name>Cinc</name></author>
	</entry>
</feed>