on master help sign in
Merge pull request #1320 from urbit/mike/app-openbsd

Add OpenBSD Apprenticeship

commit9f4d2197a3476dd3a2502c50a8bc66c93bb3ea56 authormikeosborne <mike@urbit.org> dateFri 28 Jan 2022, 16:11 (5 years ago) parent6ec308586fba09
1 file changed+48
content/grants/app-openbsd.md+48
content/grants/app-openbsd.mdnew file+48
@@ -0,0 +1,48 @@
1++++
2+title = "Apprenticeship: Resurrect the OpenBSD Build"
3+date = "2022-01-28"
4+
5+[taxonomies]
6+grant_type = [ "Apprenticeship" ]
7+grant_category = [ "Runtime" ]
8+
9+[extra]
10+image = ""
11+description = "Get the project to the point where it works on OpenBSD"
12+reward = 1
13+mentor = "~silsyn-wathep"
14+assignee = ""
15+completed = false
16+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=A0124&prefill_Grant+Name=Resurrect%20OpenBSD%20Build"
17++++
18+
19+### Background
20+
21+OpenBSD is a simple, secure, and well-audited operating system; in fact, it is a strong contender for “simplest, most secure, most well-audited” Earth operating system. It is the only production OS I would feel comfortable slapping on a computer on the internet without the ability to update its software. As such it’s a natural candidate for top-tier Urbit hosts who want to differentiate themselves in terms of security. If we think there’s going to be a long time before Nock hardware is realized, then surely it’s worth having something like that in the interim.
22+
23+One of the first things I did when I was onboarding to the project was to get it to build on OpenBSD. This sort of work is a natural fit for a new contributor, since build issues are often shallow and give someone fairly broad exposure to a codebase.
24+
25+At some point the Urbit build switched to Nix; Nix does not work on OpenBSD, so the build went by the wayside for a while. At some other point, there was a pretty substantial performance regression introduced on OpenBSD. Since then, the mingw port got done; this opened up a door for building on non-nix platforms, so an OpenBSD build is now back on the table.
26+
27+So the current situation is: it is possible, with some work, to manually build Urbit on OpenBSD. However, this is not automated. And once Urbit is built, it runs extremely, unusably slowly, due to the outstanding performance regression.
28+
29+### Scope
30+
31+Get the project to the point where it works on OpenBSD as a first class citizen. Steps involved are probably something like:
32+
33+- Go through the hazing ritual of building Urbit on OpenBSD manually
34+- Submit patches to add automated OpenBSD build support
35+- Do some creative benchmarking to locate the performance issue. Likely candidates: urbit/worker socket IPC, LMDB, and Nock compilation
36+- Fix the performance issue
37+- (Maybe:) Set up an OpenBSD CI runner
38+- (Extra bonus work:) make use of new OpenBSD security features like unveil(2) and pledge(2)
39+
40+### Requirements
41+
42+- Some existing experience with OpenBSD strongly recommended
43+- Some familiarity with autoconf / automake / make / bash
44+- Some familiarity with C
45+- Interest in working on the Urbit runtime
46+- Self-directedness, ability to debug and troubleshoot creatively
47+- Some familiarity with Nock
48+- Optional: nix, hoon