mirror of
https://github.com/20kdc/OC-KittenOS.git
synced 2024-12-26 02:48: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:
parent
584108d6af
commit
380c325691
88
README.md
88
README.md
@ -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.
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
@ -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"
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
21
repository/docs/licensing/Public Domain
Normal file
21
repository/docs/licensing/Public Domain
Normal 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.
|
||||
|
26
repository/docs/repo-authors
Normal file
26
repository/docs/repo-authors
Normal 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
|
||||
|
Loading…
Reference in New Issue
Block a user