Changeset 70


Ignore:
Timestamp:
Oct 21, 2006, 5:22:39 PM (19 years ago)
Author:
ktk
Message:

Fixes from Christian Hennecke

Location:
DOV
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • DOV/ch00.xml

    r56 r70  
    1212      2000</attribution>
    1313
    14       <para>OS/2 - this is an IBM product, correct?</para>
     14      <para>OS/2—this is an IBM product, correct?</para>
    1515
    1616    </blockquote>
     
    2222    <title>Audience</title>
    2323
    24     <para>This book is thought for everyone who loves good software
    25     design - and it is for OS/2 and the users of it.</para>
     24    <para>This book is intended for everyone who loves good software
     25    design—and it is for OS/2 and the users of it.</para>
    2626
    2727    <para>One can write a lot about IBM but the design of OS/2 was
    2828    definitely good, unlike many other software out there. The team
    2929    working on OS/2 implemented some concepts that are still unique in
    30     its way, for example the WPS (Workplace Shell). Designed in the
     30    their way, for example the WPS (Workplace Shell). Designed in the
    3131    early 90&apos;s it shows concepts of object orientation that do not
    32     exist like this in any other desktop until now. Projects like Gnome
    33     claimed to use the WPS as a reference but they still do not reach
    34     the same object orientation as the WPS did many years before. The
    35     WPS itself was built on top of PM, the Presentation Manager. While
    36     no one would use an API as complicated as PM for writing user
    37     interfaces anymore, it still provides components that can not be
    38     found in other systems, like GDI/GPI (Graphic Device
    39     Interface/Graphic Programming Interface). Its matrix based backend
    40     allows one to write complex software like CAD or DTP applications
    41     by design, one does not have to implement all the mathematical
    42     functions on its own.</para>
     32    exist like this in any other desktop until today. Projects like
     33    Gnome claimed to use the WPS as a reference but they still
     34    haven&apos;t reached the same degree of object orientation that the
     35    WPS did many years before. The WPS itself was built on top of PM,
     36    the Presentation Manager. While no one would use an API as
     37    complicated as PM for writing user interfaces anymore, it still
     38    provides components that cannot be found in other systems, like
     39    GDI/GPI (Graphic Device Interface/Graphic Programming Interface).
     40    Its matrix-based backend allows one to write complex software like
     41    CAD or DTP applications by design, it does not have to implement
     42    all the mathematical functions on its own.</para>
    4343
    4444    <para>So where is the link to good software design? It is mainly
     
    4646    writing it. Our group of programmers and users has years of
    4747    experience with both open source and commercial software, in both
    48     using and implementing them and one of the main complaints is the
     48    using and implementing it, and one of the main complaints is the
    4949    lack of quality and documentation in both source code and usage of
    5050    the program. Voyager tries to implement many things that can be
    51     found in OS/2 as open source software, parts of it rewritten from
    52     scratch. We use and program for the WPS and its object oriented
    53     concept for many years, we know the API, we know the power of it
    54     and we also know the pitfalls. So what we gonna do should be done
    55     right from the beginning - simply because we know what works and
    56     what does not work in this object oriented concept.</para>
     51    found in OS/2 as open source software, parts of them rewritten from
     52    scratch. We have been using and programming for the WPS and its
     53    object-oriented concept for many years, we know the API, we know
     54    the power of it, and we also know the pitfalls. So what we are
     55    going to do should be done right from the beginning—simply because
     56    we know what works and what does not work in this object-oriented
     57    concept.</para>
    5758
    58     <para>If you do not know OS/2 nor its concepts so far, do not
    59     worry. We will explain what the technology is about, why it is done
    60     that way and even more important, we will give you examples about
    61     how to use it. That is after all the main idea of this book.</para>
     59    <para>If you do not know OS/2 nor its concepts yet, do not worry.
     60    We will explain what the technology is about, why it is done that
     61    way and, even more important, we will give you examples of how to
     62    use it. That is, after all, the main idea of this book.</para>
    6263
    6364  </section>
     
    6869
    6970    <para>So far credits go out to all the users and especially
    70     developers of OS/2, eComStation and everything related to it. We
    71     reached a lot the past 8 years with netlabs.org and all related
    72     projects and we are looking forward to a fascinating new chapter of
    73     object orientation on the desktop!</para>
     71    developers of OS/2, eComStation, and everything related to them. We
     72    have reached a lot in the past 8 years with netlabs.org and all
     73    related projects and we are looking forward to a fascinating new
     74    chapter of object orientation on the desktop!</para>
    7475
    7576  </section>
  • DOV/ch01.xml

    r69 r70  
    66
    77  <para>Every user of eComStation or OS/2 knows that: When people see
    8   our desktop, they usually ask what kind of Linux you are running. If
    9   you explain them that this has nothing to do with Linux and that the
     8  your desktop, they usually ask what kind of Linux you are running. If
     9  you explain to them that it has nothing to do with Linux and that the
    1010  original system was done by IBM and they called it OS/2, we either
    1111  end up with a big question mark on their face or with a statement
    1212  like <quote>Oh, I used to work with that as well, it was good but I
    13   didn&apos;t had any software/drivers/whatever for it</quote>. People
    14   who worked with it a bit more explain that it was the best thing to
    15   administrate their fileservers, if they were even more skilled they
    16   start telling stories about how they did interact with the desktop
    17   and you can still see a twinkle in their eyes if they talk about it.
    18   The authors of this book are still using OS/2 or its official
    19   successor eComStation every day. We work on it, we write software for
    20   it, we extend it. But we are realistic. We know, that one day there
    21   will not be any more hardware to run it on, at least not in native
    22   mode. We know, that we have to invest already nowadays a lot of time,
    23   money and energy to get things like ACPI done, and to port de-facto
    24   standards like OpenOffice and the Mozilla suite to it. We also know,
    25   that we will never get the source code of the system by IBM, the
    26   thing we would need desperately to fix some very annoying bugs and
    27   limitations in it.</para>
    28 
    29   <para>So we have to think about the options we have. Some of us did
    30   that the past years and some of us came up with more or less detailed
    31   ideas, about how this could be done. Some of the ideas were simply
    32   not realistic but we finally think, that we found a good concept by
    33   now. A concept that provides all the things we love about OS/2, PM
    34   and the WPS but also a concept that solves the limitations and
    35   restrictions of our current system, a concept that has a future. This
    36   is what this book is about.</para>
     13  didn&apos;t have any software/drivers/whatever for it.</quote> People
     14  who have worked with it a bit more explain that it was the best thing
     15  to administrate their fileservers, if they were even more skilled
     16  they start telling stories about how they did interact with the
     17  desktop and you can still see a twinkle in their eyes when they talk
     18  about it. The authors of this book are still using OS/2 or its
     19  official successor eComStation every day. We work on it, we write
     20  software for it, we extend it. But we are realistic. We know that one
     21  day there will not be any more hardware to run it on, at least not in
     22  native mode. We know that already nowadays we have to invest a lot of
     23  time, money, and energy to get things like ACPI done, and to port
     24  de-facto standards like OpenOffice and the Mozilla suite to it. We
     25  also know that we will never get the source code of the system by
     26  IBM, the thing we would desperately need to fix some very annoying
     27  bugs and limitations it has.</para>
     28
     29  <para>So we have to think about the options we have. Some of us have
     30  done that over the past years and some of us came up with more or
     31  less detailed ideas of how this could be done. Some of the ideas were
     32  simply not realistic but we finally think that we have found a good
     33  concept by now. A concept that provides all the things we love about
     34  OS/2, PM, and the WPS but also a concept that solves the limitations
     35  and restrictions of our current system, a concept that has a future.
     36  This is what this book is about.</para>
    3737
    3838  <section>
     
    4141
    4242    <para>In <xref linkend="dov.overview.tvp.h"/> we explain the
    43     history of the Voyager project, including some details about what
    44     IBM planned to do with OS/2 years ago. As we all know, it came
    45     different, OS/2 never got the success it deserved from a technical
    46     point of view, the world is still dominated by Microsoft and
    47     Windows.</para>
     43    history of the Voyager project, including some details of what IBM
     44    planned to do with OS/2 years ago. As we all know, things went
     45    differently. OS/2 never met the success it deserved from a
     46    technical point of view and the world is still dominated by
     47    Microsoft and Windows.</para>
    4848
    4949    <para>After the first presentation of Voyager to the public at
    50     Warpstock Europe 2006 we got a lot of feedback about the idea, both
    51     positive and negative. There were people that got the idea of
     50    Warpstock Europe 2006, we got a lot of feedback about the idea,
     51    both positive and negative. There were people who got the idea of
    5252    Voyager right from the beginning, they understood that we do not
    53     want to take away OS/2 from anyone, nor give up development of new
     53    want to take OS/2 away from anyone, nor give up development of new
    5454    features for eComStation or anything. But still, the negative
    5555    feedback was there, some people absolutely didn&apos;t want to
     
    5757    time into it. So before we go into the glory details let me explain
    5858    why we think Voyager is necessary from our point of view. To
    59     explain that we go more that 10 years back, and we get a bit more
    60     personal than in the other chapters.</para>
     59    explain that we go more that 10 years back in time, and we get a
     60    bit more personal than in the other chapters.</para>
    6161
    6262    <section>
     
    6464      <title>The Reason for OS/2</title>
    6565
    66       <para>The author of those lines was using Windows 3.1 until
    67       sometime in 1994. After a lot of system breakdowns on a rainy
    68       Saturday evening I decided that it can not go on like this
     66      <para>The author of these lines was using Windows 3.1 until some
     67      time in 1994. After a lot of system breakdowns on a rainy
     68      Saturday evening, I decided that it could not go on like that
    6969      anymore. I went to my neighbour who was working at IBM and I told
    70       him <quote>get me this operating system from IBM</quote>. I
     70      him <quote>Get me this operating system from IBM.</quote> I
    7171      didn&apos;t know the name and I didn&apos;t know what it was
    72       about, I just heard that it was more stable than Windows and that
    73       was tempting enough for me. A few weeks later I got a brand new
    74       box of OS/2 Warp 3, went home and installed it. I started the
    75       destkop and shut down the system shortly afterwards, I had no
    76       idea what I am supposed to do with that system now.</para>
    77 
    78       <para>It took me a few weeks to get used to it, I got software
    79       for the new system from German magazines with a lot of shareware
    80       and freeware on it, OS/2 was pretty popular in Germany back then
    81       so there was a market for that. I never used the Windows support
    82       in it a lot, the only application I wanted to run did not work
    83       because it was a MIDI sequencer which required support for sound
    84       cards that were not supported on OS/2. But I still liked it, it
    85       was stable, it was innovative, it was different. And I learned
    86       that from a technical point of view it was far superior than any
    87       Windows, including the upcoming Windows 95.</para>
    88 
    89       <para>The follwoing years I had my advocacy period where I tried
    90       to explain everyone why I am using OS/2, why
    91       <emphasis>they</emphasis> should use OS/2 and why Windows sucks
    92       and Microsoft is evil. I didn&apos;t had much success, for most
    93       friends it was more important to be able to play the latest games
    94       and get drivers for about every hardware they could buy for
    95       money. They lived with the fact that the system was not stable or
    96       that they had to reinstall it every few months from scratch.
    97       Recently one of those friends told me that they were very jealous
    98       back then when I took my OS/2 machine to a demoscene event
    99       because I was the only one in there who could play Quake and burn
    100       a CD at the same time without the system crashing. So at least
    101       for a little moment I had my fame with OS/2.</para>
    102 
    103       <para>My advocacy time is over for a long time, meanwhile I
    104       started a project called netlabs.org and I&apos;ve met a lot of
    105       great people all over the world with the same spirit: The idea
    106       that there is more out there than Windows, MacOS, Linux or any of
    107       the other operating systems. The knowledge that IBM
    108       <emphasis>did</emphasis> do some things right, even if it was not
    109       marketing nor the technical implementation of some of the
    110       concepts they designed. I still use OS/2 every day, even if I
    111       work with many Unix-like operating systems out there every day to
    112       earn my living.</para>
     72      about, I had just heard that it was more stable than Windows and
     73      that was tempting enough for me. A few weeks later I got a brand
     74      new box of OS/2 Warp 3, went home, and installed it. I started
     75      the desktop and shut down the system shortly afterwards. I had no
     76      idea what I was supposed to do with that system at that
     77      point.</para>
     78
     79      <para>It took me a few weeks to get used to it. I got software
     80      for the new system from German magazines which came with a lot of
     81      shareware and freeware. OS/2 was pretty popular in Germany back
     82      then, so there was a market for that. I never used the included
     83      Windows support a lot, the only application I wanted to run did
     84      not work because it was a MIDI sequencer which required support
     85      for sound cards that were not supported on OS/2. But I still
     86      liked it. It was stable, it was innovative, it was different. And
     87      I learned that, from a technical point of view, it was far
     88      superior to any Windows, including the upcoming Windows 95.</para>
     89
     90      <para>The following years I went through my advocacy phase where
     91      I tried to explain why I was using OS/2 to everyone, why
     92      <emphasis>they</emphasis> should use OS/2, and why Windows sucked
     93      and Microsoft was evil. I didn&apos;t have much success because
     94      for most friends it was more important to be able to play the
     95      latest games and get drivers for about every hardware they could
     96      buy for money. They lived with the fact that the system was not
     97      stable or that they had to reinstall it from scratch every few
     98      months. Recently, one of those friends told me that they were
     99      very jealous back then when I took my OS/2 machine to a demoscene
     100      event because I was the only one in there who could play Quake
     101      and burn a CD at the same time without the system crashing. So,
     102      at least for a little moment, I had my fame with OS/2.</para>
     103
     104      <para>My advocacy phase has been over for a long time, meanwhile
     105      I&apos;ve started a project called netlabs.org and I&apos;ve met
     106      a lot of great people from all over the world with the same
     107      spirit: The idea that there is more out there than Windows,
     108      MacOS, Linux, or any of the other operating systems. The
     109      knowledge that IBM <emphasis>did</emphasis> do some things right,
     110      even if that neither included marketing nor the technical
     111      implementation of some of the concepts they designed. I still use
     112      OS/2 every day, even if I work with many of the Unix-like
     113      operating systems out there every day to earn my living.</para>
    113114
    114115      <tip>
     
    118119        <para>netlabs.org was founded in 1997 with the goal of creating
    119120        a center for free Open Source Software for OS/2 and also
    120         eComStation (eCS). Today netlabs.org is one of the largest
     121        eComStation (eCS). Today, netlabs.org is one of the largest
    121122        developers of OS/2 software outside of IBM itself.</para>
    122123
     
    147148      International (SSI) managed to get a license from IBM to
    148149      distribute the core of OS/2 under a new name and extend it with
    149       new software. The final product is now called eComStation and it
    150       is by now the only legal way to get an OS/2 like operating
    151       system, especially since IBM stopped selling OS/2 in January
    152       2006.</para>
     150      new software. The final product is now called eComStation and by
     151      now it has become the only legal way to get an OS/2-like
     152      operating system, especially since IBM stopped selling OS/2 in
     153      January 2006.</para>
    153154
    154155      <para>When eComStation 1.0 got released in 2001 IBM was still
    155156      selling OS/2 but many OS/2 users switched to eComStation. The
    156157      reason was pretty simple: eCS included a lot of things in the
    157       default installation users of OS/2 installed anyway - and much
     158      default installation that users of OS/2 installed anyway—and much
    158159      more. It was no longer necessary to patch a freshly installed
    159       system right away with the latest fixpacks and install software
     160      system with the latest fixpacks right away and install software
    160161      like <application>WarpIN</application>, <application>
    161       XWorkplace</application>, <application>Mozilla</application> and
     162      XWorkplace</application>, <application>Mozilla</application>, and
    162163      all the other applications.</para>
    163164
     
    166167      get much more with it. SSI is currently working on eComStation
    167168      2.0, which will add more important features and which also shows
    168       a clear trend: Use industry standards which are available as open
     169      a clear trend: Use industry standards that are available as open
    169170      source software and integrate them into the WPS. Examples of this
    170171      are <application>OpenOffice.org 2.0</application>, <application>
    171       Samba</application>, <application>CDRecord</application> and much
    172       more.</para>
     172      Samba</application>, <application>CDRecord</application>, and
     173      much more.</para>
    173174
    174175    </section>
     
    178179      <title>The Reason for Voyager</title>
    179180
    180       <para>As described above, eComStatio made it for the first time
    181       possible to add things to our operating system IBM refused to
    182       include all the years before. This is a great thing because it is
    183       now possible to extend and adjust the system to our needs.</para>
    184 
    185       <para>However, it became also clear the past months that the
     181      <para>As described above, eComStation made it possible for the
     182      first time to add things to our operating system that IBM had
     183      refused to include all the years before. This is a great thing
     184      because it is now possible to extend and adjust the system to our
     185      needs.</para>
     186
     187      <para>However, over the past months it also became clear that the
    186188      current kernel of eComStation will reach its design limits one
    187189      day. While we still can get it to work on recent hardware due to
     
    197199      trying to circumvent limitations in the current kernel to get
    198200      something to work. This is very boring work and it does not lead
    199       anywhere, because new hardware is released every day. So instead
     201      anywhere because new hardware is released every day. So instead
    200202      of focusing on interesting work like integrating applications
    201203      into the Workplace Shell, we lose time on moving targets.</para>
     
    219221      </tip>
    220222
    221       <para>The same issue comes up for GUI based applications like
     223      <para>The same issue exists with GUI-based applications like
    222224      <application>Mozilla</application> and <application>
    223       OpenOffice.org</application>. They always rely on a GUI Toolkit,
    224       popular toolkits nowadays are GTK+, qt, wxWidgets and SWT. We
     225      OpenOffice.org</application>. They always rely on a GUI Toolkit.
     226      Popular toolkits nowadays are GTK+, qt, wxWidgets, and SWT. We
    225227      spent and still spend quite some time on getting those toolkits
    226       to work on OS/2 PM, this is also a never ending work because they
     228      to work on OS/2 PM. This also is a never-ending work because they
    227229      get extended on a regular base as well. Again, we loose time on
    228       things that do not bring a direct benefit, they are just required
    229       to get the application itself to OS/2. This costs a lot of time
    230       and also a lot of money, because we have to pay developers to
    231       port those toolkits, otherwise they get never finished in a
    232       reasonable time.</para>
     230      things that are of no immediate benefit, they are just required
     231      to get the application itself to OS/2. This costs both a lot of
     232      time and money, because we have to pay developers to port those
     233      toolkits. Otherwise they never would get finished in a reasonable
     234      time.</para>
    233235
    234236      <para>Earlier in the book we asked you about your motivation to
    235237      use OS/2 back then. We hope you could remember the motivation and
    236       we also hope that it has something to do with the technical
     238      we also hope that it had something to do with the technical
    237239      benefits of OS/2. If you are sceptic against the idea of Voyager
    238240      answer yourself the following questions:</para>
     
    242244        <listitem>
    243245
    244           <para>Are the arguments for OS/2 still valid nowadays in a
     246          <para>Are the arguments for OS/2 still valid nowadays from a
    245247          technical point of view?</para>
    246248
     
    256258      </itemizedlist>
    257259
    258       <para>For sure there is more in OS/2 and eCS than just the WPS,
     260      <para>For sure there is more to OS/2 and eCS than just the WPS,
    259261      we will talk about that later. But in our opinion those concepts
    260262      are not necessarily bound to OS/2 as a kernel and operating
     
    274276    would not make sense to clone the current OS as a whole. The
    275277    community could never do that and even if we could, it
    276     wouldn&apos;t solve the problems we suffer from nowadays.</para>
     278    wouldn&apos;t solve the problems we are suffering from
     279    nowadays.</para>
    277280
    278281    <para>Based on the arguments mentioned before we can come up with a
     
    313316      <listitem>
    314317
    315         <para>Our programmers implement a WPS like environment on top
     318        <para>Our programmers implement a WPS-like environment on top
    316319        of this system.</para>
    317320
     
    320323      <listitem>
    321324
    322         <para>Applications are perfectly integrated into this WPS like
     325        <para>Applications are perfectly integrated into this WPS-like
    323326        desktop.</para>
    324327
     
    335338
    336339    <para>A project like Voyager needs to focus on its main idea,
    337     everything that distracts from that goal should be reconsidered and
    338     if possible be replaced by something existing. We will explain in
    339     detail in the next chapters which core components need to be
    340     written by ourself and which components can be taken from other
    341     projects. We believe that this approach makes it possible to make
    342     Voyager a real piece of software instead of vapoware or a nice
    343     design study, as it is at the time writing.</para>
    344 
    345     <para>It would not make sense to give any statement about how fast
     340    everything that distracts from that goal should be reconsidered
     341    and, if possible, be replaced by something existing. In the next
     342    chapters, we will explain in detail in the next chapters which core
     343    components need to be written by ourself and which components can
     344    be taken from other projects. We believe that this approach makes
     345    it possible to make Voyager a real piece of software instead of
     346    vaporware or a nice design study as it is at the time
     347    writing.</para>
     348
     349    <para>It would not make sense to make any statement about how fast
    346350    this can be implemented and about how many of the mentioned things
    347351    will be reached within the next months and years. But if we do not
  • DOV/ch02.xml

    r69 r70  
    2727      implement an OS/2 personality on top of a Mach 3 Kernel and they
    2828      called the project <emphasis>OS/2 Warp (PowerPC
    29       Edition)</emphasis>. For various reasons the project got canceled
    30       later but before that happened IBM released the book
     29      Edition)</emphasis>. For various reasons the project got
     30      cancelled later but before that happened, IBM released the book
    3131      <citetitle>OS/2 Warp (PowerPC Edition) A First Look</citetitle>
    3232      <citation>SG24-4630</citation>, which documented the basic design
     
    3434
    3535      <para>In 1996 IBM released the last real release of OS/2 with
    36       significant changes in it, named OS/2 Warp 4. They back-ported
    37       some of the things designed for the PowerPC version like GRADD
     36      significant changes, named OS/2 Warp 4. They back-ported some of
     37      the things designed for the PowerPC version like GRADD
    3838      <citation>SG24-4639</citation> to the <quote>old</quote> OS/2
    3939      kernel, but the microkernel project itself was dead. After Warp 4
    4040      IBM just released some updated releases for servers, the end-user
    41       market was at this time already dead inside IBM. The only part
     41      market was already dead inside IBM at this time. The only part
    4242      that still got extended was the OS/2 Kernel, development on that
    4343      stopped end of 2005.</para>
     
    4646
    4747        <para>A more detailed history of OS/2 is available in the
    48         Internet. Michal Necasek did a very detailed overview about the
     48        Internet. Michal Necasek did a very detailed overview of the
    4949        different releases. URL:
    5050        <ulink url="http://pages.prodigy.net/michaln/history/"/></para>
     
    5353
    5454      <para>For several years people in the OS/2 community were
    55       thinking about options we have in mid-term to work with our
     55      thinking about the mid-term options we had to work with our
    5656      beloved operating system. Most of the ideas were focusing on
    5757      rewriting large parts of OS/2, with the goal to have an open
    58       source clone of OS/2. Projects like OSFree started, but they did
    59       not reach much attention so far and there is not much outcome by
    60       the time writing.</para>
     58      source clone of OS/2. Projects like OSFree started but they
     59      haven&apos;t reached much attention so far and there is not much
     60      outcome by the time writing.</para>
    6161
    6262      <para>Bigger projects like netlabs.org never actively joined or
     
    6767      people joining the community. It is also a fact that the design
    6868      of OS/2 in general (with some notable exceptions) is no longer
    69       state of the art. IBM addressed that back then with the
     69      state of the art. Back then, IBM addressed that with the
    7070      microkernel concept but as mentioned before it was neither
    7171      released nor finished.</para>
    7272
    73       <para>With or without IBM, there was always a hard core of
     73      <para>With or without IBM, there always was a hard core of
    7474      programmers and users using and enhancing OS/2. With Warpstock
    75       USA 1996 OS/2 users started to meet each other once a year, one
     75      USA 1996 OS/2 users started to meet each other once a year, three
    7676      year later the European community started to do that as well,
    7777      followed by East-European users a few years later. At around the
     
    8989      Mach 3 microkernel with a FreeBSD and MacOS X personality on top
    9090      of it. For that reason some people at netlabs.org started to get
    91       interest in that project, because of the obvious relations to the
    92       microkernel project of IBM.</para>
    93 
    94       <para>At Developers Workshop 2005 in Dresden Adrian Gschwend of
    95       netlabs.org presented the first thoughts about the perspective of
    96       the OS/2 community. The presentation showed that in mid-term the
    97       community has to move on because we will not be able to support
    98       OS/2 forever on recent hardware. Also, we cannot expect any more
    99       enhancements from IBM. It was also shown that there are things
    100       and concepts worth keeping in OS/2 which should be kept for the
    101       future. Inspired by Darwin, the main statement from a technical
    102       point of view was to create an OS/2 personality on top of Darwin
    103       and implement PM and WPS on top of it.</para>
     91      interested in that project, because of the obvious relations to
     92      the microkernel project of IBM.</para>
     93
     94      <para>At the Developers Workshop 2005 in Dresden Adrian Gschwend
     95      of netlabs.org presented the first thoughts about the perspective
     96      of the OS/2 community. The presentation showed that, in mid-term,
     97      the community will have to move on because we will not be able to
     98      support OS/2 forever on recent hardware. Also, we cannot expect
     99      any more enhancements from IBM. It was also shown that there are
     100      things and concepts worth keeping in OS/2 which should be kept
     101      for the future. Inspired by Darwin, the main statement from a
     102      technical point of view was to create an OS/2 personality on top
     103      of Darwin and implement PM and WPS on top of it.</para>
    104104
    105105      <para>The presentation showed some interesting thoughts but it
    106106      missed the main point: It would not solve any of the issues we
    107       have nowadays with PM or WPS because both of them are not
    108       available in source code. During summer 2005 Bart Van Leeuwen and
    109       Adrian Gschwend pushed the idea further which lead to a radical
    110       change of the focus: One has to think about the desktop first and
    111       then address the system underneath of it.</para>
     107      nowadays have with PM or WPS because neither of them is available
     108      in source code. During summer 2005 Bart Van Leeuwen and Adrian
     109      Gschwend pushed the idea further which lead to a radical change
     110      of the focus: One has to think about the desktop first and then
     111      address the system underneath.</para>
    112112
    113113      <para>In November 2005 the new conclusion was presented at
     
    117117      as many existing technologies as possible and implement something
    118118      like a WPS on top of it and make sure we just write the minimum
    119       needed to get there. There were also ideas presented about how a
    120       backward compatibility to OS/2 applications could be done. An
    121       important statement was also that the kernel does not really play
    122       an important role at the moment and that netlabs.org will most
    123       probably not focus on that until there is more work done on the
    124       desktop part.</para>
     119      needed to get there. There were also ideas presented about how
     120      backward compatibility to OS/2 applications could be done.
     121      Another important statement was that the kernel did not really
     122      play an important role at that moment and that netlabs.org would
     123      most probably not focus on that until more work had been done on
     124      the desktop part.</para>
    125125
    126126      <tip>
     
    130130        <para>eComStation 1.2R is the currently available version of
    131131        this operating system. It is based on IBM personal computer
    132         operating system technology, and includes many UI enhancements,
     132        operating system technology and includes many UI enhancements,
    133133        a reorganisation of the desktop to reflect today&apos;s
    134         Internet-centred computing world, additional networking
     134        Internet-centered computing world, additional networking
    135135        technology to allow connecting to the latest broadband Internet
    136         connections such as Cable, ISDN and xDSL, and the further
    137         improved installation routine makes installing easier than ever
    138         on both cutting-edge and legacy hardware.</para>
     136        connections such as Cable, ISDN, and xDSL, and the further
     137        improved installation routine makes installing on both
     138        cutting-edge and legacy hardware easier than ever.</para>
    139139
    140140        <para>eComStation installs directly from CD on modern hardware
    141141        like AMD Athlon64 based computers, large IDE and SATA
    142         harddrives and supports a host of network-, sound- and
    143         videocards out of the box</para>
     142        harddrives and supports a host of network, sound, and video
     143        cards out of the box</para>
    144144
    145145        <para>For more info on availability, pricing and support
    146         options please go to <ulink url="http://www.ecomstation.com/">http://www.ecomstation.com/</ulink>
    147         </para>
     146        options please go to <ulink url="http://www.ecomstation.com/">
     147        http://www.ecomstation.com/</ulink></para>
    148148
    149149      </tip>
     
    151151      <para>A year after the first presentation of Voyager the next
    152152      Developers Workshop 2006 took place in April 2006 in Biel,
    153       Switzerland. People like Chris Wohlgemuth, Peter Kocsis and
     153      Switzerland. People like Chris Wohlgemuth, Peter Kocsis, and
    154154      Harald Studer presented first concepts and prototypes of core
    155155      components of Voyager, including an object model, a multimedia
    156       subsystem and an OpenGL based window manager. Adrian Gschwend and
    157       Bart Van Leeuwen talked about the next steps the project has to
    158       take and they also clearly showed that eComStation is the current
    159       way to go for the mid-term future. There were also students from
    160       the Berne University of Applied Sciences joining the
    161       presentations which did not know OS/2 and its concepts at all. It
    162       was great to see that those concepts are indeed unique and that
    163       most students liked the idea of Voyager a lot and talked about
    164       joining the project as soon as there are prototypes available.
    165       This is an important step for community itself!</para>
     156      subsystem, and an OpenGL based window manager. Adrian Gschwend
     157      and Bart Van Leeuwen talked about the next steps the project has
     158      to take and they also clearly showed that eComStation is the
     159      current way to go for the mid-term future. There were also
     160      students from the Berne University of Applied Sciences joining
     161      the presentations who did not know OS/2 and its concepts at all.
     162      It was great to see that those concepts are indeed unique and
     163      that most students liked the idea of Voyager a lot and talked
     164      about joining the project as soon as there are prototypes
     165      available. This is an important step for community itself!</para>
    166166
    167167      <para>The release of this book is hopefully the next milestone
    168       for Voyager, as you can see it is far away from being complete
     168      for Voyager. As you can see it is far away from being complete
    169169      but we still think it is an important next step and we look
    170170      forward to contributions from all over the world.</para>
     
    179179      codename for what we discuss in this book. It is a reference to
    180180      the <trademark>Star Trek</trademark> related history of codenames
    181       used by IBM in OS/2 development. The codenames were already used
    182       for a long time at IBM but the marketing department decided to
    183       use the codename <emphasis>Warp</emphasis> as a name for the
     181      used by IBM in OS/2 development. The codenames had already been
     182      used for a long time at IBM but the marketing department decided
     183      to use the codename <emphasis>Warp</emphasis> as a name for the
    184184      public as well with OS/2 Version 3.0 so it became <trademark>OS/2
    185185      Warp 3</trademark>.</para>
     
    189189      <ulink url="http://en.wikipedia.org/wiki/Voyager_1"/>), an
    190190      815-kilogram unmanned probe of the outer solar system and beyond,
    191       launched September 5, 1977, and is currently operational, making
    192       it NASA&apos;s longest-lasting mission. It visited Jupiter and
     191      launched September 5, 1977, and still operational, making it
     192      NASA&apos;s longest-lasting mission. It visited Jupiter and
    193193      Saturn and was the first probe to provide detailed images of the
    194194      moons of these planets.</para>
    195195
    196196      <para>Many programmers contributing to the project decided to
    197       pick up related names as well, like Neptune, the eight and
     197      pick up related names as well, like Neptune, the eighth and
    198198      outermost planet of our solar system which got visited by the
    199199      Voyager 2 project and Triton, the biggest moon of Neptune.</para>
     
    211211
    212212    <para>So far most attempts to <quote>save</quote> OS/2 were to come
    213     up with a group of people which started working on a kernel that
    214     has an OS/2 like API (<filename>DOS*</filename>, <filename>
     213    up with a group of people who started working on a kernel that has
     214    an OS/2-like API (<filename>DOS*</filename>, <filename>
    215215    MOU*</filename>, <filename>VIO*</filename>, <filename>
    216216    KBD*</filename>, ...). There are some essential miss-concepts in
     
    231231
    232232        <para>The OS/2 Kernel was ahead of its time in the early 90ies
    233         but meanwhile even Microsoft did their job and made the Windows
    234         kernel much more stable than it used to be. There are some
    235         things that are still great in the OS/2 kernel like a stable
    236         API, a working ABI and clearly separated parts which do not
    237         mess with each other. The OS/2 kernel is history nowadays, as
    238         porting to new hardware like 64bit processors is impossible to
    239         do.</para>
    240 
    241       </listitem>
    242 
    243       <listitem>
    244 
    245         <para>Even if the OS/2 API was stable and great one day no one
     233        but meanwhile even Microsoft has done its job and made the
     234        Windows kernel much more stable than it used to be. There are
     235        some things that are still great in the OS/2 kernel like a
     236        stable API, a working ABI, and clearly separated parts which do
     237        not mess with each other. The OS/2 kernel is history nowadays,
     238        as porting to new hardware like 64 bit processors is impossible
     239        to do.</para>
     240
     241      </listitem>
     242
     243      <listitem>
     244
     245        <para>Even if the OS/2 API was stable and great one day, no one
    246246        will code like this anymore nowadays. PM programming will scare
    247         away every student that grew up with Java or another high-level
    248         language like C++ and (RAD) toolkits like wxWidgets, qt and
     247        away every student who grew up with Java or another high-level
     248        language like C++ and (RAD) toolkits like wxWidgets, qt, and
    249249        GTK2. The OS/2 PM API is definitely dead and a big
    250250        <emphasis>don&apos;t</emphasis> for the future. There are
     
    259259        drivers and software. Instead of focusing on real stuff like
    260260        WPS integration most time spent on projects is stupid and
    261         boring porting work. This did not bring us further at all, just
    262         a few things were done the OS/2 way.</para>
     261        boring porting work. This did not advance us further at all,
     262        just a few things were done the OS/2 way.</para>
    263263
    264264      </listitem>
     
    281281
    282282    <para>So what are those components we talk about? While we can
    283     define some parts pretty detailed it is not that easy yet for other
    284     parts, simply because we need to do some more work first. We talked
    285     about things like the WPS, that is what about most OS/2 users would
    286     define as the <quote>OS/2 feeling</quote>. And it is actually also
    287     what we, the current developers of Voyager, appreciate most about
    288     OS/2. So it was obvious that we will start with an object model
    289     first - this is the base needed to implement a WPS like desktop.
    290     Another developer has a lot of know how in the multimedia field, so
    291     he started to work on a multimedia subsystem replacement. We will
    292     show more than those two parts but you will see that there is not
    293     much work done on that right now. The reason is simple: We do not
    294     have any developers yet for those parts. We hope that this will
    295     change soon, also because we release this book to the public.
    296     Contributions are very welcome, please see <xref /> to get an
    297     overview about how you can join the projects!</para>
     283    define some parts pretty detailed it is not that easy for other
     284    parts yet, simply because we need to do some more work first. We
     285    talked about things like the WPS, that is what about most OS/2
     286    users would define as the <quote>OS/2 feeling</quote>. And,
     287    actually, it also is what we, the current developers of Voyager,
     288    appreciate most about OS/2. So it was obvious that we would start
     289    with an object model first—this is the base needed to implement a
     290    WPS-like desktop. Another developer has a lot of know-how in the
     291    multimedia field, so he started to work on a multimedia subsystem
     292    replacement. We will show more than those two parts but you will
     293    see that there is not much work done on that right now. The reason
     294    is simple: We do not have any developers yet for those parts. We
     295    hope that this will change soon, also because we release this book
     296    to the public. Contributions are very welcome, please see <xref />
     297    to get an overview about how you can join the projects!</para>
    298298
    299299    <section>
     
    301301      <title>Voyager Object Model</title>
    302302
    303       <para>The WPS is a fully object oriented desktop, instead of
     303      <para>The WPS is a fully object-oriented desktop, instead of
    304304      <emphasis>everything is a file</emphasis> the credo is
    305305      <emphasis>everything is an object</emphasis>. This opens a whole
     
    308308      object model itself in this introduction, a more detailed example
    309309      is covered in <xref linkend="dov.vom"/>. If you don&apos;t know
    310       the WPS at all you might want to download the eComStation Demo
     310      the WPS at all, you might want to download the eComStation Demo
    311311      CD, which is available for free at
    312312      <ulink url="http://www.ecomstation.com"/>.</para>
     
    330330      an object oriented fashion of C.</para>
    331331
    332       <para>The development of the new Voyager Object Model is done on
    333       OS/2 so far. However, the code is very portable and should
    334       compile on other platforms as well.</para>
     332      <para>The development of the new Voyager Object Model has been
     333      done on OS/2 so far. However, the code is very portable and
     334      should compile on other platforms as well.</para>
    335335
    336336    </section>
     
    345345      <firstterm>GPI/GDI</firstterm> (Graphic Programming
    346346      Interface/Graphic Device Interface). The PM is responsible for
    347       drawing common controls, window handling, input handling and
    348       more, while GPI/GDI provides a powerful matrix based subsystem
     347      drawing common controls, window handling, input handling, and
     348      more, while GPI/GDI provides a powerful matrix-based subsystem
    349349      which can be used to draw about everything one might need.
    350350      Applications like Maul Publisher on OS/2 show how powerful the
     
    355355      means they cannot be extended and we cannot fix known bugs in it.
    356356      So it was important to look for alternatives and it was clear
    357       from the beginning that we will not rewrite something as complex
     357      from the beginning that we would not rewrite something as complex
    358358      as GPI by ourself.</para>
    359359
    360       <para>To find a replacement for PM was not that difficult: Almost
     360      <para>Finding a replacement for PM was not that difficult: Almost
    361361      all big applications or toolkits on Unix-like systems like
    362       OpenOffice.org, Mozilla, SWT and wxWidgets are based on GTK+. The
    363       second option would be the qt-toolkit which is also quite popular
    364       among developers. The problem of the qt-toolkit is its license:
    365       It is dual-licensed as GPL or a commercial license. GPL actually
    366       forces the developer to release everything under the GPL license
    367       as well, which is absolutely not the intention of Voyager. GTK+
    368       however is licensed under the LGPL license, which does not have
    369       that strict restriction, it does not force the developer to
    370       release the source code of his application. That is for example
    371       also the reason why commercial products like Acrobat Reader on
    372       Linux are using GTK+. GTK+ is also a very modern and powerful
    373       toolkit which is well maintained. The only drawback is its quite
    374       rudimentary documentation but this is unfortunately a general
    375       problem of many open source software and toolkits
    376       available.</para>
    377 
    378       <para>To find a replacement for GPI was tricky. For quite some
     362      OpenOffice.org, Mozilla, SWT, and wxWidgets are based on GTK+.
     363      The second option would be the qt-toolkit which is also quite
     364      popular among developers. The problem of the qt-toolkit is its
     365      license: It is dual-licensed as GPL or a commercial license. GPL
     366      actually forces the developer to release everything under the GPL
     367      license as well, which is absolutely not the intention of
     368      Voyager. GTK+ however is licensed under the LGPL license, which
     369      does not have that strict restriction and does not force the
     370      developer to release the source code of his application. That is,
     371      for instance, also the reason why commercial products like
     372      Acrobat Reader on Linux are using GTK+. GTK+ is also a very
     373      modern and powerful toolkit which is well maintained. The only
     374      drawback is its quite rudimentary documentation but unfortunately
     375      this is a general problem of the many open source software and
     376      toolkits available.</para>
     377
     378      <para>Finding a replacement for GPI was tricky. For quite some
    379379      time we did not know what to choose as a replacement for that.
    380       But during 2005 there was a newcomer in this area getting a lot
     380      But in 2005 there was a newcomer in this area that received a lot
    381381      of attention: Cairo Graphics Library (
    382382      <ulink url="http://www.cairographics.org"/>). Cairo basically
    383383      provides everything one might ask for as GPI programmer, like
    384       FIXME. And developers start using it, the Mozilla foundation
    385       announced that the Geko rendering engine will move its rendering
    386       to Cairo, OpenOffice.org also wants to use it for its rendering
     384      FIXME. And developers start using it: The Mozilla foundation
     385      announced that the Geko rendering engine would move its rendering
     386      to Cairo, OpenOffice.org also wants to use it for its rendering,
    387387      and the GTK+ team moves a lot of drawing functions to Cairo as
    388388      well. So it looks like the perfect choice as a GPI replacement
    389       and the first feedback from OS/2 developers that know GPI well
     389      and the first feedback from OS/2 developers who know GPI well
    390390      seems to prove that.</para>
    391391
    392       <para>While Cairo is already ported to OS/2 we still work on
    393       getting GTK+ to work as well. We hope to reach that point soon
     392      <para>While Cairo has already been ported to OS/2 we still work
     393      on getting GTK+ to work as well. We hope to reach that point soon
    394394      with the support of Everblue (Xlib-Layer for OS/2:
    395395      <ulink url="http://everblue.netlabs.org"/>).</para>
     
    402402
    403403      <para>OS/2 introduced a modern multimedia subsystem in 1994. It
    404       provided the abstraction of codecs and transports, which made it
     404      provided the abstraction of codecs and transports, which makes it
    405405      possible that even a media player from 1994 can play new codecs
    406406      like FLAC and Ogg Vorbis, simply because the system knows the
    407       codec for it. Also, it does nto matter if the stream is coming
     407      codec for it. Also, it does not matter if the stream is coming
    408408      from a local harddisk or if it is provided by an Internet radio
    409       station using the http protocol. Any application using this
     409      station using the HTTP protocol. Any application using this
    410410      interface can handle any protocol and codec supported by the
    411411      system, without the need to implement that for each one of them
     
    417417      similar concept from scratch. This is also necessary nowadays,
    418418      back when MMPM in OS/2 got designed no one talked about things
    419       like HDTV, Satellite TV and DivX yet so it does have its
    420       limitations for todays requirements.</para>
     419      like HDTV, Satellite TV, and DivX, so it does have its
     420      limitations for today&apos;s requirements.</para>
    421421
    422422      <para>We think it is important that developers get a modern
    423       multimedia subsystem right from the beginning, like this we can
     423      multimedia subsystem right from the beginning, so we can
    424424      integrate the applications according to it and integrate them
    425425      even better into the desktop. More information about Triton can
     
    432432      <title>Neptune</title>
    433433
    434       <para>On Unix-like systems the desktop is usually running inside
    435       an X-session, the most known implementation of that is called
    436       Xorg. Xorg implements Xlib and provides an interface for graphics
    437       device drivers. This interface can be binary only and the two big
    438       players nowadays, Nvidia and ATI, both provide just binary only
     434      <para>On Unix-like systems the desktop usually runs inside an
     435      X-session, the most known implementation of that is called Xorg.
     436      Xorg implements Xlib and provides an interface for graphics
     437      device drivers. This interface can be binary-only and the two big
     438      players nowadays, Nvidia and ATI, both provide just binary-only
    439439      drivers.</para>
    440440
    441       <para>Desktops like KDE, Gnome and Xfce are no longer implemented
    442       on Xlib itself, instead they use high-level toolkits like GTK+ or
    443       qt. For historical reasons it seems to be impossible right now to
    444       get rid of Xlib itself, which does not make sense anymore because
    445       no (properly written) application nowadays is using Xlib for
    446       drawing. This is all done by the toolkit itself, on GTK+ for
    447       example this is now done using Cairo Library. qt is using his own
    448       rendering engine called Arthur.</para>
     441      <para>Desktops like KDE, Gnome, and Xfce are no longer
     442      implemented on Xlib itself, instead they use high-level toolkits
     443      like GTK+ or qt. For historical reasons it seems to be impossible
     444      right now to get rid of Xlib itself, which does not make sense
     445      anymore because no (properly written) application nowadays is
     446      using Xlib for drawing. This is all done by the toolkit itself.
     447      On GTK+ this is now done using the Cairo Library, for instance.
     448      qt is uses its own rendering engine called Arthur.</para>
    449449
    450450      <para>Unfortunately there were no successful attempts so far to
     
    454454      beside this, most users never use that feature anyway. But the
    455455      current trend on Unix-like systems finally goes into the
    456       direction of using OpenGL accelerated backends and doing the
     456      direction of using OpenGL-accelerated backends and doing the
    457457      whole rendering in it. This is exactly where Neptune comes
    458458      in.</para>
     
    460460      <para>Neptune will provide a window manager for both Xlib and
    461461      Cario, where Cairo is using the Glitz backend for OpenGL
    462       accelerated rendering. Unlike PM on OS/2 Xlib is not providing
     462      accelerated rendering. Unlike PM on OS/2, Xlib is not providing
    463463      any methods for window management so we need a 3rd party
    464464      application doing that and this is the job of so called window
     
    474474      first.</para>
    475475
    476       <para>Note that Neptune is not critical for Voyager, even if it
     476      <para>Note that Neptune is not critical for Voyager. Even if it
    477477      would be <emphasis>nice to have</emphasis>, Voyager can and will
    478478      run on a normal Xlib based Xorg with any window manager.</para>
     
    486486      <para>Many OS/2 users adore the OS/2 kernel for various reasons.
    487487      It is pretty stable, it provides a stable ABI for device drivers,
    488       the multitasking is still excellent and it is fast. Most probably
    489       it will be possible to work with this kernel for another few
    490       years on recent hardware, but it will not go on like this
     488      the multitasking is still excellent, and it is fast. Most
     489      probably it will be possible to work with this kernel for another
     490      few years on recent hardware, but it will not go on like this
    491491      forever. Hardware and technology is changing and so do kernels.
    492       The OS/2 kernel did not get any major enhancements since around
    493       1997 so it is time to think about an alternative.</para>
     492      The OS/2 kernel hasn&apos;t received any major enhancements since
     493      around 1997, so it is time to think about an alternative.</para>
    494494
    495495      <para>It is absolutely clear that whatever option might come up,
    496496      we will <emphasis>not</emphasis> write device drivers on our own
    497       again. This was and is one of the major problems we had and no
    498       one of the core developers of Voyager wants to spend time on that
     497      again. This was and is one of the major problems we had and none
     498      of the core developers of Voyager wants to spend time on that
    499499      anymore.</para>
    500500
     
    502502      of options available nowadays and it would be a waste of time to
    503503      write yet another one by ourself. Voyager will compile on as many
    504       kernels and possible, the team will abstract everything in a way
     504      kernels as possible, the team will abstract everything in a way
    505505      that the kernel is just one of the decisions we take.</para>
    506506
     
    522522    <para>Voyager is open source software. This means everything which
    523523    belongs to the core of Voyager is available in source code and thus
    524     everyone can have a look at the implementation and even better,
     524    everyone can have a look at the implementation and, even better,
    525525    improve and extend it.</para>
    526526
    527527    <para>There are plenty of open source licenses available and the
    528     Voyager core team discussed for quite some time which one we should
    529     choose for Voyager. Our requirements were:</para>
     528    Voyager core team has discussed which one we should choose for
     529    Voyager for quite some time. Our requirements were:</para>
    530530
    531531    <itemizedlist>
     
    555555
    556556        <para>Because of the binary compatible object model, it must be
    557         possible to provide binary only extensions to classes and
     557        possible to provide binary-only extensions to classes and
    558558        objects, both open source and closed source, commercial or
    559559        non-commercial.</para>
     
    573573    <para>This already made one thing pretty clear: The license cannot
    574574    be the GNU General Public License (GPL). The GPL prohibits the use
    575     of binary only components, as we can see very well in the endless
     575    of binary-only components, as we can see very well in the endless
    576576    discussions in the Linux kernel mailing-list. And what is a binary
    577577    object model for when we cannot use its advantage because of the
     
    599599    <para>We decided to use a dual-licensing of the core to avoid
    600600    endless discussions with those programmers who think the GPL solves
    601     every problem, it will most probably not make everyone happy but
     601    every problem. It will most probably not make everyone happy but
    602602    the LGPL is the only logical way for our requirements in that case.
    603603    The CDDL gives more freedom to us because we as developers can also
     
    613613
    614614    <para>For sure we hope that many programmers release their classes,
    615     objects and applications as open source software. In best case
     615    objects, and applications as open source software. In best case
    616616    under the same license as we do. But we also think that a project
    617617    like Voyager can just get its full potential when we open up the
    618     market for commercial companies and programmers as well - and most
     618    market for commercial companies and programmers as well—and most
    619619    open source desktops nowadays do not provide that freedom.</para>
    620620
  • DOV/ch03.xml

    r67 r70  
    1313      <title>Introduction</title>
    1414
    15       <para>The desktop follows a document centered approach in
    16       contrast to other task driven implementations. This means the
     15      <para>The desktop follows a document-centered approach in
     16      contrast to other task-driven implementations. This means the
    1717      user is working with documents to be found on the system rather
    1818      then starting some kind of application and working inside of
    1919      that. For example to modify a text document the user just clicks
    20       the document and doesn&apos;t has to care which application is
     20      the document and doesn&apos;t have to care which application is
    2121      able to handle that kind of document because the system will find
    22       an appropriate one. In task driven environments the user first
     22      an appropriate one. In task-driven environments the user first
    2323      starts an application, for example a word processor, and opens
    24       documents from inside the application using a file chose
     24      documents from inside the application using a file selection
    2525      dialog.</para>
    2626
    27       <para>All documents, files etc. the user interacts with are
     27      <para>All documents, files, etc. that the user interacts with are
    2828      objects because the desktop is based on an object model described
    2929      elsewhere in this document. This means the desktop is fully
    30       object orientated with all the benefits coming from that. So
     30      object-orientated with all the benefits coming from that. So
    3131      it&apos;s possible to have data encapsulated in the objects and
    3232      subclassing of document or file classes is not even allowed but
     
    4040
    4141      <para>The user of the desktop is dealing with objects. Files for
    42       example are not classic files like on other systems but are real
     42      example are not classic files like on other systems but real
    4343      objects in the sense that they might carry additional information
    4444      which is encapsulated and come with object methods to work with
     
    4747      copy()</function> API of the operating system. Instead a method
    4848      on the file object is invoked and the file object handles the
    49       copying on itself.</para>
     49      copying by itself.</para>
    5050
    5151      <para>Every object is an instance of a class which is registered
     
    5353      any time (a restart of the desktop may be necessary). They are
    5454      implemented as shared libraries and link dynamically to the
    55       desktop. Basing the whole desktop on an object model which allows
    56       subclassing and class replacement without recompiling it&apos;s
    57       possible for independent developers to create new classes without
    58       access to the desktop source code. In fact developers are
    59       encouraged not to modify sources to extend the desktop but to
    60       create new classes to add functions to the desktop. By replacing
    61       classes with new versions overriding inherited methods it&apos;s
    62       possible to modify the behaviour of any class of the
    63       desktop.</para>
     55      desktop. By basing the whole desktop on an object model which
     56      allows subclassing and class replacement without recompiling
     57      it&apos;s possible for independent developers to create new
     58      classes without access to the desktop source code. In fact
     59      developers are encouraged not to modify sources to extend the
     60      desktop but to create new classes to add functions to the
     61      desktop. By replacing classes with new versions overriding
     62      inherited methods it&apos;s possible to modify the behaviour of
     63      any class of the desktop.</para>
    6464
    6565      <para>The root class of the whole desktop is
     
    8787      the trackname. One may implement the latter by adding code to
    8888      handle ID3 tags of MP3 files and code to handle the same for OGG
    89       files. In the end <classname>MMAudio</classname> would contain
     89      files. In the end, <classname>MMAudio</classname> would contain
    9090      code for every tag format known. If a developer ever came up with
    91       a new audio codec and a different tag architecture the maintainer
    92       of the desktop or the <classname>MMAudio</classname> class had to
    93       be asked to add additional parsing code. Even after the code
    94       addition users can&apos;t immediately benefit from it because the
    95       next release may only be available at some point in the
    96       future.</para>
     91      a new audio codec and a different tag architecture, the
     92      maintainer of the desktop or the <classname>MMAudio</classname>
     93      class had to be asked to add additional parsing code. Even after
     94      the code addition users can&apos;t immediately benefit from it
     95      because the next release may only be available at some point in
     96      the future.</para>
    9797
    9898      <section id="dov.vd.g.s">
     
    165165
    166166            <para>Objects are shown in a list with each row containing
    167             the icon, the name and details about the object in question
    168             like filesize or creation date.</para>
     167            the icon, the name, and details about the object in
     168            question like filesize or creation date.</para>
    169169
    170170          </listitem>
     
    193193      this kind of traversing the filesystem breaks the object metaphor
    194194      of the desktop. Changing the folder one is in has to also change
    195       position, size and shape of the browser window because in the
     195      position, size, and shape of the browser window because in the
    196196      object world the view should represent the underlying object. Not
    197197      taking into account the object settings confuses the user because
     
    205205      <title>Templates</title>
    206206
    207       <para>New documents, files or other objects are created by
     207      <para>New documents, files, or other objects are created by
    208208      dragging an object template somewhere into the filesystem.
    209209      Templates normally are located in the central Templates folder
     
    215215      <note>
    216216
    217         <para>Voyager-desktop compliant applications handling documents
     217        <para>Voyager-desktop-compliant applications handling documents
    218218        should create the appropriate templates for the user.</para>
    219219
  • DOV/ch05.xml

    r65 r70  
    11<?xml version='1.0'?>
    2 <!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3b2/docbookx.dtd">
     2<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3b2/docbookx.dtd">
    33<chapter id="dov.triton">
    4        
    5         <title>Triton</title>
    6        
    7         <section id="dov.triton.i">
    8                
    9                 <title>Introducton</title>
    10                
    11                 <para>The multimedia subsystem of Voyager (called Triton) is a plugin-based,
    12                         extendable, flexible architecture, originally designed for stable playback
    13                         of any kind of multimedia streams from any kind of source. The system is not yet
    14                         capable of recording, it&apos;s planned for later versions.</para>
    15                
    16                 <para>The MMIO subsystem has a layered architecture. It means that in order to play
    17                         back a given multimedia content, the subsystem builds a logical structure of at
    18                         least five levels. This structure describes the inner structure of the given
    19                         multimedia content, and makes it possible to divide the processing and playback
    20                         of multimedia contents into different modular parts, making it easier to find
    21                         and fix the bugs in plugins. The modular structure also helps so that once support
    22                         for a new format is added, it will probably work from all the supported sources
    23                         (like from local file or from an Internet stream), and vice versa, a new plugin for
    24                         a new source will make it possible to play back all the supported formats without
    25                         any additional code.</para>
    26                
    27                 <para>The current version of MMIO has the following layers defined:</para>
    28                
    29                 <itemizedlist>
    30                        
    31                         <listitem>
    32                                
    33                                 <para>Medium</para>
    34                                
    35                         </listitem>
    36                        
    37                         <listitem>
    38                                
    39                                 <para>Channel</para>
    40                                
    41                         </listitem>
    42                        
    43                         <listitem>
    44                                
    45                                 <para>Elementary Stream</para>
    46                                
    47                         </listitem>
    48                        
    49                         <listitem>
    50                                
    51                                 <para>Raw Stream</para>
    52                                
    53                         </listitem>
    54                        
    55                         <listitem>
    56                                
    57                                 <para>Terminator Nodes (Visualization)</para>
    58                                
    59                         </listitem>
    60                        
    61                 </itemizedlist>
    62                
    63                 <para>These layers and the layered structure are handled internally by the system,
    64                         and all these are built up from a URL. This effectively means that playing back a
    65                         given file (or any kind of multimedia content) is as simple as opening a URL with
    66                         one MMIO API call, and sending it a Play command.</para>
    67                
    68                 <para>These URLs look this simple:</para>
    69                
    70                 <itemizedlist>
    71                        
    72                         <listitem>
    73                                
    74                                 <para>file://c:/Musics/My_Favourite.mp3</para>
    75                                
    76                         </listitem>
    77                        
    78                         <listitem>
    79                                
    80                                 <para>
    81                                         http://local.video.store.com:8080/Horror/Killing_The_Killer.avi</para>
    82                                
    83                         </listitem>
    84                        
    85                         <listitem>
    86                                
    87                                 <para>rtsp://radio.com/live.ra</para>
    88                                
    89                         </listitem>
    90                        
    91                 </itemizedlist>
    92                
    93         </section>
    94        
    95         <section id="dov.triton.bo">
    96                
    97                 <title>Basic Overview</title>
    98                
    99                 <section id="dov.triton.bo.plptsg">
    100                        
    101                         <title>Plugin List, Process Tree, Stream Groups</title>
    102                        
    103                         <para>There are three main expressions of MMIO with which one has to be familiar
    104                                 with.</para>
    105                        
    106                         <para>The Plugin List means the list of available MMIO Plugins from where the
    107                                 MMIO subsystem can select plugins to be used for the playback of a given URL.
    108                                 This list can be queried and examined, so the application will get an idea
    109                                 about the capabilities of the system it runs on. Alternatively, it can
    110                                 decide to de-register old plugins and register new ones.</para>
    111                        
    112                         <para>The Process Tree is probably the most important thing of the MMIO
    113                                 subsystem. It is a tree structure, having different kind of nodes connected
    114                                 together, describing the layered architecture of the multimedia content
    115                                 to be played back. This tree is built somewhat automatically by the MMIO
    116                                 subsystem, using the registered plugins of the Plugin List. The top of the
    117                                 tree has a URL node, containing only the URL string itself, while the bottom
    118                                 of the tree will have Terminator nodes, the <quote>Visualization</quote>
    119                                 nodes for every supported stream of the URL. Here is an example of an
    120                                 imaginary URL and the Process Tree created from it by the MMIO
    121                                 subsystem:</para>
    122                        
    123                         <para>URL: http://www.server.com/Films/LOTR_Trailer.avi</para>
    124                        
    125                         <para>As you can see, this example has an AVI file containing one video stream in
    126                                 DIVX format, one audio stream for the video in MPEG Audio format, and one
    127                                 Subtitle stream for all these, in DVD Subtitle format. All these elementary
    128                                 streams (ES) have a raw stream (RS) descendant, meaning that a decoder has
    129                                 been found for all of them, and all of them has a Terminator (Term) node,
    130                                 meaning that all the decoder outputs can be sent to the screen or speaker, so
    131                                 all of them can be played back. More about node types and their purpose
    132                                 later.</para>
    133                        
    134                         <para>Having three Terminator nodes means that we have three independent
    135                                 streams we can play back. We could send a <command>Start
    136                                 Playback</command> command to all the three of these Terminator nodes,
    137                                 which would mean that the playback of all these streams would be started, and
    138                                 we would be able to watch and listen to the movie.</para>
    139                        
    140                         <para>However, usually it&apos;s not this simple. Nothing guarantees that
    141                                 starting the playback this way, independently, stream-by-stream, will
    142                                 result in an experience where the video and the audio goes together. There
    143                                 must be <quote>lipsync</quote> as it&apos;s usually called, meaning that
    144                                 the audio and the video has to go together in order to have an enjoyable
    145                                 experience.</para>
    146                        
    147                         <para>That&apos;s the reason why there is a third expression in the MMIO
    148                                 subsystem to get familiar with: the Stream Groups.</para>
    149                        
    150                         <para>Stream Groups are logical entities, grouping Terminator nodes
    151                                 together. One can create a Stream Group from the three Terminator nodes of
    152                                 the example above, and send the <command>Start Playback</command>
    153                                 command to the Stream Group. The Stream Group itself will take care of the
    154                                 lipsync, and will make sure that all the streams grouped together in it will
    155                                 move and act together.</para>
    156                        
    157                 </section>
    158                
    159                 <section id="dov.triton.bo.nntpt">
    160                        
    161                         <title>Nodes and Node Types in the Process Tree</title>
    162                        
    163                         <para>The Process Tree is built from nodes. Every node in the tree has a type, and
    164                                 has a string describing the format which that node can provide. Using the
    165                                 Process Tree example we had before, there is a node which is a URL node (its
    166                                 type is URL), and can provide <quote>urls</quote> to any other nodes that
    167                                 are connecting to it.</para>
    168                        
    169                         <para>The MMIO subsystem looked through its list of available plugins, and
    170                                 found a media handler plugin that can handle that URL node. Using that
    171                                 plugin, a new node was created, which is a Media node, describing the media
    172                                 contained in the URL. This new Media node was created by the media handler
    173                                 plugin (http handler plugin, in our example), and that plugin also checked
    174                                 what kind of stuff it can provide. It saw that the URL contains a file, which
    175                                 has the extension of <computeroutput>.avi</computeroutput>, so it
    176                                 reports that this node can provide an AVI container format to everyone who
    177                                 connects to it. As it&apos;s a Media node, everybody will be able to use the
    178                                 node&apos;s type-specific functions, like seeking, reading and other
    179                                 Media-specific functions.</para>
    180                        
    181                         <para>The MMIO subsystem tried to <quote>grow</quote> this process tree, so
    182                                 again looked into its plugin list, and found a plugin which can handle AVI
    183                                 container formats (cont_AVI format strings). This is the AVI demuxer
    184                                 plugin. Using that plugin, new nodes of the Process Tree could be built. The
    185                                 first one is a Channel node, which describes logical channels in a given
    186                                 container. There is only one channel in an AVI file, but for example the MPEG
    187                                 Transport Stream containers, used by the digital television broadcasting
    188                                 systems have a lot of channels in one container, namely a lot of TV channels,
    189                                 and each of the channels have at least one Video elementary stream and one or
    190                                 more Audio elementary streams. So, the Channel node is to be able to group the
    191                                 available Elementary Stream Nodes of a given container.</para>
    192                        
    193                         <para>It&apos;s still the AVI demuxer plugin which examined the AVI file format
    194                                 (using the Media node to read and seek in the file) and found out that there are
    195                                 three Elementary Streams (ES) in this AVI file, namely one video stream in
    196                                 DIVX format, one audio stream in MPEG Audio format, and a subtitle stream
    197                                 with DVD-format subtitles. So, the AVI demuxer plugin has created four new
    198                                 nodes into the Process Tree.</para>
    199                        
    200                         <para>The ball is at the side of the MMIO subsystem again. It&apos;s still trying
    201                                 to grow the process tree, so it&apos;s looking for plugins to handle the
    202                                 three new Nodes of the tree. It&apos;s lucky again, and based on the plugin
    203                                 list, it finds decoder plugins for all the three formats, namely a DIVX
    204                                 decoder plugin for the es_v_DIVX format, an MPEG Audio decoder plugin for
    205                                 the es_a_MPA format, and a DVD Subtitle decoder/renderer plugin for the
    206                                 es_s_DVD format.</para>
    207                        
    208                         <para>Using these decoder plugins for the corresponding nodes, each of the
    209                                 decoder plugins create one new Node into the tree, a Raw Stream Node. The Raw
    210                                 Stream (RS) terminology means decoded elementary streams, so while
    211                                 reading data from Elementary Streams would give encoded/compressed data,
    212                                 reading from Raw Streams gives decoded/uncompressed data, which can be
    213                                 directly shown on the screen, or sent to the audio card.</para>
    214                        
    215                         <para>The MMIO subsystem does not give up, and still checks if it has plugins to
    216                                 handle the new nodes. It finds a video output plugin, which is capable of
    217                                 displaying YUV422 formatted images on the screen, and connects it to the
    218                                 video RS node. Also finds an audio output plugin which can handle the PCM
    219                                 audio format, and connects it to the audio RS node. The subtitle RS node will
    220                                 be handled by a subtitle visualizer plugin. All these plugins have one thing
    221                                 in common: they <quote>eat</quote> data from the upper layers, but do not
    222                                 provide any data, as they consume them by showing it. That&apos;s why they
    223                                 are called Terminator Nodes, because they terminate a given branch of the
    224                                 Process Tree.</para>
    225                        
    226                         <para>Now the MMIO subsystem can see that all the leafs of the Process Tree are
    227                                 either Terminator nodes (so there is no task to do with them), or there was no
    228                                 plugin to handle them (none of the nodes are such in our example). So, it gives
    229                                 up growing the tree, the Process Tree has been built successfully.</para>
    230                        
    231                 </section>
    232                
    233         </section>
    234        
    235         <section id="dov.triton.ums">
    236                
    237                 <title>Using the MMIO Subsystem</title>
    238                
    239                 <section id="dov.triton.ums.f">
    240                        
    241                         <title>Foreword</title>
    242                        
    243                         <para>Now that you&apos;ve reached this chapter, you&apos;ve either read
    244                                 through the hard part, or you&apos;ve simply skipped the previous parts. If
    245                                 you&apos;ve read through the previous parts, you know the basic idea behind
    246                                 the MMIO subsystem, and you&apos;ll be able to use it in a more advanced way,
    247                                 customize it for your needs. However, if you haven&apos;t read through the
    248                                 previous parts, it&apos;s not a problem, the MMIO subsystem can be used very
    249                                 easily without that knowledge too, <xref
    250                                         linkend="dov.triton.ums.qu"/> is for you then.</para>
    251                        
    252                 </section>
    253                
    254                 <section id="dov.triton.ums.qu">
    255                        
    256                         <title>Quick Usage</title>
    257                        
    258                         <para>This chapter is to be done.</para>
    259                        
    260                 </section>
    261                
    262                 <section id="dov.triton.ums.au">
    263                        
    264                         <title>Advanced Usage</title>
    265                        
    266                         <para>This chapter is to be done.</para>
    267                        
    268                         <para>Using the MMIO subsystem:</para>
    269                        
    270                         <itemizedlist>
    271                                
    272                                 <listitem>
    273                                        
    274                                         <para>Init MMIO</para>
    275                                        
    276                                 </listitem>
    277                                
    278                                 <listitem>
    279                                        
    280                                         <para>Query/Manage plugin list</para>
    281                                        
    282                                 </listitem>
    283                                
    284                                 <listitem>
    285                                        
    286                                         <para>Open URL</para>
    287                                        
    288                                 </listitem>
    289                                
    290                                 <listitem>
    291                                        
    292                                         <para>Create stream group</para>
    293                                        
    294                                 </listitem>
    295                                
    296                                 <listitem>
    297                                        
    298                                         <para>Start playback</para>
    299                                        
    300                                 </listitem>
    301                                
    302                                 <listitem>
    303                                        
    304                                         <para>Clean up</para>
    305                                        
    306                                 </listitem>
    307                                
    308                         </itemizedlist>
    309                        
    310                 </section>
    311                
    312         </section>
    313        
    314         <section id="dov.triton.maap">
    315                
    316                 <title>The MMIO API for Application Programmers</title>
    317                
    318                 <para>This chapter is to be done.</para>
    319                
    320         </section>
    321        
    322         <section id="dov.triton.cpms">
    323                
    324                 <title>Creating Plugins for the MMIO Subsystem</title>
    325                
    326                 <para>This chapter is to be done.</para>
    327                
    328         </section>
    329        
    330         <section id="dov.triton.pg">
    331                
    332                 <title>Programming Guidelines</title>
    333                
    334                 <para>This chapter is to be done.</para>
    335                
    336                 <para>Use MMIOmem.h and the Triton Porting Layer, where possible, so the plugins
    337                         will be portable, memory leaks will be detectable and trackable.</para>
    338                
    339         </section>
    340        
     4
     5  <title>Triton</title>
     6
     7  <section id="dov.triton.i">
     8
     9    <title>Introducton</title>
     10
     11    <para>The multimedia subsystem of Voyager (called Triton) is a
     12    plugin-based, extendable, flexible architecture, originally
     13    designed for stable playback of any kind of multimedia streams from
     14    any kind of source. The system is not yet capable of recording,
     15    it&apos;s planned for later versions.</para>
     16
     17    <para>The MMIO subsystem has a layered architecture. It means that
     18    in order to play back a given multimedia content, the subsystem
     19    builds a logical structure of at least five levels. This structure
     20    describes the inner structure of the given multimedia content and
     21    makes it possible to divide the processing and playback of
     22    multimedia contents into different modular parts, making it easier
     23    to find and fix the bugs in plugins. The modular structure also
     24    helps so that once support for a new format is added, it will
     25    probably work from all the supported sources (like from local file
     26    or from an Internet stream), and vice versa, a new plugin for a new
     27    source will make it possible to play back all the supported formats
     28    without any additional code.</para>
     29
     30    <para>The current version of MMIO has the following layers
     31    defined:</para>
     32
     33    <itemizedlist>
     34
     35      <listitem>
     36
     37        <para>Medium</para>
     38
     39      </listitem>
     40
     41      <listitem>
     42
     43        <para>Channel</para>
     44
     45      </listitem>
     46
     47      <listitem>
     48
     49        <para>Elementary Stream</para>
     50
     51      </listitem>
     52
     53      <listitem>
     54
     55        <para>Raw Stream</para>
     56
     57      </listitem>
     58
     59      <listitem>
     60
     61        <para>Terminator Nodes (Visualization)</para>
     62
     63      </listitem>
     64
     65    </itemizedlist>
     66
     67    <para>These layers and the layered structure are handled internally
     68    by the system, and all these are built up from a URL. This
     69    effectively means that playing back a given file (or any kind of
     70    multimedia content) is as simple as opening a URL with one MMIO API
     71    call, and sending it a Play command.</para>
     72
     73    <para>These URLs look this simple:</para>
     74
     75    <itemizedlist>
     76
     77      <listitem>
     78
     79        <para>file://c:/Musics/My_Favourite.mp3</para>
     80
     81      </listitem>
     82
     83      <listitem>
     84
     85        <para>http://local.video.store.com:8080/Horror/Killing_The_Killer.avi</para>
     86
     87      </listitem>
     88
     89      <listitem>
     90
     91        <para>rtsp://radio.com/live.ra</para>
     92
     93      </listitem>
     94
     95    </itemizedlist>
     96
     97  </section>
     98
     99  <section id="dov.triton.bo">
     100
     101    <title>Basic Overview</title>
     102
     103    <section id="dov.triton.bo.plptsg">
     104
     105      <title>Plugin List, Process Tree, Stream Groups</title>
     106
     107      <para>There are three main expressions of MMIO with which one has
     108      to be familiar with.</para>
     109
     110      <para>The Plugin List means the list of available MMIO Plugins
     111      from where the MMIO subsystem can select plugins to be used for
     112      the playback of a given URL. This list can be queried and
     113      examined, so the application will get an idea about the
     114      capabilities of the system it runs on. Alternatively, it can
     115      decide to de-register old plugins and register new ones.</para>
     116
     117      <para>The Process Tree is probably the most important thing of
     118      the MMIO subsystem. It is a tree structure, having different kind
     119      of nodes connected together, describing the layered architecture
     120      of the multimedia content to be played back. This tree is built
     121      somewhat automatically by the MMIO subsystem, using the
     122      registered plugins of the Plugin List. The top of the tree has a
     123      URL node, containing only the URL string itself, while the bottom
     124      of the tree will have Terminator nodes, the
     125      <quote>Visualization</quote> nodes for every supported stream of
     126      the URL. Here is an example of an imaginary URL and the Process
     127      Tree created from it by the MMIO subsystem:</para>
     128
     129      <para>URL: http://www.server.com/Films/LOTR_Trailer.avi</para>
     130
     131      <para>As you can see, this example has an AVI file containing one
     132      video stream in DIVX format, one audio stream for the video in
     133      MPEG Audio format, and one Subtitle stream for all these, in DVD
     134      Subtitle format. All these elementary streams (ES) have a raw
     135      stream (RS) descendant, meaning that a decoder has been found for
     136      all of them, and all of them has a Terminator (Term) node,
     137      meaning that all the decoder outputs can be sent to the screen or
     138      speaker, so all of them can be played back. More about node types
     139      and their purpose later.</para>
     140
     141      <para>Having three Terminator nodes means that we have three
     142      independent streams we can play back. We could send a <command>
     143      Start Playback</command> command to all the three of these
     144      Terminator nodes, which would mean that the playback of all these
     145      streams would be started, and we would be able to watch and
     146      listen to the movie.</para>
     147
     148      <para>However, usually it&apos;s not this simple. Nothing
     149      guarantees that starting the playback this way, independently,
     150      stream-by-stream, will result in an experience where the video
     151      and the audio goes together. There must be <quote>lipsync</quote>
     152      as it&apos;s usually called, meaning that the audio and the video
     153      has to go together in order to have an enjoyable
     154      experience.</para>
     155
     156      <para>That&apos;s the reason why there is a third expression in
     157      the MMIO subsystem to get familiar with: the Stream Groups.</para>
     158
     159      <para>Stream Groups are logical entities, grouping Terminator
     160      nodes together. One can create a Stream Group from the three
     161      Terminator nodes of the example above, and send the <command>
     162      Start Playback</command> command to the Stream Group. The Stream
     163      Group itself will take care of the lipsync, and will make sure
     164      that all the streams grouped together in it will move and act
     165      together.</para>
     166
     167    </section>
     168
     169    <section id="dov.triton.bo.nntpt">
     170
     171      <title>Nodes and Node Types in the Process Tree</title>
     172
     173      <para>The Process Tree is built from nodes. Every node in the
     174      tree has a type, and has a string describing the format which
     175      that node can provide. Using the Process Tree example we had
     176      before, there is a node which is a URL node (its type is URL),
     177      and can provide <quote>urls</quote> to any other nodes that are
     178      connecting to it.</para>
     179
     180      <para>The MMIO subsystem looked through its list of available
     181      plugins, and found a media handler plugin that can handle that
     182      URL node. Using that plugin, a new node was created, which is a
     183      Media node, describing the media contained in the URL. This new
     184      Media node was created by the media handler plugin (http handler
     185      plugin, in our example), and that plugin also checked what kind
     186      of stuff it can provide. It saw that the URL contains a file,
     187      which has the extension of <computeroutput>.avi</computeroutput>,
     188      so it reports that this node can provide an AVI container format
     189      to everyone who connects to it. As it&apos;s a Media node,
     190      everybody will be able to use the node&apos;s type-specific
     191      functions, like seeking, reading and other Media-specific
     192      functions.</para>
     193
     194      <para>The MMIO subsystem tried to <quote>grow</quote> this
     195      process tree, so again looked into its plugin list, and found a
     196      plugin which can handle AVI container formats (cont_AVI format
     197      strings). This is the AVI demuxer plugin. Using that plugin, new
     198      nodes of the Process Tree could be built. The first one is a
     199      Channel node, which describes logical channels in a given
     200      container. There is only one channel in an AVI file, but for
     201      example the MPEG Transport Stream containers, used by the digital
     202      television broadcasting systems have a lot of channels in one
     203      container, namely a lot of TV channels, and each of the channels
     204      have at least one Video elementary stream and one or more Audio
     205      elementary streams. So, the Channel node is to be able to group
     206      the available Elementary Stream Nodes of a given container.</para>
     207
     208      <para>It&apos;s still the AVI demuxer plugin which examined the
     209      AVI file format (using the Media node to read and seek in the
     210      file) and found out that there are three Elementary Streams (ES)
     211      in this AVI file, namely one video stream in DIVX format, one
     212      audio stream in MPEG Audio format, and a subtitle stream with
     213      DVD-format subtitles. So, the AVI demuxer plugin has created four
     214      new nodes into the Process Tree.</para>
     215
     216      <para>The ball is at the side of the MMIO subsystem again.
     217      It&apos;s still trying to grow the process tree, so it&apos;s
     218      looking for plugins to handle the three new Nodes of the tree.
     219      It&apos;s lucky again, and based on the plugin list, it finds
     220      decoder plugins for all the three formats, namely a DIVX decoder
     221      plugin for the es_v_DIVX format, an MPEG Audio decoder plugin for
     222      the es_a_MPA format, and a DVD Subtitle decoder/renderer plugin
     223      for the es_s_DVD format.</para>
     224
     225      <para>Using these decoder plugins for the corresponding nodes,
     226      each of the decoder plugins create one new Node into the tree, a
     227      Raw Stream Node. The Raw Stream (RS) terminology means decoded
     228      elementary streams, so while reading data from Elementary Streams
     229      would give encoded/compressed data, reading from Raw Streams
     230      gives decoded/uncompressed data, which can be directly shown on
     231      the screen, or sent to the audio card.</para>
     232
     233      <para>The MMIO subsystem does not give up, and still checks if it
     234      has plugins to handle the new nodes. It finds a video output
     235      plugin, which is capable of displaying YUV422 formatted images on
     236      the screen, and connects it to the video RS node. Also finds an
     237      audio output plugin which can handle the PCM audio format, and
     238      connects it to the audio RS node. The subtitle RS node will be
     239      handled by a subtitle visualizer plugin. All these plugins have
     240      one thing in common: they <quote>eat</quote> data from the upper
     241      layers, but do not provide any data, as they consume them by
     242      showing it. That&apos;s why they are called Terminator Nodes,
     243      because they terminate a given branch of the Process Tree.</para>
     244
     245      <para>Now the MMIO subsystem can see that all the leafs of the
     246      Process Tree are either Terminator nodes (so there is no task to
     247      do with them), or there was no plugin to handle them (none of the
     248      nodes are such in our example). So, it gives up growing the tree,
     249      the Process Tree has been built successfully.</para>
     250
     251    </section>
     252
     253  </section>
     254
     255  <section id="dov.triton.ums">
     256
     257    <title>Using the MMIO Subsystem</title>
     258
     259    <section id="dov.triton.ums.f">
     260
     261      <title>Foreword</title>
     262
     263      <para>Now that you&apos;ve reached this chapter, you&apos;ve
     264      either read through the hard part, or you&apos;ve simply skipped
     265      the previous parts. If you&apos;ve read through the previous
     266      parts, you know the basic idea behind the MMIO subsystem, and
     267      you&apos;ll be able to use it in a more advanced way, customize
     268      it for your needs. However, if you haven&apos;t read through the
     269      previous parts, it&apos;s not a problem, the MMIO subsystem can
     270      be used very easily without that knowledge too,
     271      <xref linkend="dov.triton.ums.qu"/> is for you then.</para>
     272
     273    </section>
     274
     275    <section id="dov.triton.ums.qu">
     276
     277      <title>Quick Usage</title>
     278
     279      <para>This chapter is to be done.</para>
     280
     281    </section>
     282
     283    <section id="dov.triton.ums.au">
     284
     285      <title>Advanced Usage</title>
     286
     287      <para>This chapter is to be done.</para>
     288
     289      <para>Using the MMIO subsystem:</para>
     290
     291      <itemizedlist>
     292
     293        <listitem>
     294
     295          <para>Init MMIO</para>
     296
     297        </listitem>
     298
     299        <listitem>
     300
     301          <para>Query/Manage plugin list</para>
     302
     303        </listitem>
     304
     305        <listitem>
     306
     307          <para>Open URL</para>
     308
     309        </listitem>
     310
     311        <listitem>
     312
     313          <para>Create stream group</para>
     314
     315        </listitem>
     316
     317        <listitem>
     318
     319          <para>Start playback</para>
     320
     321        </listitem>
     322
     323        <listitem>
     324
     325          <para>Clean up</para>
     326
     327        </listitem>
     328
     329      </itemizedlist>
     330
     331    </section>
     332
     333  </section>
     334
     335  <section id="dov.triton.maap">
     336
     337    <title>The MMIO API for Application Programmers</title>
     338
     339    <para>This chapter is to be done.</para>
     340
     341  </section>
     342
     343  <section id="dov.triton.cpms">
     344
     345    <title>Creating Plugins for the MMIO Subsystem</title>
     346
     347    <para>This chapter is to be done.</para>
     348
     349  </section>
     350
     351  <section id="dov.triton.pg">
     352
     353    <title>Programming Guidelines</title>
     354
     355    <para>This chapter is to be done.</para>
     356
     357    <para>Use MMIOmem.h and the Triton Porting Layer, where possible,
     358    so the plugins will be portable, memory leaks will be detectable
     359    and trackable.</para>
     360
     361  </section>
     362
    341363</chapter>
     364
  • DOV/ch10.xml

    r60 r70  
    3434    now there are many open questions and maybe you have a lot of know
    3535    how about kernel design. So you could for example contribute to the
    36     kernel chapter in this book to make sure, we get more details in
    37     there. It is up to you, feel free to contact us on any of the ways
    38     mentioned here.</para>
     36    kernel chapter in this book to make sure that we get more details
     37    in there. It is up to you, feel free to contact us on any of the
     38    ways mentioned here.</para>
    3939
    4040    <para>Please introduce yourself quickly when you join IRC or the
     
    6767
    6868      <para>If you do not like mailing-lists you can use a web/news
    69       (nntp) interace as well. This is provided by gmane.org, a mail to
    70       news and vice versa gateway. The Voyager mailinglist can be found
    71       here: <ulink url="http://dir.gmane.org/"/></para>
     69      (nntp) interace as well. This is provided by gmane.org, a
     70      mail-to-news and vice versa gateway. The Voyager mailinglist can
     71      be found here: <ulink url="http://dir.gmane.org/"/></para>
    7272
    7373    </section>
     
    8383
    8484      <para>Please check this page as well for instructions about
    85       Subversion. There structure of the Voyager repoistory is a bit
     85      Subversion. The structure of the Voyager repository is a bit
    8686      complex, the most recent information about how to get it can be
    8787      found in TRAC as well.</para>
     
    9595    <title>Users</title>
    9696
    97     <para>Users can contribute as well to Voyager right now. While
     97    <para>Users can contribute to Voyager right now as well. While
    9898    there is nothing to test yet and probably won&apos;t be for the
    9999    next months, it is important that people know Voyager right from
     
    101101    confusion among users about what Voyager is, or will be. Also, many
    102102    people think that netlabs.org will now stop developing for eCS and
    103     OS/2. Again, this is absolutely not the case and you can help us,
    104     if you talk to users about that and explain the idea of Voyager.
    105     The worst thing that could happen is when the already small OS/2
    106     and eCS community splits up into two parts. So help us doing
     103    OS/2. Again, this is absolutely not the case and you can help us if
     104    you talk to users about that and explain the idea of Voyager. The
     105    worst thing that could happen would be when the already small OS/2
     106    and eCS community splitted up into two parts. So help us doing
    107107    Voyager advocacy but also listen to the arguments and fears of
    108108    people who do not understand or like the idea of Voyager yet. It is
    109109    important that we take them seriously and try to show them that
    110110    their arguments are not valid. Even sceptical people might come up
    111     with great ideas we did not think of, if this is the case, let us
     111    with great ideas we did not think of. If this is the case, let us
    112112    know. See <xref linkend="dov.contrib.d"/> about how to get in touch
    113113    with us.</para>
     
    120120
    121121        <para>Present Voyager to your local usergroup, distribute this
    122         book to people and show presentations available at netlabs.org.
    123         The Developers Workshop presentation is also available as
    124         Ogg-file so you could listen to it to get some more
    125         details.</para>
     122        book to people, and show presentations available at
     123        netlabs.org. The Developers Workshop presentation is also
     124        available as Ogg-file so you could listen to it to get some
     125        more details.</para>
    126126
    127127      </listitem>
     
    145145
    146146        <para>Try to bring Voyager into the news, write articles about
    147         if if you have contacts. We need to attract more people and
     147        it if you have contacts. We need to attract more people and
    148148        getting news coverage might help a lot about that.</para>
    149149
     
    173173
    174174    <para>Explain where to get the strings to translate, explain how
    175     one can get Subversion commiter for a language etc.</para>
     175    one can get Subversion commiter for a language, etc.</para>
    176176
    177177    <para>It is a bit too early for that, will be described as soon as
     
    185185
    186186    <para>As you can imagine, Voyager is a very big project. So far all
    187     programmers working on Voyager do this in their spare time for
    188     free. While this works for quite some open source project it is
    189     also a fact, that almost all big successful projects do have
    190     fulltime programmers working on it. The benefit is quite obvious,
    191     there is a difference if one can work 8 hours a day, 5 days a week
    192     on a project or just a few hours a week or in best case a few hours
     187    programmers working on Voyager do this for free in their
     188    spare-time. While this works for quite some open source project, it
     189    is also a fact that almost all big successful projects do have
     190    fulltime programmers working on them. The benefit is quite obvious:
     191    There is a difference if one can workon a project 8 hours a day, 5
     192    days a week or just a few hours a week or in best case a few hours
    193193    a day. Projects like OpenOffice.org, Mozilla but also Gnome and KDE
    194194    do have fulltime programmers.</para>
     
    196196    <para>netlabs.org already hires developers, on project or permanent
    197197    base. So far the development was payed with sponsoring from users
    198     and companies, if there was not enough money the founder of
    199     netlabs.org, Adrian Gschwend, payed the difference on its own.
     198    and companies, and if there was not enough money, the founder of
     199    netlabs.org, Adrian Gschwend, payed the difference on his own.
    200200    During the last three years Adrian Gschwend invested around
    201201    20&apos;000 Euro of his very own money into netlabs.org.</para>
    202202
    203203    <para>While this was ok for the last three years he has to change
    204     that now. netlabs.org should get self-supporting. </para>
     204    that now. netlabs.org should get self-supporting.</para>
    205205
    206206  </section>
  • DOV/foreword.xml

    r54 r70  
    11<?xml version='1.0'?>
    2 <!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3b2/docbookx.dtd">
     2<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
     3        "http://www.oasis-open.org/docbook/xml/4.3b2/docbookx.dtd">
    34<preface>
    45       
     
    89                <para>For years the book <citetitle pubwork="book">The Design of
    910                        OS/2</citetitle> <citation>Kogan92</citation> was recommended by
    10                         programmers as a reference for everyone who wants to write an operating system.
     11                        programmers as a reference for everyone who wanted to write an operating system.
    1112                        The book gave an insight into the design of a modern operating system at the time
    1213                        but was still easy to read for not that experienced programmers.</para>
    1314               
    14                 <para>This book tries to provide the same for <quote>The Voyager
    15                         Project</quote>, an attempt to create an object oriented workplace for the 21th
    16                         century. The ultimate goal is to make it easy for new programmers to join the
    17                         project. This book will give you a starting point for that.</para>
     15                <para>This book tries to provide the same for <quote>The Voyager Project</quote>,
     16                        an attempt to create an object oriented workplace for the 21th century. The
     17                        ultimate goal is to make it easy for new programmers to join the project. This book
     18                        will give you a starting point for that.</para>
    1819               
    1920                <para>&mdash; <author>
Note: See TracChangeset for help on using the changeset viewer.