mirror of
https://github.com/20kdc/OC-KittenOS.git
synced 2025-04-05 04:08:39 +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.
|
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 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)
|
## Known Issues (That Aren't KittenOS NEO's Fault)
|
||||||
|
|
||||||
Touch calibration could be off if the setPrecise support mess didn't work properly.
|
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)
|
## 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 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.
|
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.
|
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.
|
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.
|
Lesson learned: Cleaner design -> Higher memory usage.
|
||||||
So anyone who wants the design to be made even cleaner should probably reread this paragraph.
|
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
|
## 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.
|
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.
|
Frankly I don't even know what policy after that ought to be.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## Building
|
## 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.
|
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:
|
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.
|
||||||
|
|
||||||
lua heroes.lua `wc -c code.tar` > inst.lua
|
|
||||||
|
|
||||||
This will build the compressed installer.
|
|
||||||
|
|
||||||
## Kernel Architecture
|
## 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,
|
Scheduling is based entirely around uptime and timers,
|
||||||
which cause something to be executed at a given uptime.
|
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.
|
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 :
|
-- Braille Neoux Component Callbacks :
|
||||||
-- selectable (boolean)
|
-- selectable (boolean)
|
||||||
-- key(window, update, a, c, d)
|
-- key(window, update, a, c, d, keyFlags)
|
||||||
-- touch(window, update, x, y, button)
|
-- touch(window, update, x, y, button)
|
||||||
-- drag(window, update, x, y, button)
|
-- drag(window, update, x, y, button)
|
||||||
-- drop(window, update, x, y, button)
|
-- drop(window, update, x, y, button)
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
-- Control reference
|
-- Control reference
|
||||||
-- x/y/w/h: ints, position/size, 1,1 TL
|
-- x/y/w/h: ints, position/size, 1,1 TL
|
||||||
-- selectable: boolean
|
-- 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)
|
-- touch(window, update, x, y, xI, yI, button)
|
||||||
-- drag(window, update, x, y, xI, yI, button)
|
-- drag(window, update, x, y, xI, yI, button)
|
||||||
-- drop(window, update, x, y, xI, yI, button)
|
-- drop(window, update, x, y, xI, yI, button)
|
||||||
@ -232,7 +232,7 @@ newNeoux = function (event, neo)
|
|||||||
end
|
end
|
||||||
elseif ev == "key" then
|
elseif ev == "key" then
|
||||||
if controls[selIndex] and controls[selIndex].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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -316,7 +316,7 @@ newNeoux = function (event, neo)
|
|||||||
w = unicode.len(text),
|
w = unicode.len(text),
|
||||||
h = 1,
|
h = 1,
|
||||||
selectable = true,
|
selectable = true,
|
||||||
key = function (window, update, a, c, d)
|
key = function (window, update, a, c, d, f)
|
||||||
if d then
|
if d then
|
||||||
if a == 13 or a == 32 then
|
if a == 13 or a == 32 then
|
||||||
callback(window)
|
callback(window)
|
||||||
@ -345,7 +345,7 @@ newNeoux = function (event, neo)
|
|||||||
w = w,
|
w = w,
|
||||||
h = 1,
|
h = 1,
|
||||||
selectable = true,
|
selectable = true,
|
||||||
key = function (window, update, a, c, d)
|
key = function (window, update, a, c, d, f)
|
||||||
if d then
|
if d then
|
||||||
if a == 8 then
|
if a == 8 then
|
||||||
local str = textprop()
|
local str = textprop()
|
||||||
|
@ -5,11 +5,26 @@
|
|||||||
-- Authors: 20kdc
|
-- Authors: 20kdc
|
||||||
|
|
||||||
return {
|
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"] = {
|
["app-eeprog"] = {
|
||||||
desc = "Example program: EEPROM programmer / copier",
|
desc = "Example program: EEPROM programmer / copier",
|
||||||
v = 0,
|
v = 0,
|
||||||
deps = {
|
deps = {
|
||||||
"neo"
|
"neo",
|
||||||
|
"licensing"
|
||||||
},
|
},
|
||||||
dirs = {
|
dirs = {
|
||||||
"apps"
|
"apps"
|
||||||
@ -22,6 +37,7 @@ return {
|
|||||||
desc = "KittenOS NEO system documentation",
|
desc = "KittenOS NEO system documentation",
|
||||||
v = 2,
|
v = 2,
|
||||||
deps = {
|
deps = {
|
||||||
|
"licensing"
|
||||||
},
|
},
|
||||||
dirs = {
|
dirs = {
|
||||||
"docs"
|
"docs"
|
||||||
@ -50,7 +66,8 @@ return {
|
|||||||
desc = "NBOX2018 and NPRT2018, a 3D-printing toolbox",
|
desc = "NBOX2018 and NPRT2018, a 3D-printing toolbox",
|
||||||
v = 0,
|
v = 0,
|
||||||
deps = {
|
deps = {
|
||||||
"neo"
|
"neo",
|
||||||
|
"licensing"
|
||||||
},
|
},
|
||||||
dirs = {
|
dirs = {
|
||||||
"apps"
|
"apps"
|
||||||
@ -64,7 +81,8 @@ return {
|
|||||||
desc = "Application that schedules a scare after a random time to test svc autostart",
|
desc = "Application that schedules a scare after a random time to test svc autostart",
|
||||||
v = 0,
|
v = 0,
|
||||||
deps = {
|
deps = {
|
||||||
"neo"
|
"neo",
|
||||||
|
"licensing"
|
||||||
},
|
},
|
||||||
dirs = {
|
dirs = {
|
||||||
"apps"
|
"apps"
|
||||||
@ -73,5 +91,5 @@ return {
|
|||||||
"apps/svc-ghostie.lua",
|
"apps/svc-ghostie.lua",
|
||||||
"apps/app-ghostcall.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