Jump to content

Voyager API Basics: Difference between revisions

From NikiWiki
Cla (talk | contribs)
added link to API Design
Triton is a Voyager API
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Voyager]]
Welcome to the Wiki Page explaining the design goals and basic information on the Voyager API.
Welcome to the Wiki Page explaining the design goals and basic information on the Voyager API.


Please see also the page [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API.
Please see also the pages
* [[Voyager_API_Design|The Voyager API Design]] containing the design/coverage of the upcoming Voyager API
* [[Voyager_API_Design_Guide|The Voyager API Design and Implementation Guide]] - containing the methods and rules for implementing the Voyager API


[[Voyager|Voyager Main Page]]
[[Voyager|Voyager Main Page]]
Line 17: Line 20:
Currently we see the following distinction:
Currently we see the following distinction:


* '''Voyager API''' (to be implemented)
* '''Voyager API''' e.g. Triton (to be implemented)


* Supported APIs (to be ported/implemented)
* Supported APIs (to be ported/implemented)
** APIs of supported/integrated libraries
** APIs of supported/integrated libraries
*** GLIB, GTK+, Cairo, Triton, TCP/IP, more...
*** GLIB, GTK+, Cairo, TCP/IP, more...
** Integration APIs for scripting engines
** Integration APIs for scripting engines
*** REXX, Ruby, Python, Perl, more...
*** REXX, Ruby, Python, Perl, more...
** Compatibility APIs
** Compatibility APIs (to be ported/implemented)
*** eCS & OS/2: VIO,MOU,KBD
*** eCS & OS/2: VIO,MOU,KBD
*** Posix ?
*** Posix ?
Line 38: Line 41:


== Design goals for the Voyager API ==
== Design goals for the Voyager API ==
The follwing topics are currently suggested as the design goals for the Voyager API:
Please refer to the [[Voyager_API_Design_Guide|Voyager API Design and Implementation Guide]].
* implement as an object oriented class library
* use Netlabs Object Model (NOM)
** allows bindings for non-OO compiler and script languages
** allows better binary compatibility for external extensions
* no 1-1 implementation of (one of) the underlying libraries
** trade in some flexibility for simplicity
** cover approx. 60-80% of the used cases of the supported libraries
* gain the same reputation concerning quality like the OS/2 API
** see this API as '''advertisement''' for Voyager as an '''exemplary development platform'''

Latest revision as of 07:17, 21 August 2007

Welcome to the Wiki Page explaining the design goals and basic information on the Voyager API.

Please see also the pages

Voyager Main Page

Foreword

The developers of OS/2 and eComStation have always favoured the API of their platform over other platform APIs, because it is solid and stable, well structured, consistently designed and mostly easy to use and understand. In the attempt to create the new Voyager platform, the developers taking part in it intend to provide an API being of the very same, high quality. While not everything can be implemented from the beginning that can be thought of, we aim at a design that can be extended in an easy and meaningful way and thus is and will be future safe. For that we intend to setup methods for assuring quality in the ongoing design of this API.

This page explains the basic thoughts on the API design and concerning this, reflects the current status of discussion in the netlabs.org core team. Nothing is completely decided yet, but we expect that this will not change (much) anymore.

Please see also the section The Voyager API Design. This has been separated from this page, as we expect it to receive much more frequent changes.

What is the Voyager API

It is essential to distinct between all APIs supported by the Voyager platform, and the Voyager API - or better, the Voyager specific API. If we talk about the Voyager API, the latter, so the bold printed part of the following list is meant.

Currently we see the following distinction:

  • Voyager API e.g. Triton (to be implemented)
  • Supported APIs (to be ported/implemented)
    • APIs of supported/integrated libraries
      • GLIB, GTK+, Cairo, TCP/IP, more...
    • Integration APIs for scripting engines
      • REXX, Ruby, Python, Perl, more...
    • Compatibility APIs (to be ported/implemented)
      • eCS & OS/2: VIO,MOU,KBD
      • Posix ?
      • more...?

Reasons for a Voyager API

We see the following reasons to provide a Voyager specific API and not to go for a new platform without a specific API

  • encapsulate Voyager specific and kernel specific implementation details
  • allow program development independently from the supported APIs/libraries
  • provide an easier API compared to the sum of APIs of the supported libraries
    • suitable for most used cases
    • requires only a flatter learning curve - better for beginners

Design goals for the Voyager API

Please refer to the Voyager API Design and Implementation Guide.