1
0
mirror of https://github.com/20kdc/OC-KittenOS.git synced 2024-11-23 10:58:06 +11:00

izzy's plotting a PR, so prepare legalese, complete with the IANAL seal of lack of quality. also a slight neoux API improvement.

Blegh. I really do hate having to deal with legal stuff.
I am going to spend hours looking over legal documents at this rate.

On the one hand, central easy-to-mirror repository: Good

On the other hand, central repository I have to ensure is legally AOK: Not good
This commit is contained in:
20kdc 2018-04-23 00:18:29 +01:00
parent 584108d6af
commit 380c325691
6 changed files with 129 additions and 42 deletions

View File

@ -6,21 +6,64 @@ The first commit is after I got the installer working again after the new compre
That's what the "SYSTEM HEROES" thing is about.
## Authors
## Authors & Licensing
Most code and data here by 20kdc.
Disclaimer: I Am Not A Lawyer. I probably screwed something up in this.
Exceptions must be noted in this section, on a per-file basis, including submitted patches.
It would be really nice if, if I have screwed up, that you tell me how.
## About code/README.asc
Preferably with a solution that fits the technological constraints.
Licensing in this project is rather fluid,
but everything in code/ is unconditionally under the following license:
This is released into the public domain.
No warranty is provided, implied or otherwise.
This will be referred to as "Public Domain".
It should be considered equivalent to CC0, and this is the intent,
but it is smaller, which is somewhat important when optimizing for size.
At this time, the majority of the code/ folder is by 20kdc, but exceptions may occur.
These exceptions must be documented below.
```
No exceptions exist at this time.
```
The repository folder is much more complex, as the structure represents places in a running system,
so licensing information cannot be directly bundled with the files that require it.
The contents of the repository/docs/licensing files represent a "full text" for a given license,
used in order to ensure legal compliance with a given license's "distribute with the program" clauses.
It is assumed that this is sufficient.
A user with access to a package requiring newer licensing information that does not update their licensing package is assumed to have made a willing choice.
If you find this assumption to be incorrect, please request the removal of the affected packages.
The limitations of OpenComputers affect the available choices here, and having separate license copies for each package is not an available choice.
Nor is having a separate license package for each individual license, unless you would prefer an unbrowsable repository.
The contents of the repository/docs/repo-authors file contains a full list of authorship and licensing information, per-file.
## About NOTE-TO-MS.asc
It exists because it needs to exist.
It does not represent the opinions of those who have contributed to the repository,
only those of the person who digitally signed it (20kdc).
## Known Issues (That Aren't KittenOS NEO's Fault)
Touch calibration could be off if the setPrecise support mess didn't work properly.
Wide character support *may* encounter issues due to performance-saving tricks in some old OC versions. The 1.12.2 version being used at LimboCon doesn't have the issue, so it's been dealt with. Point is, not a KittenOS NEO bug if it happens.
Wide character support *may* encounter issues due to performance-saving tricks (?) in some old OC versions.
The 1.12.2 version being used at LimboCon doesn't have the issue, so it's been dealt with. Point is, not a KittenOS NEO bug if it happens.
## Known Issues (That Are KittenOS NEO's Fault But Aren't Really Fixable)
@ -33,7 +76,8 @@ Critical UI gets protected from this by having a set of 4 reserved colours,
If you move a window over another window, that window has to rerender. The alternative is buffering the window. Since memory is a concern, that is not going to happen. Some windows are more expensive to render than others (`klogo` tries to use less RAM if the system is 192K, at the expense of disk access) - move the most expensive window out of the way, since once a window is top-most, moving it around is usually "free".
If the system runs out of memory, the kernel could crash, or alternatively the system goes into a limbo state. You're more or less doomed. Given that almost everything in Lua causes a memory allocation, I'm not exactly sure how I'd be supposed to fix this properly.
If the system runs out of memory, the kernel could crash, or alternatively the system goes into a limbo state. You're more or less doomed.
Given that almost everything in Lua causes a memory allocation, I'm not exactly sure how I'd be supposed to fix this properly.
Any situation where the system fails to boot *may* be fixable with Safe Mode.
This includes if you copied a sufficiently large bit of text into the persistent clipboard, and now Icecap or Everest won't start.
@ -43,7 +87,8 @@ The catch is, it wipes your settings. As the settings are always in RAM, and con
And finally, just because a system can multitask somewhat on 192K doesn't mean it can do the impossible regarding memory usage.
Lesson learned: Cleaner design -> Higher memory usage.
So anyone who wants the design to be made even cleaner should probably reread this paragraph.
(In R0, editing the kernel causes 192K systems to fail to open filedialogs. I've fixed this in R1.)
(In R0, editing the kernel causes 192K systems to fail to open filedialogs. I've fixed this in R1.
I don't know if I've screwed this up in R2, because all this focus on usability improvements has probably gone back a step regarding memory use.)
## Description
@ -75,21 +120,7 @@ As the installer must be loaded in full into RAM, this is not negotiable.
If it can't be kept this way with the current compressor, then a better compressor will have to be made.
Everything following is completely a draft. This is more like a guideline rather than actual policy.
All kernel or security-critical `sys-` process bugs will cause an installer update.
Other bugs will merely result in an updated copy in the repository.
This copy will be copied to installer code if and only if another condition requires the installer code be updated.
The code in the `code/` folder is the code meant for the installer.
Non-installer code is in the `repository/`, and thus accessible via CLAW.
As HTTPS is not used for this due to various weirdness that occurs when I try, I'm hosting the repository and `inst.lua` at `http://20kdc.duckdns.org/neo`.
Requests for additional features in system APIs will NOT cause an installer update.
Frankly I don't even know what policy after that ought to be.
## Building
@ -101,15 +132,11 @@ Firstly, for an uncompressed installer (just to test installer basecode), you us
This kind of has some overlap with `package.sh` so that needs to be dealt with at some point.
Secondly, for a compressed installer, you use `package.sh` to rebuild `code.tar`, then use something along the lines of:
lua heroes.lua `wc -c code.tar` > inst.lua
This will build the compressed installer.
Secondly, for a compressed installer, you use `package.sh` to rebuild `code.tar` and `inst.lua`, which also prepares the final structure of the repository to upload.
## Kernel Architecture
KittenOS NEO is an idea of what a Lua-based efficient microkernel might look like.
KittenOS NEO is an idea of what a Lua-based 'efficient' microkernel might look like.
Scheduling is based entirely around uptime and timers,
which cause something to be executed at a given uptime.
@ -124,8 +151,3 @@ The installer is split into a generic TAR extractor frontend `insthead.lua` and
There was more details on this but the details changed.
## License
This is released into the public domain.
No warranty is provided, implied or otherwise.

View File

@ -7,7 +7,7 @@
-- Braille Neoux Component Callbacks :
-- selectable (boolean)
-- key(window, update, a, c, d)
-- key(window, update, a, c, d, keyFlags)
-- touch(window, update, x, y, button)
-- drag(window, update, x, y, button)
-- drop(window, update, x, y, button)

View File

@ -7,7 +7,7 @@
-- Control reference
-- x/y/w/h: ints, position/size, 1,1 TL
-- selectable: boolean
-- key(window, update, char, code, down) (If this returns something truthy, defaults are inhibited)
-- key(window, update, char, code, down, keyFlags) (If this returns something truthy, defaults are inhibited)
-- touch(window, update, x, y, xI, yI, button)
-- drag(window, update, x, y, xI, yI, button)
-- drop(window, update, x, y, xI, yI, button)
@ -232,7 +232,7 @@ newNeoux = function (event, neo)
end
elseif ev == "key" then
if controls[selIndex] and controls[selIndex].key then
if controls[selIndex].key(window, function () doZone(window, controls[selIndex]) end, a, b, c) then
if controls[selIndex].key(window, function () doZone(window, controls[selIndex]) end, a, b, c, keyFlags) then
return
end
end
@ -316,7 +316,7 @@ newNeoux = function (event, neo)
w = unicode.len(text),
h = 1,
selectable = true,
key = function (window, update, a, c, d)
key = function (window, update, a, c, d, f)
if d then
if a == 13 or a == 32 then
callback(window)
@ -345,7 +345,7 @@ newNeoux = function (event, neo)
w = w,
h = 1,
selectable = true,
key = function (window, update, a, c, d)
key = function (window, update, a, c, d, f)
if d then
if a == 8 then
local str = textprop()

View File

@ -5,11 +5,26 @@
-- Authors: 20kdc
return {
["licensing"] = {
desc = "Legal compliance package, dependency of everything in the repository",
v = 0,
deps = {
},
dirs = {
"docs",
"docs/licensing"
},
files = {
"docs/repo-authors",
"docs/licensing/Public Domain"
},
},
["app-eeprog"] = {
desc = "Example program: EEPROM programmer / copier",
v = 0,
deps = {
"neo"
"neo",
"licensing"
},
dirs = {
"apps"
@ -22,6 +37,7 @@ return {
desc = "KittenOS NEO system documentation",
v = 2,
deps = {
"licensing"
},
dirs = {
"docs"
@ -50,7 +66,8 @@ return {
desc = "NBOX2018 and NPRT2018, a 3D-printing toolbox",
v = 0,
deps = {
"neo"
"neo",
"licensing"
},
dirs = {
"apps"
@ -64,7 +81,8 @@ return {
desc = "Application that schedules a scare after a random time to test svc autostart",
v = 0,
deps = {
"neo"
"neo",
"licensing"
},
dirs = {
"apps"
@ -73,5 +91,5 @@ return {
"apps/svc-ghostie.lua",
"apps/app-ghostcall.lua"
},
},
}
}

View File

@ -0,0 +1,21 @@
-- This is released into the public
-- domain. No warranty is provided,
-- implied or otherwise.
These words in the given order with
the given full stops and commas
(newlines and code comment tags such
as "--" shall be ignored) will be
referred to as "Public Domain" in
the project.
It is intended to be equivalent to
CC0, and whichever interpretation is
less restrictive should be faovured.
The reason it is used rather than CC0
is simply that it is smaller, which
is somewhat important in a memory-
limited system that KittenOS NEO is
designed to run within.

View File

@ -0,0 +1,26 @@
repository/apps/app-eeprog.lua: 20kdc, Public Domain
repository/apps/app-ghostcall.lua: 20kdc, Public Domain
repository/apps/app-nbox2018.lua: 20kdc, Public Domain
repository/apps/app-nprt2018.lua: 20kdc, Public Domain
repository/apps/svc-ghostie.lua: 20kdc, Public Domain
repository/data/app-claw/local.lua: 20kdc, Public Domain
repository/docs/licensing/Public Domain: 20kdc, Public Domain
repository/docs/an-intro: 20kdc, Public Domain
repository/docs/gp-pedan: 20kdc, Public Domain
repository/docs/kn-intro: 20kdc, Public Domain
repository/docs/kn-perms: 20kdc, Public Domain
repository/docs/kn-refer: 20kdc, Public Domain
repository/docs/kn-sched: 20kdc, Public Domain
repository/docs/repo-authors: 20kdc, Public Domain
repository/docs/ul-bmp__: 20kdc, Public Domain
repository/docs/ul-brail: 20kdc, Public Domain
repository/docs/ul-event: 20kdc, Public Domain
repository/docs/ul-fmttx: 20kdc, Public Domain
repository/docs/ul-fwrap: 20kdc, Public Domain
repository/docs/ul-neoux: 20kdc, Public Domain
repository/docs/ul-seria: 20kdc, Public Domain
repository/docs/us-evrst: 20kdc, Public Domain
repository/docs/us-nxapp: 20kdc, Public Domain
repository/docs/us-perms: 20kdc, Public Domain
repository/docs/us-setti: 20kdc, Public Domain