summaryrefslogtreecommitdiff
path: root/kd/oap-0002.md
blob: 8c43ff4ee4ef3a99fd43c0c6fb8767dd7300ddfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
---
stand_alone: true
ipr: none
cat: std
area: Systems Engineering
wg: OSMORA Standards Group

docname: OAP-0002-DRAFT

title: OSMORA Uniform System Interface
abbrev: OUSI
lang: en
kw:
  - ousi
  - posix
author:
- role: editor
  name: Ian M. Moffett
  org: OSMORA
  city: Washington, DC
  region: Southeast
  code: 20020
  email: ian@osmora.org

--- abstract

OSMORA Uniform System Interface is a POSIX replacement for modern computing.

--- middle

# Introduction

POSIX is a foundational standard and has evolved alongside the rapidly changing world of
computing. However as things increasingly advance, it is becoming growingly reasonable to
consider POSIX outdated. Despite its inherent challenges and limitations, the POSIX standard
is still an essential component within many operating systems today. The OUSI standard aims to
replace POSIX while still mantaining compatibility with legacy POSIX applications.

## Purpose

The goal of OUSI is to replace POSIX by being more flexible, intuitive and simplified while
still supporting legacy POSIX applications through compatibility mechanisms such as _POSIXSHIM.


# Requirements Language

{::boilerplate bcp14-tagged}

# Compatability

OUSI maintains compatibility through its _POSIXSHIM layer. In order for legacy
POSIX applications to work with OUSI, they must link with the necessary compatibility
libraries and expose legacy POSIX mechanisms by defining "_POSIXSHIM" globally.

# Standard C library headers

Standard C library headers should be written with OUSI in mind while exposing
legacy POSIX mechanisms if requested.

## Example of stdio.h

~~~~~~~~~~~
#ifndef _STDIO_BRIDGE_H_
#define _STDIO_BRIDGE_H_    1

#if !defined(_POSIXSHIM)
#include <ousi/stdio.h>
#else
#include <posixshim/stdio.h>
#endif
...
#endif  /* !_STDIO_BRIDGE_H_ */
~~~~~~~~~~~