on master help sign in
Merge pull request #1462 from urbit/mike/notifications-protocol

Add Notifications Protocol apprenticeship

commit56159d770a7f03ad632128d3c9dcbad7169f103e authorthelifeandtimes <tlatfcp@protonmail.com> dateFri 6 May 2022, 12:25 (4 years ago) parentf0243b687ed996
1 file changed+63
content/grants/notifications-protocol.md+63
content/grants/notifications-protocol.mdnew file+63
@@ -0,0 +1,63 @@
1++++
2+title = "UF Apprenticeship Grant: Notifications Protocol"
3+date = "2022-05-04"
4+
5+[taxonomies]
6+grant_type = [ "Apprenticeship" ]
7+grant_category = [ "Core Dev" ]
8+
9+[extra]
10+image = ""
11+description = "Build a new network protocol to Urbit to handle notifying subscribers when a new datum is published"
12+reward = "1 star"
13+mentor = "~rovnys-ricfer"
14+assignee = ""
15+completed = false
16+canceled = false
17+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0163&prefill_Grant+Name=Notifications%20Protocol"
18+
19++++
20+
21+### Project Description
22+
23+This project adds a new network protocol to Urbit to handle notifying subscribers when a new datum is published. A rough spec can be found [here](https://gist.github.com/belisarius222/390daafc146f7c6ddd98836e61dc307f). Without this protocol, upcoming "solid-state subscriptions", which use the remote scry protocol, will have too much latency for chat.
24+
25+Ideally this project would be done by two engineers, but one experienced C programmer could also do it. The apprentices will write this code themselves, not as part of a larger team. This work is entirely in Vere; any supporting work in the Arvo kernel will be handled by the mentor. ~rovnys-ricfer, who wrote the spec and a lot of the existing Urbit networking code, will mentor the engineers.
26+
27+### Deliverables
28+
29+The major deliverable is a new Ames I/O driver in Vere that implements the notifications protocol.
30+
31+### User Stories
32+
33+- Live subscribers receive notifications promptly and handle them correctly.
34+- Sessions die and restart properly.
35+- Memory is freed on the publisher ship when a session dies.
36+- Heartbeat packets keep firewall pinholes open.
37+- Notifications are delivered reliably even when some packets get lost.
38+
39+### Prerequisites
40+
41+- Proficiency in C
42+- Basic understanding of the Fine and Ames network protocols and packet formats
43+- The symmetric routing project (notifications use that routing scheme)
44+
45+### Educational Outcomes for the Apprentice
46+
47+The apprentice will learn about:
48+
49+- Firewall pinholes
50+- Bit twiddling in Hoon and C
51+- The Arvo/Vere interface
52+
53+### Responsibilities of the Mentor
54+
55+- Clarify spec and implementation plan
56+- Answer questions about existing code
57+- Code review: style, correctness, performance, patterns and anti-patterns
58+- Help with testing and deployment strategies
59+
60+### Duration and Compensation
61+
62+Expected duration is two months.
63+1 star paid at completion of apprenticeship