on master help sign in
batch edit grants categories and types, add featured grants
b9b839dGavin Atkinson
components/SingleColumn.js+7−7
@@ -1,8 +1,8 @@
1// Provides a limited-width column with all children center-aligned along the vertical axis
1// Provides a limited-width column with all children center-aligned along the vertical axis
2−export default function SingleColumn({children}) {
2+export default function SingleColumn({ children }) {
3− return (
3+ return (
4− <div className='flex flex-col w-full items-center max-w-screen-xl'>
4+ <div className="flex flex-col w-full items-center max-w-screen-2xl">
5− {children}
5+ {children}
6− </div>
6+ </div>
7− )
7+ );
8− }
8+}
content/blog/gifts-q3-2020.md+12−7
@@ -3,7 +3,7 @@ title = "Gifts Q3 2020"
3date = 2020-09-23
3date = 2020-09-23
4description = "Twice a year we distribute address space to those that have made valuable contributions to Urbit. Now called our Gifts program, the gifting of address space has been part of Urbit long before we had a grants program."
4description = "Twice a year we distribute address space to those that have made valuable contributions to Urbit. Now called our Gifts program, the gifting of address space has been part of Urbit long before we had a grants program."
5[taxonomies]
5[taxonomies]
6−post_type = ["gifts"]
6+grant_type = ["Gift"]
7[extra]
7[extra]
8author = "Josh Lehman"
8author = "Josh Lehman"
9ship = "~wolref-podlex"
9ship = "~wolref-podlex"
@@ -16,14 +16,15 @@ image ="https://media.urbit.org/site/posts/essays/gifts.png"
16
16
17<br>
17<br>
18
18
19−Twice a year we distribute address space to those that have made valuable contributions to Urbit. Now called our *Gifts* program, the gifting of address space has been part of Urbit long before we had a grants program.
19+Twice a year we distribute address space to those that have made valuable contributions to Urbit. Now called our _Gifts_ program, the gifting of address space has been part of Urbit long before we had a grants program.
20
20
21I'm happy to announce that urbit.org has a record number of gifts to distribute to community contributors for the period from February to August of 2020. Because the gifting of address space is an old tradition, and the last several months have seen an unprecedented amount of user growth, let’s talk about why we do this.
21I'm happy to announce that urbit.org has a record number of gifts to distribute to community contributors for the period from February to August of 2020. Because the gifting of address space is an old tradition, and the last several months have seen an unprecedented amount of user growth, let’s talk about why we do this.
22
22
23## Why gifts?
23## Why gifts?
24−One way to think about Urbit is as *infrastructure for powering digital communities.* We’ve talked about this before in [some detail](https://urbit.org/blog/urbit-is-for-communities/), so while I won’t rehash the “why” of that here, I’ll reiterate that what we really want is a digital world that's generated by the communities that inhabit it.
25
24
25+One way to think about Urbit is as _infrastructure for powering digital communities._ We’ve talked about this before in [some detail](https://urbit.org/blog/urbit-is-for-communities/), so while I won’t rehash the “why” of that here, I’ll reiterate that what we really want is a digital world that's generated by the communities that inhabit it.
26+
26−We know that digital communities need better technology with which to generate their world; just as importantly though, they need *people* to inhabit and develop them.
27+We know that digital communities need better technology with which to generate their world; just as importantly though, they need _people_ to inhabit and develop them.
27
28
28Tlon and urbit.org can’t bring the world into Urbit alone—we need community members to help us. By distributing address space to a variety of people that can invite their friends and families, the network can grow faster, more organically, and with a wider range of diversity.
29Tlon and urbit.org can’t bring the world into Urbit alone—we need community members to help us. By distributing address space to a variety of people that can invite their friends and families, the network can grow faster, more organically, and with a wider range of diversity.
29
30
@@ -32,9 +33,10 @@ Currently, the majority of available address space is owned by Tlon and urbit.or
32Gifts are one of the ways we invest in the future of the network. We look for others that see Urbit’s value and engage in building the digital home that they want to live in. They ease the learning curve for people new to Urbit, contribute to the technology, and create thriving communities.
33Gifts are one of the ways we invest in the future of the network. We look for others that see Urbit’s value and engage in building the digital home that they want to live in. They ease the learning curve for people new to Urbit, contribute to the technology, and create thriving communities.
33
34
34## Recipients
35## Recipients
36+
35Gifts are being awarded for a variety of reasons this quarter. As usual, there have been plenty of code and documentation contributions, but this time around we’re also recognizing those who have evangelized Urbit, been active in guiding newcomers to the system, and developed thriving communities within Landscape.
37Gifts are being awarded for a variety of reasons this quarter. As usual, there have been plenty of code and documentation contributions, but this time around we’re also recognizing those who have evangelized Urbit, been active in guiding newcomers to the system, and developed thriving communities within Landscape.
36
38
37−Gifts are being awarded using the following criteria:
39+Gifts are being awarded using the following criteria:
38
40
39**Bronze**: one star for continuous contributions over the last six months in at least one of the above areas.
41**Bronze**: one star for continuous contributions over the last six months in at least one of the above areas.
40
42
@@ -45,21 +47,24 @@ Gifts are being awarded using the following criteria:
45Without further ado, here are the recipients:
47Without further ado, here are the recipients:
46
48
47### Gold
49### Gold
50+
48[`~radbur-sivmus`](https://github.com/tylershuster) has more or less become an unofficial member of the interface team by tackling an absolutely [immense](https://github.com/urbit/urbit/pulls?q=is%3Apr+author%3Atylershuster+) amount of Landscape-related work.
51[`~radbur-sivmus`](https://github.com/tylershuster) has more or less become an unofficial member of the interface team by tackling an absolutely [immense](https://github.com/urbit/urbit/pulls?q=is%3Apr+author%3Atylershuster+) amount of Landscape-related work.
49
52
50### Silver
53### Silver
54+
51- [`~littel-wolfur`](https://github.com/ryjm): Jake maintains the premier development group in Urbit, The Forge, and has led the way for other developers by authoring [srrs](https://github.com/ryjm/srrs), one of the more popular community-developed applications on Urbit.
55- [`~littel-wolfur`](https://github.com/ryjm): Jake maintains the premier development group in Urbit, The Forge, and has led the way for other developers by authoring [srrs](https://github.com/ryjm/srrs), one of the more popular community-developed applications on Urbit.
52- [`~botter-nidnul`](https://github.com/botter-nidnul): `~botter` has been instrumental in furthering [Urbit on ARM](https://botter-nidnul.github.io/), has made contributions across Vere and our documentation, and been highly active in onboarding newcomers on our Discord server.
56- [`~botter-nidnul`](https://github.com/botter-nidnul): `~botter` has been instrumental in furthering [Urbit on ARM](https://botter-nidnul.github.io/), has made contributions across Vere and our documentation, and been highly active in onboarding newcomers on our Discord server.
53- [`~timluc-miptev`](https://github.com/timlucmiptev): `~timluc` is highly engaged in many groups and the maintainer of some, wrote the [Nock for Everyday Coders](https://blog.timlucmiptev.space/part1.html) guide, and has gone far above and beyond in teaching the community about developing Landscape applications.
57- [`~timluc-miptev`](https://github.com/timlucmiptev): `~timluc` is highly engaged in many groups and the maintainer of some, wrote the [Nock for Everyday Coders](https://blog.timlucmiptev.space/part1.html) guide, and has gone far above and beyond in teaching the community about developing Landscape applications.
54- [`~lanrus-rinfep`](https://github.com/dclelland): Daniel has done extensive development on iOS by writing Swift libraries for interacting with Urbit, and employed all of these towards the development of an [iOS client for chat](https://github.com/dclelland/UrsusChat).
58- [`~lanrus-rinfep`](https://github.com/dclelland): Daniel has done extensive development on iOS by writing Swift libraries for interacting with Urbit, and employed all of these towards the development of an [iOS client for chat](https://github.com/dclelland/UrsusChat).
55−- [`~minder-folden`](https://twitter.com/the_pritchard): Jonathan is a prolific member of the community. His group *The Sanctorium* is always active, he's always around to help newcomers to the system, is an active evangelist on Twitter, and a creator of much excellent content.
59+- [`~minder-folden`](https://twitter.com/the_pritchard): Jonathan is a prolific member of the community. His group _The Sanctorium_ is always active, he's always around to help newcomers to the system, is an active evangelist on Twitter, and a creator of much excellent content.
56
60
57### Bronze
61### Bronze
62+
58- [`~watter-parter`](https://github.com/lukechampine): Luke has made a number of [contributions](https://github.com/urbit/urbit/pulls?q=is%3Apr+is%3Aclosed+author%3Alukechampine) to Arvo, and wrote a great [introductory guide](https://github.com/lukechampine/rote) to developing Gall agents.
63- [`~watter-parter`](https://github.com/lukechampine): Luke has made a number of [contributions](https://github.com/urbit/urbit/pulls?q=is%3Apr+is%3Aclosed+author%3Alukechampine) to Arvo, and wrote a great [introductory guide](https://github.com/lukechampine/rote) to developing Gall agents.
59- [`~naltyc-wornes`](https://github.com/JohnELester): `~naltyc` runs the popular group “Smol Computers” both inside and outside of Urbit where discussions ensue about various forms of computing on small devices like Android and ARM, and actively evangelizes the project.
64- [`~naltyc-wornes`](https://github.com/JohnELester): `~naltyc` runs the popular group “Smol Computers” both inside and outside of Urbit where discussions ensue about various forms of computing on small devices like Android and ARM, and actively evangelizes the project.
60- [`~nartes-fasrum`](https://twitter.com/nartesfasrum): `~nartes` evangelizes Urbit on Twitter by creating artwork, and maintains the popular food-centric group “Urbytes.”
65- [`~nartes-fasrum`](https://twitter.com/nartesfasrum): `~nartes` evangelizes Urbit on Twitter by creating artwork, and maintains the popular food-centric group “Urbytes.”
61- [`~fonnyx-nopmer`](https://twitter.com/fonnyx_nopmer): `~fonnyx` maintains an active presence throughout many groups on Urbit and runs the first Urbit-centric podcast, [Hooked on fonnyx](https://www.twitch.tv/fonnyx).
66- [`~fonnyx-nopmer`](https://twitter.com/fonnyx_nopmer): `~fonnyx` maintains an active presence throughout many groups on Urbit and runs the first Urbit-centric podcast, [Hooked on fonnyx](https://www.twitch.tv/fonnyx).
62−- `~libhut-samwes`: `~libhut` started and maintains one of the most popular groups on Urbit centered on crypto and investing, and contributes to conversations throughout Urbit.
67+- `~libhut-samwes`: `~libhut` started and maintains one of the most popular groups on Urbit centered on crypto and investing, and contributes to conversations throughout Urbit.
63- `~salmus-master`: In addition to embodying the quality of high-level, respectful debate we like to see, `~salmus` created the group: “The Tribal Network,” where he maintains one of the most active long-form notebooks on Urbit.
68- `~salmus-master`: In addition to embodying the quality of high-level, respectful debate we like to see, `~salmus` created the group: “The Tribal Network,” where he maintains one of the most active long-form notebooks on Urbit.
64- [`~fostyr-solfyr`](https://github.com/cmarcelo): `~fostyr` has submitted a number of PRs against Arvo, including a much-requested feature to reset the web login code.
69- [`~fostyr-solfyr`](https://github.com/cmarcelo): `~fostyr` has submitted a number of PRs against Arvo, including a much-requested feature to reset the web login code.
65- [`~sarpen-laplux`](https://github.com/xiphiness): `~sarpen` has done a significant amount of research and work on Ethereum ABI parsing and other Ethereum-related topics in addition to being an active participant in dialogues throughout Urbit.
70- [`~sarpen-laplux`](https://github.com/xiphiness): `~sarpen` has done a significant amount of research and work on Ethereum ABI parsing and other Ethereum-related topics in addition to being an active participant in dialogues throughout Urbit.
content/blog/urbit-grants-and-mid-2019-gifts.md+3−4
@@ -4,7 +4,7 @@ date = 2019-06-10
4description = "Announcing an upcoming Urbit grants program and star gifts for Mid-2019."
4description = "Announcing an upcoming Urbit grants program and star gifts for Mid-2019."
5aliases = ["/posts/essays/urbit-grants-and-mid-2019-gifts", "/posts/urbit-grants-and-mid-2019-gifts"]
5aliases = ["/posts/essays/urbit-grants-and-mid-2019-gifts", "/posts/urbit-grants-and-mid-2019-gifts"]
6[taxonomies]
6[taxonomies]
7−post_type = ["gifts"]
7+grant_type = ["Gift"]
8[extra]
8[extra]
9author = "Galen Wolfe-Pauly + Alex Matzner"
9author = "Galen Wolfe-Pauly + Alex Matzner"
10ship = "~ravmel-ropdyl + ~mignyt-mogseb"
10ship = "~ravmel-ropdyl + ~mignyt-mogseb"
@@ -30,15 +30,14 @@ That is, our winners from the past nine months:
30- John `~dirwex-dosrev` [@jfranklin9000](https://github.com/jfranklin9000)
30- John `~dirwex-dosrev` [@jfranklin9000](https://github.com/jfranklin9000)
31- Assaf `~rophex-hashes` [@asssaf](https://github.com/asssaf)
31- Assaf `~rophex-hashes` [@asssaf](https://github.com/asssaf)
32
32
33−**Pyry** has been a [regular contributor](https://github.com/urbit/bridge/pulls?utf8=%E2%9C%93&q=author%3Apkova) to Bridge over the past few months, **John** has been consistently picking up changes [all](https://github.com/urbit/urbit/pulls?utf8=%E2%9C%93&q=author%3Ajfranklin9000) [over](https://github.com/urbit/arvo/pulls?utf8=%E2%9C%93&q=author%3Ajfranklin9000) [the place](https://github.com/urbit/docs/pulls?utf8=%E2%9C%93&q=author%3Ajfranklin9000), and **Assaf** found a [security issue](https://github.com/urbit/urbit-key-generation/issues/55) with our hierarchical wallet.
33+**Pyry** has been a [regular contributor](https://github.com/urbit/bridge/pulls?utf8=%E2%9C%93&q=author%3Apkova) to Bridge over the past few months, **John** has been consistently picking up changes [all](https://github.com/urbit/urbit/pulls?utf8=%E2%9C%93&q=author%3Ajfranklin9000) [over](https://github.com/urbit/arvo/pulls?utf8=%E2%9C%93&q=author%3Ajfranklin9000) [the place](https://github.com/urbit/docs/pulls?utf8=%E2%9C%93&q=author%3Ajfranklin9000), and **Assaf** found a [security issue](https://github.com/urbit/urbit-key-generation/issues/55) with our hierarchical wallet.
34
34
35Thanks to all of you for helping bring Urbit to life. We don’t make it nearly easy enough to contribute, but all of you clawed your way in and made the system better. Thank you!
35Thanks to all of you for helping bring Urbit to life. We don’t make it nearly easy enough to contribute, but all of you clawed your way in and made the system better. Thank you!
36
36
37## Coming soon: Our new grant program
37## Coming soon: Our new grant program
38
38
39−As always, we much prefer to talk about working code as opposed to unfinished work – however:
39+As always, we much prefer to talk about working code as opposed to unfinished work – however:
40
40
41Making the process of rewarding contributors is something we’ve thought a lot about over the past few months. We’ve come up with a system that we like, and are hoping to put it up later this summer. It’s probably not perfect, but it’s a step in the right direction. We’ll be able to properly engage in a grant proposal process, post bounties as well as reward people directly with prizes.
41Making the process of rewarding contributors is something we’ve thought a lot about over the past few months. We’ve come up with a system that we like, and are hoping to put it up later this summer. It’s probably not perfect, but it’s a step in the right direction. We’ll be able to properly engage in a grant proposal process, post bounties as well as reward people directly with prizes.
42
42
43Please [subscribe to our newsletter](http://eepurl.com/b7x7hj) to make sure you receive future announcements.
43Please [subscribe to our newsletter](http://eepurl.com/b7x7hj) to make sure you receive future announcements.
44−
content/grants/-smol-future-sustained-knowledge-sharing-and-marketing.md+32−30
@@ -2,7 +2,7 @@
2title = "-=[smol future]=- Sustained Knowledge Sharing and Marketing"
2title = "-=[smol future]=- Sustained Knowledge Sharing and Marketing"
3date = 2021-01-15
3date = 2021-01-15
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -14,79 +14,81 @@ completed = false
14link = ""
14link = ""
15+++
15+++
16
16
17−[![smol vibe](https://i.gyazo.com/1307af94079e4ab07880a29b9b0ef2fa.png)](https://i.gyazo.com/1307af94079e4ab07880a29b9b0ef2fa.png)
17+[![smol vibe](https://i.gyazo.com/1307af94079e4ab07880a29b9b0ef2fa.png)](https://i.gyazo.com/1307af94079e4ab07880a29b9b0ef2fa.png)
18−*“If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.”  -Antoine de Saint-Exupéry*
18+_“If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.”  -Antoine de Saint-Exupéry_
19
19
20## Why
20## Why
21−The core philosophy behind Urbit software is freedom and personal sovereignty in the digital age. Your data, your computation, your identity. This narrative presents a powerful marketing opportunity, as it immediately resonates with modern-day people striving against megacorp data silos, centralized censorship and behavioral data harvesting.
22
21
22+The core philosophy behind Urbit software is freedom and personal sovereignty in the digital age. Your data, your computation, your identity. This narrative presents a powerful marketing opportunity, as it immediately resonates with modern-day people striving against megacorp data silos, centralized censorship and behavioral data harvesting.
23+
23−But we're only halfway there. To complete the circle, we must also encourage and support the use of *hardware* that allows Urbit to run on personally owned and inexpensive small computing devices. And we need to spread this empowering narrative across the globe.
24+But we're only halfway there. To complete the circle, we must also encourage and support the use of _hardware_ that allows Urbit to run on personally owned and inexpensive small computing devices. And we need to spread this empowering narrative across the globe.
24
25
25## How
26## How
26−Selling productized Urbit hardware devices is one effort to help complete the circle. This will eventually be achievable via customized software development ([see ~botter's Urbian project](https://grants.urbit.org/proposals/337545546)).
27
27
28+Selling productized Urbit hardware devices is one effort to help complete the circle. This will eventually be achievable via customized software development ([see ~botter's Urbian project](https://grants.urbit.org/proposals/337545546)).
29+
28−The other critical area of work is **Sustained Knowledge Sharing and Marketing**. We need updated documentation that helps people set up and manage their own Urbit hardware devices. And we need ongoing marketing outreach to excite and engage broader communities of people where Urbit's philosophy can be introduced, take root, and grow.
30+The other critical area of work is **Sustained Knowledge Sharing and Marketing**. We need updated documentation that helps people set up and manage their own Urbit hardware devices. And we need ongoing marketing outreach to excite and engage broader communities of people where Urbit's philosophy can be introduced, take root, and grow.
29
31
30## What
32## What
33+
31−-=[smol future]=- is a project to create sustained documentation and marketing efforts that will support and encourage new users to run Urbit on their own small computing devices. We will focus on Raspberry Pi to leverage its vibrant ecosystem of users, developers and integrators.
34+-=[smol future]=- is a project to create sustained documentation and marketing efforts that will support and encourage new users to run Urbit on their own small computing devices. We will focus on Raspberry Pi to leverage its vibrant ecosystem of users, developers and integrators.
32
35
33## Who
36## Who
37+
34−I joined Urbit in February 2020. Since then, I've cultivated the --=[ smol computers ]=-- group into an active community of ~500 members. I run two stars (~dasfeb and ~dalten) on production-quality small computing devices like Raspberry Pi and NanoPi, and I continually test new hardware configurations while documenting best practices to help others. I am prolific and adept at designing creative marketing content as well as community outreach on Twitter and other social media platforms. My personal and professional credentials are [publicly available](https://johnlester.me).
38+I joined Urbit in February 2020. Since then, I've cultivated the --=[ smol computers ]=-- group into an active community of ~500 members. I run two stars (~dasfeb and ~dalten) on production-quality small computing devices like Raspberry Pi and NanoPi, and I continually test new hardware configurations while documenting best practices to help others. I am prolific and adept at designing creative marketing content as well as community outreach on Twitter and other social media platforms. My personal and professional credentials are [publicly available](https://johnlester.me).
35
39
36Let's do this and change the world.
40Let's do this and change the world.
37
41
38−[![smol vibe](https://i.gyazo.com/2346666e5b40623353fee1dca42f9879.jpg)](https://i.gyazo.com/2346666e5b40623353fee1dca42f9879.jpg)
42+[![smol vibe](https://i.gyazo.com/2346666e5b40623353fee1dca42f9879.jpg)](https://i.gyazo.com/2346666e5b40623353fee1dca42f9879.jpg)
39
43
40## Milestones
44## Milestones
41
45
42−
43### Initial Documentation: Beginner's Guide
46### Initial Documentation: Beginner's Guide
47+
441 stars
481 stars
45Publish a comprehensive guide on urbit.org wiki explaining how to run Urbit on a Raspberry Pi using recommended and tested hardware configurations. Walk the user through every step of of the process.
49Publish a comprehensive guide on urbit.org wiki explaining how to run Urbit on a Raspberry Pi using recommended and tested hardware configurations. Walk the user through every step of of the process.
46
50
47−
48### Initial Marketing: Outreach + Messaging
51### Initial Marketing: Outreach + Messaging
52+
491 stars
531 stars
50Research and outreach to engage existing Raspberry Pi users and key hardware manufacturers. Introduce the Urbit narrative into new communities, including memes/vibes.
54Research and outreach to engage existing Raspberry Pi users and key hardware manufacturers. Introduce the Urbit narrative into new communities, including memes/vibes.
51
55
52−
53### Sustained Documentation + Marketing: MAR
56### Sustained Documentation + Marketing: MAR
54−1 stars
55−A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
56
57
58+1 stars
59+A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
57
60
58### Sustained Documentation + Marketing: APR
61### Sustained Documentation + Marketing: APR
59−1 stars
60−A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
61
62
63+1 stars
64+A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
62
65
63### Sustained Documentation+Marketing: MAY
66### Sustained Documentation+Marketing: MAY
64−1 stars
65−A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
66
67
68+1 stars
69+A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
67
70
68### Sustained Documentation + Marketing: JUN
71### Sustained Documentation + Marketing: JUN
69−1 stars
70−A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
71
72
73+1 stars
74+A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
72
75
73### Sustained Documentation + Marketing: JUL
76### Sustained Documentation + Marketing: JUL
74−1 stars
75−A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
76
77
78+1 stars
79+A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
77
80
78### Sustained Documentation + Marketing: AUG
81### Sustained Documentation + Marketing: AUG
79−1 stars
80−A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
81
82
83+1 stars
84+A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
82
85
83### Sustained Documentation + Marketing: SEP
86### Sustained Documentation + Marketing: SEP
84−1 stars
85−A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
86
87
88+1 stars
89+A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
87
90
88### Sustained Documentation + Marketing: OCT
91### Sustained Documentation + Marketing: OCT
89−1 stars
90−A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
91
92
92−
93+1 stars
94+A fire-and-forget approach will fail. To succeed and continually gain traction, both documentation (updated content) and marketing (new outreach/engagement/materials) must be sustained efforts.
content/grants/a-book-about-urbit.md+12−15
@@ -2,7 +2,7 @@
2title = "A book about Urbit"
2title = "A book about Urbit"
3date = 2020-07-23
3date = 2020-07-23
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -18,7 +18,7 @@ I'm writing a book-length history of Urbit. I'll also write, in an Urbit-centric
18
18
191. Preface. A short story about the year 2050. Introduction to the concept of Urbit.
191. Preface. A short story about the year 2050. Introduction to the concept of Urbit.
202. Laundry list of the things wrong with the current internet, only more dramatic than a laundry list
202. Laundry list of the things wrong with the current internet, only more dramatic than a laundry list
21−3. Laundry list of the things wrong with the current internet, only more dramatic than a laundry list, continued.
21+3. Laundry list of the things wrong with the current internet, only more dramatic than a laundry list, continued.
224. Social history of computers
224. Social history of computers
235. Social history of computers, continued
235. Social history of computers, continued
246. Technical explanation of Urbit, only more dramatic than a technical explanation
246. Technical explanation of Urbit, only more dramatic than a technical explanation
@@ -29,57 +29,54 @@ I'm writing a book-length history of Urbit. I'll also write, in an Urbit-centric
29
29
30I'm a novelist and essayist who has written about tech, politics, and literature. My plan, so far, for any received stars, is to spawn planets for interesting individuals and communities who might like Urbit, and to research what might go into creating a hosted star-based community.
30I'm a novelist and essayist who has written about tech, politics, and literature. My plan, so far, for any received stars, is to spawn planets for interesting individuals and communities who might like Urbit, and to research what might go into creating a hosted star-based community.
31
31
32−
33## Milestones
32## Milestones
34
33
35−
36### First Chapter
34### First Chapter
35+
371 stars
361 stars
38Ch1. Actually completed 10/21, not 10/29
37Ch1. Actually completed 10/21, not 10/29
39
38
40−
41### Second Chapter
39### Second Chapter
40+
421 stars
411 stars
43Ch2
42Ch2
44
43
45−
46### Third Chapter
44### Third Chapter
45+
471 stars
461 stars
48Ch3
47Ch3
49
48
50−
51### Fourth Chapter
49### Fourth Chapter
50+
521 stars
511 stars
53Ch4
52Ch4
54
53
55−
56### Fifth Chapter
54### Fifth Chapter
55+
571 stars
561 stars
58Ch5
57Ch5
59
58
60−
61### Sixth Chapter
59### Sixth Chapter
60+
621 stars
611 stars
63Ch6
62Ch6
64
63
65−
66### Seventh Chapter
64### Seventh Chapter
65+
671 stars
661 stars
68Ch7
67Ch7
69
68
70−
71### Eighth Chapter
69### Eighth Chapter
70+
721 stars
711 stars
73Ch8
72Ch8
74
73
75−
76### Ninth Chapter
74### Ninth Chapter
75+
771 stars
761 stars
78Ch9
77Ch9
79
78
80−
81### Tenth Chapter
79### Tenth Chapter
80+
823 stars
813 stars
83Ch10. Contract is for disbursal of 12 stars at 1 star per chapter until completion; if projected is completed in fewer than 12 chapters, then remaining stars (12 - x) are to be disbursed at completion
82Ch10. Contract is for disbursal of 12 stars at 1 star per chapter until completion; if projected is completed in fewer than 12 chapters, then remaining stars (12 - x) are to be disbursed at completion
84−
85−
content/grants/a-collaborative-web-mapping-system-for-urbit.md+33−42
@@ -2,8 +2,8 @@
2title = "A Collaborative Web Mapping System for Urbit"
2title = "A Collaborative Web Mapping System for Urbit"
3date = 2020-09-03
3date = 2020-09-03
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Allow small scale spatial data to be stored and retrieved in Urbit, for use in landscape and external applications, and shared across ships."
9description = "Allow small scale spatial data to be stored and retrieved in Urbit, for use in landscape and external applications, and shared across ships."
@@ -14,86 +14,77 @@ completed = false
14link = ""
14link = ""
15+++
15+++
16
16
17−A Collaborative Web Mapping System for Urbit
17+# A Collaborative Web Mapping System for Urbit
18−==================
19
18
20##### Goal
19##### Goal
21
20
22−
23Allow small scale spatial data to be stored and retrieved in Urbit, for use in landscape and external applications, and shared across ships.
21Allow small scale spatial data to be stored and retrieved in Urbit, for use in landscape and external applications, and shared across ships.
24
22
25##### Background/Motivation
23##### Background/Motivation
26
24
27−
28−This proposal has grown out of a previous bounty which called for Open Street Map data to be ingested into Urbit. Through discussion it was decided that as OSM already provides a free, open and widely available base map and street network, a more useful system for Urbit would provide a method of storing spatial documents, which can overlay upon existing spatial data such as Open Street Map tiles, be collected together for use in landscape apps, and combined, shared and collaboratively edited with other ships as 'Portals'. A spatial document, for the purpose of this proposal, is a single valid GeoJSON[^1] document. A spatial document could contain a single geometry, a feature (geometry with associated properties), or a collection of features (a GeoJSON 'featurecollection'). A Portal is a collection of spatial documents, with associated metadata and can include spatial documents from multiple ships, whose owners can collaboratively edit or construct maps.
25+This proposal has grown out of a previous bounty which called for Open Street Map data to be ingested into Urbit. Through discussion it was decided that as OSM already provides a free, open and widely available base map and street network, a more useful system for Urbit would provide a method of storing spatial documents, which can overlay upon existing spatial data such as Open Street Map tiles, be collected together for use in landscape apps, and combined, shared and collaboratively edited with other ships as 'Portals'. A spatial document, for the purpose of this proposal, is a single valid GeoJSON[^1] document. A spatial document could contain a single geometry, a feature (geometry with associated properties), or a collection of features (a GeoJSON 'featurecollection'). A Portal is a collection of spatial documents, with associated metadata and can include spatial documents from multiple ships, whose owners can collaboratively edit or construct maps.
29
26
30##### Overview
27##### Overview
31
28
29+- The proposed system will follow the Urbit store-hook-view pattern as described here https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?ts=5d533e42
32
30
33− * The proposed system will follow the Urbit store-hook-view pattern as described here https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?ts=5d533e42
34−
35− * The system will be implemented in two stages. The first stage will implement simple spatial types and a spatial document store, demonstrate input and output of spatial data, and provide a minimal landscape app for creating and editing spatial documents, but limited to the local ship. The second stage will build on the first and provide Portals; collections of spatial documents and associated metadata, which can be shared across ships - similar to the 'canvas' landscape app (https://github.com/yosoyubik/canvas).
31+- The system will be implemented in two stages. The first stage will implement simple spatial types and a spatial document store, demonstrate input and output of spatial data, and provide a minimal landscape app for creating and editing spatial documents, but limited to the local ship. The second stage will build on the first and provide Portals; collections of spatial documents and associated metadata, which can be shared across ships - similar to the 'canvas' landscape app (https://github.com/yosoyubik/canvas).
36
32
37#### Stage 1 - A spatial store, spatial types, simple demo app
33#### Stage 1 - A spatial store, spatial types, simple demo app
38
34
39−
40##### Spatial Document Store and Tools
35##### Spatial Document Store and Tools
41
36
42− * A storage system for the GeoJSON[^1] format and following the GeoJSON feature model.
37+- A storage system for the GeoJSON[^1] format and following the GeoJSON feature model.
43− * The store will accept GeoJSON, validate and store, my intention is to use 'enjs' and/or 'de-json:html' existing hoon libraries to parse JSON. It will not perform any spatial indexing[^2]
38+- The store will accept GeoJSON, validate and store, my intention is to use 'enjs' and/or 'de-json:html' existing hoon libraries to parse JSON. It will not perform any spatial indexing[^2]
44− * Implement spatial types/structures - geometry, position, point, polygon, linestring, multipoint, multipolygon, geometrycollection upon which can be built the geojson geometry and feature model.
39+- Implement spatial types/structures - geometry, position, point, polygon, linestring, multipoint, multipolygon, geometrycollection upon which can be built the geojson geometry and feature model.
45− * Implement a generator which can read a GeoJSON document in to the store, and can write a constructed document out of the store.
40+- Implement a generator which can read a GeoJSON document in to the store, and can write a constructed document out of the store.
46− * Implement a test suite based around GeoJSON specification and the above generator.
41+- Implement a test suite based around GeoJSON specification and the above generator.
47−
42+
48##### Hook, View and Landscape App
43##### Hook, View and Landscape App
49
44
50− * Implement the hook and view components of store-hook-view pattern atop the spatial data store.
45+- Implement the hook and view components of store-hook-view pattern atop the spatial data store.
51− * In this stage the system will only allow data to be viewed/edited on the local ship.
46+- In this stage the system will only allow data to be viewed/edited on the local ship.
52− * Integrating spatial information with Landscape apps (which can render vector features using available javascript libraries/clients such as Openlayers and Leaflet).
47+- Integrating spatial information with Landscape apps (which can render vector features using available javascript libraries/clients such as Openlayers and Leaflet).
53− * Overall, somewhat like 'urlayers' hackathon project (github.com/gusmacaulay/urlayers), but with a sane data store and following the store-hook-view pattern.
48+- Overall, somewhat like 'urlayers' hackathon project (github.com/gusmacaulay/urlayers), but with a sane data store and following the store-hook-view pattern.
54
49
55#### Stage 2 - A Portal Store and Collaboration System
50#### Stage 2 - A Portal Store and Collaboration System
56
51
57−##### Store (Metadata, Portals)
52+##### Store (Metadata, Portals)
53+
54+- Expands on the Stage 1 architecture with additional store
55+- The additional store which will house Portals. Portals consists of a map document with metadata (area of interest bounds, styling[^3], author/s etc.), and which may contain many spatial documents, which may be stored locally or on other ships.
56+- It may be that the Urbit graph store is the appropriate place for this information, exploring using graph store vs a custom Portal store will be undertaken as part of Stage 2.
58
57
59− * Expands on the Stage 1 architecture with additional store
60− * The additional store which will house Portals. Portals consists of a map document with metadata (area of interest bounds, styling[^3], author/s etc.), and which may contain many spatial documents, which may be stored locally or on other ships.
61− * It may be that the Urbit graph store is the appropriate place for this information, exploring using graph store vs a custom Portal store will be undertaken as part of Stage 2.
62−
63##### Hook/View/App
58##### Hook/View/App
64
59
65−* A hook/view/landscape app which allows for displaying and interacting with Portals;
60+- A hook/view/landscape app which allows for displaying and interacting with Portals;
66− * Editing of individual Portals
61+ - Editing of individual Portals
67− * Sharing of Portals. As a resource owned by a ship, a Portal is somewhat analogous to a chat channel. Individual spatial documents within the Portal can come from local or foreign ship. The owner of the Portal will be able to set permissions on spatial documents within the portal.
62+ - Sharing of Portals. As a resource owned by a ship, a Portal is somewhat analogous to a chat channel. Individual spatial documents within the Portal can come from local or foreign ship. The owner of the Portal will be able to set permissions on spatial documents within the portal.
68− * The overall concept of the Portal app can be likened to the 'canvas' landscape app, but for maps and cartography. The key feature is to present a Portal map with spatial data from different ships and collaborative editing.
63+- The overall concept of the Portal app can be likened to the 'canvas' landscape app, but for maps and cartography. The key feature is to present a Portal map with spatial data from different ships and collaborative editing.
69
64
70##### Footnotes
65##### Footnotes
71
66
67+[^1]:
72−[^1]: The very readable spec for geojson can be found here http://geojson.org. An overview of GeoJSON summarizing
68+ The very readable spec for geojson can be found here http://geojson.org. An overview of GeoJSON summarizing
73−it's advantages and limitations can be found here https://macwright.com/2015/03/23/geojson-second-bite.html
69+ it's advantages and limitations can be found here https://macwright.com/2015/03/23/geojson-second-bite.html
74
70
75−[^2]: A mature spatial store would include spatial indexes and provide spatial queries, however for the objectives of this proposal basic spatial spatial documents storage and retrieval can be achieved without spatial indexing. Each spatial document is treated as its own entity, and has limited querying beyond fetching and inspecting the data structure. However this is enough that it can easily be splatted on a map. Spatial indexing of geometries (or parent features/feature collections), is a sensible next step, which would allow many more use cases but is not in scope for this proposal.
71+[^2]: A mature spatial store would include spatial indexes and provide spatial queries, however for the objectives of this proposal basic spatial spatial documents storage and retrieval can be achieved without spatial indexing. Each spatial document is treated as its own entity, and has limited querying beyond fetching and inspecting the data structure. However this is enough that it can easily be splatted on a map. Spatial indexing of geometries (or parent features/feature collections), is a sensible next step, which would allow many more use cases but is not in scope for this proposal.
76−
77−[^3]: It may be possible to store styling info within the spatial documents, there are at least two GeoJSON style storage conventions, but nothing standardised (see discussion here https://gis.stackexchange.com/questions/22474/geojson-styling-information). Neither of these are part of the GeoJSON standard and appear to be not used much in the wild. There are formats such as KML and GeoPackage which have styling support, but these are also more complex formats.
72+[^3]: It may be possible to store styling info within the spatial documents, there are at least two GeoJSON style storage conventions, but nothing standardised (see discussion here https://gis.stackexchange.com/questions/22474/geojson-styling-information). Neither of these are part of the GeoJSON standard and appear to be not used much in the wild. There are formats such as KML and GeoPackage which have styling support, but these are also more complex formats.
78
73
79##### About Me
74##### About Me
80
75
81−I am a beef farmer and software engineer (geospatial web applications). I work with tools/frameworks such as Openlayers, Leaflet, Geoserver, Postgresql/PostGIS etc. and I code predominantly in Java, Javascript, SQL, Clojure, and Python. I have completed the original Hoon 101 course, half the 201 course, and the recent hackathon. My hackathon entry was a very primitive geojson editor gall/landscape app (https://github.com/gusmacaulay/urlayers).
76+I am a beef farmer and software engineer (geospatial web applications). I work with tools/frameworks such as Openlayers, Leaflet, Geoserver, Postgresql/PostGIS etc. and I code predominantly in Java, Javascript, SQL, Clojure, and Python. I have completed the original Hoon 101 course, half the 201 course, and the recent hackathon. My hackathon entry was a very primitive geojson editor gall/landscape app (https://github.com/gusmacaulay/urlayers).
82−
83
77
84~lomped-firser
78~lomped-firser
85
79
86−
87## Milestones
80## Milestones
88
81
82+### Stage 1
89
83
90−### Stage 1
912 stars
842 stars
92A spatial store, spatial types, simple demo landscape app
85A spatial store, spatial types, simple demo landscape app
93
86
94−
95### Stage 2
87### Stage 2
88+
962 stars
892 stars
97A Portal Store and Collaboration System
90A Portal Store and Collaboration System
98−
99−
content/grants/analytics-script.md+6−8
@@ -2,8 +2,8 @@
2title = "Analytics Script"
2title = "Analytics Script"
3date = 2021-05-12
3date = 2021-05-12
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Write a generator that exports chat data into a CSV."
9description = "Write a generator that exports chat data into a CSV."
@@ -23,9 +23,9 @@ The generator will read data from `graph-store` (and other requisite agents) and
23
23
24### Output
24### Output
25
25
26−The output of the generator is a CSV file with the following format: `timestamp,ship,group,channel,channel-type,content`. Each row of data represents a single post of some type; either a chat message, notebook post, or collection post.
26+The output of the generator is a CSV file with the following format: `timestamp,ship,group,channel,channel-type,content`. Each row of data represents a single post of some type; either a chat message, notebook post, or collection post.
27
27
28−The result of running the CSV should output the clay path to the file.
28+The result of running the CSV should output the clay path to the file.
29
29
30### Inputs
30### Inputs
31
31
@@ -35,7 +35,7 @@ The generator should accept a few parameters:
35- `from` (required): absolute date (`@da`) from which data should be pulled.
35- `from` (required): absolute date (`@da`) from which data should be pulled.
36- `to` (optional): absolute date (`@da`) up until which point data should be pulled. Default is the current time.
36- `to` (optional): absolute date (`@da`) up until which point data should be pulled. Default is the current time.
37- `groups` (optional): list of groups to read data from. Default is to pull data from all groups that the running ship is a member of.
37- `groups` (optional): list of groups to read data from. Default is to pull data from all groups that the running ship is a member of.
38−- `content` (optional): boolean of whether or not to include content in the CSV. Defaults to `false`.
38+- `content` (optional): boolean of whether or not to include content in the CSV. Defaults to `false`.
39
39
40## Requirements & Resources
40## Requirements & Resources
41
41
@@ -45,9 +45,7 @@ The generator should accept a few parameters:
45
45
46## Milestones
46## Milestones
47
47
48−
49### Work is complete
48### Work is complete
49+
501 stars
501 stars
51The generator is submitted as a pull request to the Urbit repository, reviewed, and merged.
51The generator is submitted as a pull request to the Urbit repository, reviewed, and merged.
52−
53−
content/grants/antechamber.md+13−13
@@ -2,8 +2,8 @@
2title = "Antechamber"
2title = "Antechamber"
3date = 2020-11-17
3date = 2020-11-17
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Antechamber is an initiative to provide a group within Landscape that is restricted to only galaxies and delegates of galaxies."
9description = "Antechamber is an initiative to provide a group within Landscape that is restricted to only galaxies and delegates of galaxies."
@@ -19,7 +19,7 @@ link = ""
19
19
20Galaxy owners have an important place within the Urbit ecosystem: they're expected to [vote on important matters](https://urbit.org/docs/glossary/senate/) related to Urbit's future. We think that galaxies should both a) be able to assemble and communicate with one another, and b) that communication should be undertaken through Urbit itselth. Urbit galaxies, like stars, predominantly fulfill an infrastructural capacity, meaning that galaxy owners will likely interact with Urbit through their personal planet (further, due to the high value of galaxies, it is often the case that their ownership is shared by multiple individuals or a firm).
20Galaxy owners have an important place within the Urbit ecosystem: they're expected to [vote on important matters](https://urbit.org/docs/glossary/senate/) related to Urbit's future. We think that galaxies should both a) be able to assemble and communicate with one another, and b) that communication should be undertaken through Urbit itselth. Urbit galaxies, like stars, predominantly fulfill an infrastructural capacity, meaning that galaxy owners will likely interact with Urbit through their personal planet (further, due to the high value of galaxies, it is often the case that their ownership is shared by multiple individuals or a firm).
21
21
22−This bounty proposes the use of a *delegate* system, whereby a galaxy can designate another, lower-value ship (*e.g.* a planet) as their delegate in such a way that the designation can be freely given and taken away, as well as be publicly verifiable. This enables ships that represent individuals, like planets, to speak on behalf of galaxies.
22+This bounty proposes the use of a _delegate_ system, whereby a galaxy can designate another, lower-value ship (_e.g._ a planet) as their delegate in such a way that the designation can be freely given and taken away, as well as be publicly verifiable. This enables ships that represent individuals, like planets, to speak on behalf of galaxies.
23
23
24This use-case is exactly what the [Azimuth Claims contract](https://github.com/urbit/azimuth#overview) is meant to enable. Using claims, our workflow would work like this:
24This use-case is exactly what the [Azimuth Claims contract](https://github.com/urbit/azimuth#overview) is meant to enable. Using claims, our workflow would work like this:
25
25
@@ -40,7 +40,7 @@ Bridge makes use of the [azimuth-js](https://github.com/urbit/azimuth-js) librar
40
40
41- [`removeClaim`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L104): remove the specified claim.
41- [`removeClaim`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L104): remove the specified claim.
42- [`clearClaims`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L129): remove all claims.
42- [`clearClaims`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L129): remove all claims.
43−- `getAllClaims`: Produce all claims. *NOTE: There is no contract function for this operation—it'll need to be implemented in terms of `getClaim` per [this comment](https://github.com/urbit/azimuth-js/pull/58#pullrequestreview-369698854).*
43+- `getAllClaims`: Produce all claims. _NOTE: There is no contract function for this operation—it'll need to be implemented in terms of `getClaim` per [this comment](https://github.com/urbit/azimuth-js/pull/58#pullrequestreview-369698854)._
44
44
45With the above operations defined, your next task will be to extend Bridge to satisfy the following user stories:
45With the above operations defined, your next task will be to extend Bridge to satisfy the following user stories:
46
46
@@ -48,7 +48,7 @@ With the above operations defined, your next task will be to extend Bridge to sa
48
48
49(All stories are from the perspective of a point owner, and can be read: "As a point owner, ...")
49(All stories are from the perspective of a point owner, and can be read: "As a point owner, ...")
50
50
51−- I can manage Claims by navigating to *ID -> Advanced -> Manage Claims*
51+- I can manage Claims by navigating to _ID -> Advanced -> Manage Claims_
52- I can view all of my claims and their attributes ([`protocol`, `claim` and `dossier`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L42))
52- I can view all of my claims and their attributes ([`protocol`, `claim` and `dossier`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L42))
53- I can remove an existing claim
53- I can remove an existing claim
54- I can see how many claims I have made of the [maximum number allowed (16)](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L14)
54- I can see how many claims I have made of the [maximum number allowed (16)](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L14)
@@ -60,7 +60,7 @@ With the above operations defined, your next task will be to extend Bridge to sa
60
60
61### Part 2: Create the `senate-group-hook`
61### Part 2: Create the `senate-group-hook`
62
62
63−This gall agent will make use of the [`eth-watcher` agent](https://github.com/urbit/urbit/blob/master/pkg/arvo/app/eth-watcher.hoon) to watch for [`ClaimAdded`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L27) and [`ClaimRemoved`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L34) events, filter just the claim events that reference delegate claims, and translate those events into invites to or kicks from a specified group.
63+This gall agent will make use of the [`eth-watcher` agent](https://github.com/urbit/urbit/blob/master/pkg/arvo/app/eth-watcher.hoon) to watch for [`ClaimAdded`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L27) and [`ClaimRemoved`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L34) events, filter just the claim events that reference delegate claims, and translate those events into invites to or kicks from a specified group.
64
64
65#### User Stories
65#### User Stories
66
66
@@ -72,16 +72,18 @@ All stories that refer to a "group admin" below refer to a group admin that is r
72- As a group admin, all galaxies can also be invited to the group
72- As a group admin, all galaxies can also be invited to the group
73
73
74#### Implementation Notes
74#### Implementation Notes
75+
75- `eth-watcher` accepts a [`config`](https://github.com/urbit/urbit/blob/6621661460c3073195ac2500df46df67af722cb2/pkg/arvo/sur/eth-watcher.hoon#L5-L21) that tells it which events to watch, among other configuration parameters. An example of its usage can be found [here](https://github.com/urbit/urbit/blob/6621661460c3073195ac2500df46df67af722cb2/pkg/arvo/app/azimuth-tracker.hoon#L86-L97).
76- `eth-watcher` accepts a [`config`](https://github.com/urbit/urbit/blob/6621661460c3073195ac2500df46df67af722cb2/pkg/arvo/sur/eth-watcher.hoon#L5-L21) that tells it which events to watch, among other configuration parameters. An example of its usage can be found [here](https://github.com/urbit/urbit/blob/6621661460c3073195ac2500df46df67af722cb2/pkg/arvo/app/azimuth-tracker.hoon#L86-L97).
76- Azimuth's events can be found [here](https://github.com/urbit/urbit/blob/6621661460c3073195ac2500df46df67af722cb2/pkg/arvo/sys/zuse.hoon#L7943-L8016) in `zuse.hoon`. It's suggested that you represent the Claims contract and events in a similar fashion in a `/lib` file.
77- Azimuth's events can be found [here](https://github.com/urbit/urbit/blob/6621661460c3073195ac2500df46df67af722cb2/pkg/arvo/sys/zuse.hoon#L7943-L8016) in `zuse.hoon`. It's suggested that you represent the Claims contract and events in a similar fashion in a `/lib` file.
77- There should be a way to monitor only claim events that originate from galaxies
78- There should be a way to monitor only claim events that originate from galaxies
78
79
79## Deliverables
80## Deliverables
81+
80Your solution to this bounty should include pull requests against these repositories:
82Your solution to this bounty should include pull requests against these repositories:
81
83
82−* [azimuth-js](https://github.com/urbit/azimuth-js)
84+- [azimuth-js](https://github.com/urbit/azimuth-js)
83−* [bridge](https://github.com/urbit/bridge/)
85+- [bridge](https://github.com/urbit/bridge/)
84−* [antechamber](https://github.com/urbit/antechamber): The `senate-delegate-hook`-related files should go here.
86+- [antechamber](https://github.com/urbit/antechamber): The `senate-delegate-hook`-related files should go here.
85
87
86## Expectations
88## Expectations
87
89
@@ -91,14 +93,12 @@ The director will ensure that you have access to the necessary resources to comp
91
93
92## Milestones
94## Milestones
93
95
94−
95### Part 1: Extend Bridge to Support Claims
96### Part 1: Extend Bridge to Support Claims
97+
962 stars
982 stars
97Pull requests to azimuth-js and bridge, as specified above, have been merged.
99Pull requests to azimuth-js and bridge, as specified above, have been merged.
98
100
99−
100### Part 2: Create the senate-group-hook
101### Part 2: Create the senate-group-hook
102+
1012 stars
1032 stars
102Pull requests against the antechamber repo mentioned above have been merged.
104Pull requests against the antechamber repo mentioned above have been merged.
103−
104−
content/grants/art-by-urbit.md+3−7
@@ -2,7 +2,7 @@
2title = "Art by Urbit"
2title = "Art by Urbit"
3date = 2020-08-27
3date = 2020-08-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -20,13 +20,9 @@ For those already homesteading Urbit, part of the regular digest will be a pair
20
20
21I'm qualified to carry out this proposal as I have built a portfolio of prior Urbit-related art (available [here](https://twitter.com/nartesfasrum) ) and have prior experience building & deploying websites & social media promotional campaigns.
21I'm qualified to carry out this proposal as I have built a portfolio of prior Urbit-related art (available [here](https://twitter.com/nartesfasrum) ) and have prior experience building & deploying websites & social media promotional campaigns.
22
22
23−
24−
25## Milestones
23## Milestones
26
24
27−
28### Six months of regular digests
25### Six months of regular digests
29−1 stars
30−As described - six months of regular monthly Art by Urbit digests, posted to the Art by Urbit website & promoted on social media.
31
26
32−
27+1 stars
28+As described - six months of regular monthly Art by Urbit digests, posted to the Art by Urbit website & promoted on social media.
content/grants/bart-train-tracker-landscape-tile.md+8−10
@@ -2,8 +2,8 @@
2title = "BART Train Tracker Landscape Tile"
2title = "BART Train Tracker Landscape Tile"
3date = 2020-03-05
3date = 2020-03-05
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A backend for a BART client on Urbit."
9description = "A backend for a BART client on Urbit."
@@ -21,11 +21,11 @@ Create a backend for importing BART (Bay Area Rapid Transit) arrival and departu
21
21
22We would like to create a BART information Landscape tile. The backend should access real-time departure and arrival information for the complete list of stations via the BART API, as well as the data feeds for schedule tables, elevator outages, system advisories, and train counts. The tile interface should encompass:
22We would like to create a BART information Landscape tile. The backend should access real-time departure and arrival information for the complete list of stations via the BART API, as well as the data feeds for schedule tables, elevator outages, system advisories, and train counts. The tile interface should encompass:
23
23
24−- A real-time trip planner using the BART data, similar to the one on the official BART website.
24+- A real-time trip planner using the BART data, similar to the one on the official BART website.
25−- Links for schedule tables for weekday, weekend, holiday service.
25+- Links for schedule tables for weekday, weekend, holiday service.
26- The open-source BART map linked below.
26- The open-source BART map linked below.
27- A place (possibly a scrolling feed?) for BART service alerts.
27- A place (possibly a scrolling feed?) for BART service alerts.
28−- A place for BART elevator closure status (this is a separate data channel).
28+- A place for BART elevator closure status (this is a separate data channel).
29
29
30Resources:
30Resources:
31
31
@@ -33,18 +33,16 @@ Resources:
33- [BART API Developer License Agreement](https://www.bart.gov/schedules/developers/developer-license-agreement)
33- [BART API Developer License Agreement](https://www.bart.gov/schedules/developers/developer-license-agreement)
34
34
35### Contribution Guidelines:
35### Contribution Guidelines:
36+
36- Do not begin work until your request to claim this bounty is accepted.
37- Do not begin work until your request to claim this bounty is accepted.
37- Submit your work as a pull request to the [urbit/urbit repo](https://github.com/urbit/urbit/pulls)
38- Submit your work as a pull request to the [urbit/urbit repo](https://github.com/urbit/urbit/pulls)
38- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
39- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
39- You have 90 days from the time of approval to complete this bounty.
40- You have 90 days from the time of approval to complete this bounty.
40−- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
41+- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
41−
42
42
43## Milestones
43## Milestones
44
44
45−
46### Your PR is merged
45### Your PR is merged
46+
473 stars
473 stars
48Your code is accepted and merged.
48Your code is accepted and merged.
49−
50−
content/grants/bitcoin-full-node-provider-and-wallet.md+39−32
@@ -2,8 +2,8 @@
2title = "Bitcoin Full Node Provider and Wallet"
2title = "Bitcoin Full Node Provider and Wallet"
3date = 2020-09-23
3date = 2020-09-23
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "This bounty covers the creation of infrastructure (gall agents) required to enable a Bitcoin-based payments system from within Landscape."
9description = "This bounty covers the creation of infrastructure (gall agents) required to enable a Bitcoin-based payments system from within Landscape."
@@ -15,21 +15,25 @@ link = ""
15+++
15+++
16
16
17## Introduction
17## Introduction
18+
18Creation of a wallet that supports various currencies is the basis for building an economy in Urbit. Bitcoin is a natural starting point due to both 1) the philosophical alignment with the project, 2) the prior art already done towards this end, and 3) its ubiquity.
19Creation of a wallet that supports various currencies is the basis for building an economy in Urbit. Bitcoin is a natural starting point due to both 1) the philosophical alignment with the project, 2) the prior art already done towards this end, and 3) its ubiquity.
19
20
20This bounty covers the creation of a wallet that supports the use of Bitcoin and the infrastructure required to connect ships to the Bitcoin network. You will have the support of the Urbit Foundation in the development of this project, and will work closely with its director to refine requirements and test the resulting system.
21This bounty covers the creation of a wallet that supports the use of Bitcoin and the infrastructure required to connect ships to the Bitcoin network. You will have the support of the Urbit Foundation in the development of this project, and will work closely with its director to refine requirements and test the resulting system.
21
22
22## Background
23## Background
24+
23Starting last year, several bounties were released to implement the Bitcoin JSON RPC API. Later another bounty was released to build a Bitcoin wallet. The RPC API work is now (nearly) complete, but the wallet work is not. The first iteration of the wallet ultimately failed due to lack of clear scope, but provided many valuable ideas that can still be leveraged.
25Starting last year, several bounties were released to implement the Bitcoin JSON RPC API. Later another bounty was released to build a Bitcoin wallet. The RPC API work is now (nearly) complete, but the wallet work is not. The first iteration of the wallet ultimately failed due to lack of clear scope, but provided many valuable ideas that can still be leveraged.
24
26
25The Bitcoin RPC API was a huge lift and provides the foundation needed to complete this bounty. There are still ongoing performance issues with a handful of RPC calls, but they're close to completion—most of the RPC API works fine and shouldn't block this project from getting started.
27The Bitcoin RPC API was a huge lift and provides the foundation needed to complete this bounty. There are still ongoing performance issues with a handful of RPC calls, but they're close to completion—most of the RPC API works fine and shouldn't block this project from getting started.
26
28
27### Resources
29### Resources
30+
28−* [Bitcoin RPC API Pull Request](https://github.com/urbit/urbit/pull/1892)
31+- [Bitcoin RPC API Pull Request](https://github.com/urbit/urbit/pull/1892)
29−* [Bitcoin RPC API Documentation](https://developer.bitcoin.org/reference/rpc/index.html)
32+- [Bitcoin RPC API Documentation](https://developer.bitcoin.org/reference/rpc/index.html)
30−* [Original Bitcoin Wallet work](https://github.com/urbit/urbit/tree/mp/bitcoin)
33+- [Original Bitcoin Wallet work](https://github.com/urbit/urbit/tree/mp/bitcoin)
31
34
32## Overview
35## Overview
36+
33The ultimate goal is to have a wallet application within Landscape that ships can use to send payments to one another using a variety of digital currencies, starting with Bitcoin.
37The ultimate goal is to have a wallet application within Landscape that ships can use to send payments to one another using a variety of digital currencies, starting with Bitcoin.
34
38
35In order to make our wallet useful, a bridge from Urbit to the Bitcoin network will need to be built that uses the RPC API to communicate with a full node. In an ideal world each ship would run their own full node—practically, this is unrealistic due to the high technical and resource requirements of running a full node. For this reason, the solution to this bounty should provide a mechanism for ships that do not run a full node to connect to the Bitcoin network via other ships that choose to provide access to their node. Care must be taken to minimize the required amount of trust in this instance.
39In order to make our wallet useful, a bridge from Urbit to the Bitcoin network will need to be built that uses the RPC API to communicate with a full node. In an ideal world each ship would run their own full node—practically, this is unrealistic due to the high technical and resource requirements of running a full node. For this reason, the solution to this bounty should provide a mechanism for ships that do not run a full node to connect to the Bitcoin network via other ships that choose to provide access to their node. Care must be taken to minimize the required amount of trust in this instance.
@@ -39,54 +43,57 @@ The wallet should be able to represent an "account," which correspond to public/
39From the wallet application, ships should be able to do payments and check the balance and transaction history for each account. The implementation should respect security best-practices by keeping private keys safe and identity secret to the highest extent as is reasonably possible.
43From the wallet application, ships should be able to do payments and check the balance and transaction history for each account. The implementation should respect security best-practices by keeping private keys safe and identity secret to the highest extent as is reasonably possible.
40
44
41### Project Requirements
45### Project Requirements
46+
42−* Ships can send payment in Bitcoin to other ships.
47+- Ships can send payment in Bitcoin to other ships.
43−* Ships can send payment in Bitcoin to addresses.
48+- Ships can send payment in Bitcoin to addresses.
44−* Ships can connect to full nodes that they run on their own.
49+- Ships can connect to full nodes that they run on their own.
45−* Ships can connect to full nodes operated by other ships.
50+- Ships can connect to full nodes operated by other ships.
46−* Private keys are never entrusted to any other entity.
51+- Private keys are never entrusted to any other entity.
47−* Ships can view the transaction history for any Bitcoin account they own.
52+- Ships can view the transaction history for any Bitcoin account they own.
48−* Ships can view the balance of any Bitcoin account they own.
53+- Ships can view the balance of any Bitcoin account they own.
49
54
50### User Stories
55### User Stories
56+
51The bridge to the Bitcoin network should satisfy the following stories.
57The bridge to the Bitcoin network should satisfy the following stories.
58+
52−* As a ship, I can connect to a full node that I control, becoming a host.
59+- As a ship, I can connect to a full node that I control, becoming a host.
53−* As a ship, I can connect to a full node via another ship, becoming a client.
60+- As a ship, I can connect to a full node via another ship, becoming a client.
54−* As a host, I can control which other ships can access my full node.
61+- As a host, I can control which other ships can access my full node.
55−* As a host or client, I can check the balance of my Bitcoin addresses.
62+- As a host or client, I can check the balance of my Bitcoin addresses.
56−* As a host or client, I can broadcast a signed transaction to the Bitcoin network.
63+- As a host or client, I can broadcast a signed transaction to the Bitcoin network.
57−* As a host or client, I can obtain a list of transactions for my Bitcoin account(s).
64+- As a host or client, I can obtain a list of transactions for my Bitcoin account(s).
58
65
59The wallet should satisfy these stories:
66The wallet should satisfy these stories:
67+
60−* As a ship, I can see my overall balance for an account.
68+- As a ship, I can see my overall balance for an account.
61−* As a ship, I can see all transactions for a specific account.
69+- As a ship, I can see all transactions for a specific account.
62−* As a ship, I can construct an unsigned transaction.
70+- As a ship, I can construct an unsigned transaction.
63−* As a ship, I can send Bitcoin to other ships, becoming a payer.
71+- As a ship, I can send Bitcoin to other ships, becoming a payer.
64−* As a payer, I can tell when my payment has succeeded.
72+- As a payer, I can tell when my payment has succeeded.
65−* As a ship, I can receive bitcoin from other ships, becoming a payee.
73+- As a ship, I can receive bitcoin from other ships, becoming a payee.
66−* As a payee, I can provide a unique address for each transaction.
74+- As a payee, I can provide a unique address for each transaction.
67−* As a payee, I can tell when I have received payment.
75+- As a payee, I can tell when I have received payment.
68
76
69### Proposed Architecture
77### Proposed Architecture
78+
70−A design for a system that satisfies the above requirements has been outlined [here](https://gist.github.com/jalehman/e0c91071427ca4c349c0673f376945cb). It's not a requirement to use this architecture, but it's probably a good starting place, as it's been vetted by a few people within the community. Ideally the architecture will be further refined collaboratively with you, the claimant.
79+A design for a system that satisfies the above requirements has been outlined [here](https://gist.github.com/jalehman/e0c91071427ca4c349c0673f376945cb). It's not a requirement to use this architecture, but it's probably a good starting place, as it's been vetted by a few people within the community. Ideally the architecture will be further refined collaboratively with you, the claimant.
71
80
72### Expectations
81### Expectations
82+
73You will work closely with the director of urbit.org on this project. This means that, at a minimum, weekly check-in calls will be held to discuss the project's progress. Additionally, the worker is expected to provide regular status updates on the project to the Urbit community via twice-monthly updates on this bounty.
83You will work closely with the director of urbit.org on this project. This means that, at a minimum, weekly check-in calls will be held to discuss the project's progress. Additionally, the worker is expected to provide regular status updates on the project to the Urbit community via twice-monthly updates on this bounty.
74
84
75The director will ensure that you have access to the necessary resources to complete this project. All prior work done on this project will be explained and made available to you, and should questions arise that require the expertise of engineers at Tlon, time will be made (schedules permitting) for your questions to be answered either in writing or over a call.
85The director will ensure that you have access to the necessary resources to complete this project. All prior work done on this project will be explained and made available to you, and should questions arise that require the expertise of engineers at Tlon, time will be made (schedules permitting) for your questions to be answered either in writing or over a call.
76
86
77The worker should have a background that either demonstrates experience building Gall agents, or developing on Bitcoin (or similar crypto systems)--both would be even better.
87The worker should have a background that either demonstrates experience building Gall agents, or developing on Bitcoin (or similar crypto systems)--both would be even better.
78
88
79−
80## Milestones
89## Milestones
81
90
82−
83### Implement the full node bridge/provider
91### Implement the full node bridge/provider
92+
843 stars
933 stars
85Create a set of gall agents to interface with a Bitcoin full node, access to which can be provided to other ships.
94Create a set of gall agents to interface with a Bitcoin full node, access to which can be provided to other ships.
86
95
87−
88### Implement the wallet
96### Implement the wallet
97+
893 stars
983 stars
90Create a set of gall agents to handle extended public keys, address derivation, and facilitate payments between ships.
99Create a set of gall agents to handle extended public keys, address derivation, and facilitate payments between ships.
91−
92−
content/grants/bitcoin-key-derivation.md+17−15
@@ -2,8 +2,8 @@
2title = "Bitcoin Key Derivation"
2title = "Bitcoin Key Derivation"
3date = 2020-10-02
3date = 2020-10-02
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "The Urbit HD Wallet allows for many different keys to be generated from a single master ticket. Your task is to use this mechanism to generate Bitcoin keys and expose ways of interacting with them."
9description = "The Urbit HD Wallet allows for many different keys to be generated from a single master ticket. Your task is to use this mechanism to generate Bitcoin keys and expose ways of interacting with them."
@@ -15,31 +15,35 @@ link = ""
15+++
15+++
16
16
17## Overview
17## Overview
18+
18−Our goal is to build a Bitcoin payment experience that allows any ship to use their Urbit ID additionally as an address that can send and receive Bitcoin. Ideally a new ship needs nothing more than Landscape for interacting with the Bitcoin network (see [the Bitcoin Full Node Provider and Wallet bounty](https://grants.urbit.org/bounties/2056919898-bitcoin-full-node-provider-and-wallet)) and their Urbit ID for receiving Bitcoin and signing transactions (this bounty). This provides an easy onramp to working with Bitcoin without compromising on security or privacy.
19+Our goal is to build a Bitcoin payment experience that allows any ship to use their Urbit ID additionally as an address that can send and receive Bitcoin. Ideally a new ship needs nothing more than Landscape for interacting with the Bitcoin network (see [the Bitcoin Full Node Provider and Wallet bounty](https://grants.urbit.org/bounties/2056919898-bitcoin-full-node-provider-and-wallet)) and their Urbit ID for receiving Bitcoin and signing transactions (this bounty). This provides an easy onramp to working with Bitcoin without compromising on security or privacy.
19
20
20Interacting with Bitcoin private keys, like your Urbit master ticket, requires a secure environment. As long as Urbit remains unaudited, it’s best to not use a master ticket to directly access your Urbit—this is why we built Bridge. [Bridge](https://bridge.urbit.org) is designed to be a secure environment, making it an ideal candidate for handling our sensitive Bitcoin keys.
21Interacting with Bitcoin private keys, like your Urbit master ticket, requires a secure environment. As long as Urbit remains unaudited, it’s best to not use a master ticket to directly access your Urbit—this is why we built Bridge. [Bridge](https://bridge.urbit.org) is designed to be a secure environment, making it an ideal candidate for handling our sensitive Bitcoin keys.
21
22
22## User Stories
23## User Stories
24+
23This bounty should provide extensions to Bridge that satisfy the following user stories:
25This bounty should provide extensions to Bridge that satisfy the following user stories:
24
26
25−* As an user, I can obtain my Bitcoin extended public key (xpub).
27+- As an user, I can obtain my Bitcoin extended public key (xpub).
26−* As an user, I can copy my xpub to the clipboard.
28+- As an user, I can copy my xpub to the clipboard.
27−* As an user, I can sign a constructed transaction.
29+- As an user, I can sign a constructed transaction.
28−* As an user, I can copy a signed transaction to the clipboard.
30+- As an user, I can copy a signed transaction to the clipboard.
29
31
30−For the purposes of this bounty, obtaining an extended public key would consist of copying it to the clipboard for input into Landscape, where the Bitcoin wallet will need it for performing address derivation. Signing a transaction will go in the other direction; a “constructed” transaction (consisting of everything but the signature) will be generated from within Landscape, input into Bridge for signing, and then the signed transaction will be input back to Landscape for broadcasting over the Bitcoin network.
32+For the purposes of this bounty, obtaining an extended public key would consist of copying it to the clipboard for input into Landscape, where the Bitcoin wallet will need it for performing address derivation. Signing a transaction will go in the other direction; a “constructed” transaction (consisting of everything but the signature) will be generated from within Landscape, input into Bridge for signing, and then the signed transaction will be input back to Landscape for broadcasting over the Bitcoin network.
31
33
32While this flow isn’t the most user-friendly, the functionality will ultimately be possible to port into Landscape a) once it runs in a more secure environment (e.g. Electron), and b) once Urbit is receives a thorough security audit.
34While this flow isn’t the most user-friendly, the functionality will ultimately be possible to port into Landscape a) once it runs in a more secure environment (e.g. Electron), and b) once Urbit is receives a thorough security audit.
33
35
34## Deliverables
36## Deliverables
37+
35Your solution to this bounty should include pull requests against these repositories:
38Your solution to this bounty should include pull requests against these repositories:
36
39
37−* [urbit-key-generation](https://github.com/urbit/urbit-key-generation): This library is responsible for deriving keys from a master ticket—this is where Bitcoin key generation should occur.
40+- [urbit-key-generation](https://github.com/urbit/urbit-key-generation): This library is responsible for deriving keys from a master ticket—this is where Bitcoin key generation should occur.
38−* [bridge](https://github.com/urbit/bridge/): Bridge should be extended to include a new top-level “Bitcoin” section, which should provide access to the xpub key and a place for signing transactions.
41+- [bridge](https://github.com/urbit/bridge/): Bridge should be extended to include a new top-level “Bitcoin” section, which should provide access to the xpub key and a place for signing transactions.
39
42
40Design mockups will be provided to the worker upon claiming this bounty.
43Design mockups will be provided to the worker upon claiming this bounty.
41
44
42## Expectations
45## Expectations
46+
43You will work closely with the director of urbit.org on this project. This means that, at a minimum, weekly check-in calls will be held to discuss the project's progress. Additionally, the worker is expected to provide regular status updates on the project to the Urbit community via twice-monthly updates on this bounty.
47You will work closely with the director of urbit.org on this project. This means that, at a minimum, weekly check-in calls will be held to discuss the project's progress. Additionally, the worker is expected to provide regular status updates on the project to the Urbit community via twice-monthly updates on this bounty.
44
48
45The director will ensure that you have access to the necessary resources to complete this project. All prior work done on this project will be explained and made available to you, and should questions arise that require the expertise of engineers at Tlon, time will be made (schedules permitting) for your questions to be answered either in writing or over a call.
49The director will ensure that you have access to the necessary resources to complete this project. All prior work done on this project will be explained and made available to you, and should questions arise that require the expertise of engineers at Tlon, time will be made (schedules permitting) for your questions to be answered either in writing or over a call.
@@ -48,14 +52,12 @@ The worker should have a background that demonstrates proficiency with building
48
52
49### Resources
53### Resources
50
54
51−* [Urbit HD Wallet design](https://github.com/urbit/fora-posts/blob/master/proposals/posts/~2018.11.8..19.31.59..ba77~.md)
55+- [Urbit HD Wallet design](https://github.com/urbit/fora-posts/blob/master/proposals/posts/~2018.11.8..19.31.59..ba77~.md)
52−* [BIP-32 re: extended public keys](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#Extended_keys)
56+- [BIP-32 re: extended public keys](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#Extended_keys)
53
57
54## Milestones
58## Milestones
55
59
56−
57### Work is Complete
60### Work is Complete
61+
582 stars
622 stars
59Pull requests to each repository have been submitted, reviewed and merged.
63Pull requests to each repository have been submitted, reviewed and merged.
60−
61−
content/grants/bitcoin-node-json-rpc-api-part-1.md+21−18
@@ -2,8 +2,8 @@
2title = "Bitcoin Node JSON RPC API (Part 1)"
2title = "Bitcoin Node JSON RPC API (Part 1)"
3date = 2019-11-15
3date = 2019-11-15
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part one."
9description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part one."
@@ -15,34 +15,37 @@ link = ""
15+++
15+++
16
16
17#### Background
17#### Background
18+
18To expand Urbit’s Bitcoin-related capabilities, we are building a Gall app which can comprehensively control a Bitcoin Core full node via the JSON RPC API. The app is contained in [this branch](https://github.com/urbit/urbit/tree/btc-node-grant) of the Urbit repo, and the original conception of this idea is discussed [here](https://github.com/urbit/arvo/pull/1052). Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a "money primitive" for future Gall apps.
19To expand Urbit’s Bitcoin-related capabilities, we are building a Gall app which can comprehensively control a Bitcoin Core full node via the JSON RPC API. The app is contained in [this branch](https://github.com/urbit/urbit/tree/btc-node-grant) of the Urbit repo, and the original conception of this idea is discussed [here](https://github.com/urbit/arvo/pull/1052). Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a "money primitive" for future Gall apps.
19
20
20Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
21Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
21
22
22#### Bounty Description
23#### Bounty Description
24+
23−This bounty is to create a portion of the Gall app library for Remote Procedure Calls to a Bitcoin Core full node, written in Hoon. The other portions are covered in these grants: [Two](https://grants.urbit.org/bounties/1577544668-bitcoin-node-json-rpc-api-part-2), [Three](https://grants.urbit.org/bounties/312452925-bitcoin-node-json-rpc-api-part-3), [Four](https://grants.urbit.org/bounties/87854308-bitcoin-node-json-rpc-api-part-4).
25+This bounty is to create a portion of the Gall app library for Remote Procedure Calls to a Bitcoin Core full node, written in Hoon. The other portions are covered in these grants: [Two](https://grants.urbit.org/bounties/1577544668-bitcoin-node-json-rpc-api-part-2), [Three](https://grants.urbit.org/bounties/312452925-bitcoin-node-json-rpc-api-part-3), [Four](https://grants.urbit.org/bounties/87854308-bitcoin-node-json-rpc-api-part-4).
26+
24−* Specifically, this bounty is to create types and JSON conversions for commands and responses of the first section of the [Bitcoin Core API reference](https://bitcoincore.org/en/doc/0.18.0/ ), titled “Blockchain”:
27+- Specifically, this bounty is to create types and JSON conversions for commands and responses of the first section of the [Bitcoin Core API reference](https://bitcoincore.org/en/doc/0.18.0/), titled “Blockchain”:
25−* Create type definitions in Hoon for structuring commands and responses. Specify poke-action types that map to each command. Use logic specified in Bitcoin Core API resource and the template contained in the guidelines, and fill in this code where appropriate in [`pkg/arvo/lib/btc-node-json.hoon`](https://github.com/urbit/urbit/blob/9bb9b20c71a0a46edc6c52dd869017d3a51ede30/pkg/arvo/lib/btc-node-json.hoon).
28+- Create type definitions in Hoon for structuring commands and responses. Specify poke-action types that map to each command. Use logic specified in Bitcoin Core API resource and the template contained in the guidelines, and fill in this code where appropriate in [`pkg/arvo/lib/btc-node-json.hoon`](https://github.com/urbit/urbit/blob/9bb9b20c71a0a46edc6c52dd869017d3a51ede30/pkg/arvo/lib/btc-node-json.hoon).
26−* The application will be structured as two Gall agents: one “Store” and one “Hook”. The store should act as a data store for data received from the Bitcoin full node, and the Hook should send commands to the node as well as parsing the responses and poking them into the Store. A [template branch](https://github.com/urbit/urbit/tree/btc-node-grant) has been created to set up skeletons of these files to make your work easier.
29+- The application will be structured as two Gall agents: one “Store” and one “Hook”. The store should act as a data store for data received from the Bitcoin full node, and the Hook should send commands to the node as well as parsing the responses and poking them into the Store. A [template branch](https://github.com/urbit/urbit/tree/btc-node-grant) has been created to set up skeletons of these files to make your work easier.
27
30
28#### Resources
31#### Resources
32+
29−* [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
33+- [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
30−* [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
34+- [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
31−* Bitcoin Core API reference documentation: [Here](https://bitcoincore.org/en/doc/0.18.0/), [here](https://en.bitcoin.it/wiki/API_reference_(JSON-RPC), and [here](https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs).
35+- Bitcoin Core API reference documentation: [Here](https://bitcoincore.org/en/doc/0.18.0/), [here](https://en.bitcoin.it/wiki/API_reference_(JSON-RPC), and [here](https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs).
32−* Distinctions between _bitcoind_ and _bitcoin-qt_: Differences between them discussed [here](https://bitcoin.stackexchange.com/questions/13368/whats-the-difference-between-bitcoind-and-bitcoin-qt-different-commands)
36+- Distinctions between _bitcoind_ and _bitcoin-qt_: Differences between them discussed [here](https://bitcoin.stackexchange.com/questions/13368/whats-the-difference-between-bitcoind-and-bitcoin-qt-different-commands)
33−* [JSON RPC API standards](https://www.jsonrpc.org/specification)
37+- [JSON RPC API standards](https://www.jsonrpc.org/specification)
34
38
35#### Contribution Guidelines
39#### Contribution Guidelines
36−* Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
37−* Base your work off of the [btc-node-grant branch](https://github.com/urbit/urbit/tree/btc-node-grant). Follow Boilerplate. Look for `TODO`s.
38−* Submit your code as a PR to the [btc-node-grant](https://github.com/urbit/urbit/tree/btc-node-grant) branch of the `urbit` repo in form of a `.hoon` file.
39−* You have 45 days from the time of approval to complete this bounty.
40
40
41−## Milestones
41+- Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
42+- Base your work off of the [btc-node-grant branch](https://github.com/urbit/urbit/tree/btc-node-grant). Follow Boilerplate. Look for `TODO`s.
43+- Submit your code as a PR to the [btc-node-grant](https://github.com/urbit/urbit/tree/btc-node-grant) branch of the `urbit` repo in form of a `.hoon` file.
44+- You have 45 days from the time of approval to complete this bounty.
42
45
46+## Milestones
43
47
44### Your PR is merged
48### Your PR is merged
49+
451 stars
501 stars
46Your PR containing all the relevant code updates is accepted and merged.
51Your PR containing all the relevant code updates is accepted and merged.
47−
48−
content/grants/bitcoin-node-json-rpc-api-part-2.md+21−18
@@ -2,8 +2,8 @@
2title = "Bitcoin Node JSON RPC API (Part 2)"
2title = "Bitcoin Node JSON RPC API (Part 2)"
3date = 2019-10-01
3date = 2019-10-01
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part two."
9description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part two."
@@ -15,34 +15,37 @@ link = ""
15+++
15+++
16
16
17#### Background
17#### Background
18+
18To expand Urbit’s Bitcoin-related capabilities, we are building a Gall app which can comprehensively control a Bitcoin Core full node via the JSON RPC API. The app is contained in [this branch](https://github.com/urbit/urbit/tree/btc-node-grant) of the Urbit repo, and the original conception of this idea is discussed [here](https://github.com/urbit/arvo/pull/1052). Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a "money primitive" for future Gall apps.
19To expand Urbit’s Bitcoin-related capabilities, we are building a Gall app which can comprehensively control a Bitcoin Core full node via the JSON RPC API. The app is contained in [this branch](https://github.com/urbit/urbit/tree/btc-node-grant) of the Urbit repo, and the original conception of this idea is discussed [here](https://github.com/urbit/arvo/pull/1052). Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a "money primitive" for future Gall apps.
19
20
20Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
21Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
21
22
22#### Bounty Description
23#### Bounty Description
24+
23−This bounty is to create a portion of the Gall app library for Remote Procedure Calls to a Bitcoin Core full node, written in Hoon. The other portions are covered in these grants: [One](https://grants.urbit.org/bounties/1507085808-bitcoin-node-json-rpc-api-part-1), [Three](https://grants.urbit.org/bounties/312452925-bitcoin-node-json-rpc-api-part-3), [Four](https://grants.urbit.org/bounties/87854308-bitcoin-node-json-rpc-api-part-4).
25+This bounty is to create a portion of the Gall app library for Remote Procedure Calls to a Bitcoin Core full node, written in Hoon. The other portions are covered in these grants: [One](https://grants.urbit.org/bounties/1507085808-bitcoin-node-json-rpc-api-part-1), [Three](https://grants.urbit.org/bounties/312452925-bitcoin-node-json-rpc-api-part-3), [Four](https://grants.urbit.org/bounties/87854308-bitcoin-node-json-rpc-api-part-4).
26+
24−* Specifically, this bounty is to create types and JSON conversions for commands and responses of the sections of the [Bitcoin Core API reference](https://bitcoincore.org/en/doc/0.18.0/ ), titled **“Control”**, **“Generating”**, **“Mining”**, and **“Network”**:
27+- Specifically, this bounty is to create types and JSON conversions for commands and responses of the sections of the [Bitcoin Core API reference](https://bitcoincore.org/en/doc/0.18.0/), titled **“Control”**, **“Generating”**, **“Mining”**, and **“Network”**:
25−* Create type definitions in Hoon for structuring commands and responses. Specify poke-action types that map to each command. Use logic specified in Bitcoin Core API resource and the template contained in the guidelines, and fill in this code where appropriate in [`pkg/arvo/lib/btc-node-json.hoon`](https://github.com/urbit/urbit/blob/9bb9b20c71a0a46edc6c52dd869017d3a51ede30/pkg/arvo/lib/btc-node-json.hoon).
28+- Create type definitions in Hoon for structuring commands and responses. Specify poke-action types that map to each command. Use logic specified in Bitcoin Core API resource and the template contained in the guidelines, and fill in this code where appropriate in [`pkg/arvo/lib/btc-node-json.hoon`](https://github.com/urbit/urbit/blob/9bb9b20c71a0a46edc6c52dd869017d3a51ede30/pkg/arvo/lib/btc-node-json.hoon).
26−* The application will be structured as two Gall agents: one “Store” and one “Hook”. The store should act as a data store for data received from the Bitcoin full node, and the Hook should send commands to the node as well as parsing the responses and poking them into the Store. A [template branch](https://github.com/urbit/urbit/tree/btc-node-grant) has been created to set up skeletons of these files to make your work easier.
29+- The application will be structured as two Gall agents: one “Store” and one “Hook”. The store should act as a data store for data received from the Bitcoin full node, and the Hook should send commands to the node as well as parsing the responses and poking them into the Store. A [template branch](https://github.com/urbit/urbit/tree/btc-node-grant) has been created to set up skeletons of these files to make your work easier.
27
30
28#### Resources
31#### Resources
32+
29−* [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
33+- [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
30−* [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
34+- [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
31−* Bitcoin Core API reference documentation: [Here](https://bitcoincore.org/en/doc/0.18.0/), [here](https://en.bitcoin.it/wiki/API_reference_(JSON-RPC), and [here](https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs).
35+- Bitcoin Core API reference documentation: [Here](https://bitcoincore.org/en/doc/0.18.0/), [here](https://en.bitcoin.it/wiki/API_reference_(JSON-RPC), and [here](https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs).
32−* Distinctions between _bitcoind_ and _bitcoin-qt_: Differences between them discussed [here](https://bitcoin.stackexchange.com/questions/13368/whats-the-difference-between-bitcoind-and-bitcoin-qt-different-commands)
36+- Distinctions between _bitcoind_ and _bitcoin-qt_: Differences between them discussed [here](https://bitcoin.stackexchange.com/questions/13368/whats-the-difference-between-bitcoind-and-bitcoin-qt-different-commands)
33−* [JSON RPC API standards](https://www.jsonrpc.org/specification)
37+- [JSON RPC API standards](https://www.jsonrpc.org/specification)
34
38
35#### Contribution Guidelines
39#### Contribution Guidelines
36−* Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
37−* Base your work off of the [btc-node-grant branch](https://github.com/urbit/urbit/tree/btc-node-grant). Follow Boilerplate. Look for `TODO`s.
38−* Submit your code as a PR to the [btc-node-grant](https://github.com/urbit/urbit/tree/btc-node-grant) branch of the `urbit` repo in form of a `.hoon` file.
39−* You have 45 days from the time of approval to complete this bounty.
40
40
41−## Milestones
41+- Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
42+- Base your work off of the [btc-node-grant branch](https://github.com/urbit/urbit/tree/btc-node-grant). Follow Boilerplate. Look for `TODO`s.
43+- Submit your code as a PR to the [btc-node-grant](https://github.com/urbit/urbit/tree/btc-node-grant) branch of the `urbit` repo in form of a `.hoon` file.
44+- You have 45 days from the time of approval to complete this bounty.
42
45
46+## Milestones
43
47
44### Your PR is merged
48### Your PR is merged
49+
451 stars
501 stars
46Your PR containing all the relevant code updates is accepted and merged.
51Your PR containing all the relevant code updates is accepted and merged.
47−
48−
content/grants/bitcoin-node-json-rpc-api-part-3.md+20−18
@@ -2,8 +2,8 @@
2title = "Bitcoin Node JSON RPC API (Part 3)"
2title = "Bitcoin Node JSON RPC API (Part 3)"
3date = 2019-10-01
3date = 2019-10-01
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part three."
9description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part three."
@@ -15,35 +15,37 @@ link = ""
15+++
15+++
16
16
17#### Background
17#### Background
18+
18To expand Urbit’s Bitcoin-related capabilities, we are building a Gall app which can comprehensively control a Bitcoin Core full node via the JSON RPC API. The app is contained in [this branch](https://github.com/urbit/urbit/tree/btc-node-grant) of the Urbit repo, and the original conception of this idea is discussed [here](https://github.com/urbit/arvo/pull/1052). Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a "money primitive" for future Gall apps.
19To expand Urbit’s Bitcoin-related capabilities, we are building a Gall app which can comprehensively control a Bitcoin Core full node via the JSON RPC API. The app is contained in [this branch](https://github.com/urbit/urbit/tree/btc-node-grant) of the Urbit repo, and the original conception of this idea is discussed [here](https://github.com/urbit/arvo/pull/1052). Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a "money primitive" for future Gall apps.
19
20
20Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
21Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
21
22
22#### Bounty Description
23#### Bounty Description
24+
23−This bounty is to create a portion of the Gall app library for Remote Procedure Calls to a Bitcoin Core full node, written in Hoon. The other portions are covered in these grants: [One](https://grants.urbit.org/bounties/1507085808-bitcoin-node-json-rpc-api-part-1), [Two](https://grants.urbit.org/bounties/1577544668-bitcoin-node-json-rpc-api-part-2), [Four](https://grants.urbit.org/bounties/87854308-bitcoin-node-json-rpc-api-part-4).
25+This bounty is to create a portion of the Gall app library for Remote Procedure Calls to a Bitcoin Core full node, written in Hoon. The other portions are covered in these grants: [One](https://grants.urbit.org/bounties/1507085808-bitcoin-node-json-rpc-api-part-1), [Two](https://grants.urbit.org/bounties/1577544668-bitcoin-node-json-rpc-api-part-2), [Four](https://grants.urbit.org/bounties/87854308-bitcoin-node-json-rpc-api-part-4).
26+
24−* Specifically, this bounty is to create types and JSON conversions for commands and responses of the sections of the [Bitcoin Core API reference](https://bitcoincore.org/en/doc/0.18.0/ ) titled **"Raw Transactions"** and **"Util"**
27+- Specifically, this bounty is to create types and JSON conversions for commands and responses of the sections of the [Bitcoin Core API reference](https://bitcoincore.org/en/doc/0.18.0/) titled **"Raw Transactions"** and **"Util"**
25−* Create type definitions in Hoon for structuring commands and responses. Specify poke-action types that map to each command. Use logic specified in Bitcoin Core API resource and the template contained in the guidelines, and fill in this code where appropriate in [`pkg/arvo/lib/btc-node-json.hoon`](https://github.com/urbit/urbit/blob/9bb9b20c71a0a46edc6c52dd869017d3a51ede30/pkg/arvo/lib/btc-node-json.hoon).
28+- Create type definitions in Hoon for structuring commands and responses. Specify poke-action types that map to each command. Use logic specified in Bitcoin Core API resource and the template contained in the guidelines, and fill in this code where appropriate in [`pkg/arvo/lib/btc-node-json.hoon`](https://github.com/urbit/urbit/blob/9bb9b20c71a0a46edc6c52dd869017d3a51ede30/pkg/arvo/lib/btc-node-json.hoon).
26−* The application will be structured as two Gall agents: one “Store” and one “Hook”. The store should act as a data store for data received from the Bitcoin full node, and the Hook should send commands to the node as well as parsing the responses and poking them into the Store. A [template branch](https://github.com/urbit/urbit/tree/btc-node-grant) has been created to set up skeletons of these files to make your work easier.
29+- The application will be structured as two Gall agents: one “Store” and one “Hook”. The store should act as a data store for data received from the Bitcoin full node, and the Hook should send commands to the node as well as parsing the responses and poking them into the Store. A [template branch](https://github.com/urbit/urbit/tree/btc-node-grant) has been created to set up skeletons of these files to make your work easier.
27
30
28#### Resources
31#### Resources
32+
29−* [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
33+- [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
30−* [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
34+- [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
31−* Bitcoin Core API reference documentation: [Here](https://bitcoincore.org/en/doc/0.18.0/), [here](https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs).
35+- Bitcoin Core API reference documentation: [Here](https://bitcoincore.org/en/doc/0.18.0/), [here](https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs).
32−* Distinctions between _bitcoind_ and _bitcoin-qt_: Differences between them discussed [here](https://bitcoin.stackexchange.com/questions/13368/whats-the-difference-between-bitcoind-and-bitcoin-qt-different-commands)
36+- Distinctions between _bitcoind_ and _bitcoin-qt_: Differences between them discussed [here](https://bitcoin.stackexchange.com/questions/13368/whats-the-difference-between-bitcoind-and-bitcoin-qt-different-commands)
33−* [JSON RPC API standards](https://www.jsonrpc.org/specification)
37+- [JSON RPC API standards](https://www.jsonrpc.org/specification)
34
38
35#### Contribution Guidelines
39#### Contribution Guidelines
36−* Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
37−* Base your work off of the [btc-node-grant branch](https://github.com/urbit/urbit/tree/btc-node-grant). Follow Boilerplate. Look for `TODO`s.
38−* Submit your code as a PR to the [btc-node-grant](https://github.com/urbit/urbit/tree/btc-node-grant) branch of the `urbit` repo in form of a `.hoon` file.
39−* You have 45 days from the time of approval to complete this bounty.
40
40
41+- Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
42+- Base your work off of the [btc-node-grant branch](https://github.com/urbit/urbit/tree/btc-node-grant). Follow Boilerplate. Look for `TODO`s.
43+- Submit your code as a PR to the [btc-node-grant](https://github.com/urbit/urbit/tree/btc-node-grant) branch of the `urbit` repo in form of a `.hoon` file.
44+- You have 45 days from the time of approval to complete this bounty.
41
45
42## Milestones
46## Milestones
43
47
44−
45### Your PR is merged
48### Your PR is merged
49+
461 stars
501 stars
47Your PR containing all the relevant code updates is accepted and merged.
51Your PR containing all the relevant code updates is accepted and merged.
48−
49−
content/grants/bitcoin-node-json-rpc-api-part-4.md+21−18
@@ -2,8 +2,8 @@
2title = "Bitcoin Node JSON RPC API (Part 4)"
2title = "Bitcoin Node JSON RPC API (Part 4)"
3date = 2019-10-01
3date = 2019-10-01
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part four."
9description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part four."
@@ -15,34 +15,37 @@ link = ""
15+++
15+++
16
16
17#### Background
17#### Background
18+
18To expand Urbit’s Bitcoin-related capabilities, we are building a Gall app which can comprehensively control a Bitcoin Core full node via the JSON RPC API. The app is contained in [this branch](https://github.com/urbit/urbit/tree/btc-node-grant) of the Urbit repo, and the original conception of this idea is discussed [here](https://github.com/urbit/arvo/pull/1052). Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a "money primitive" for future Gall apps.
19To expand Urbit’s Bitcoin-related capabilities, we are building a Gall app which can comprehensively control a Bitcoin Core full node via the JSON RPC API. The app is contained in [this branch](https://github.com/urbit/urbit/tree/btc-node-grant) of the Urbit repo, and the original conception of this idea is discussed [here](https://github.com/urbit/arvo/pull/1052). Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a "money primitive" for future Gall apps.
19
20
20Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
21Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
21
22
22#### Bounty Description
23#### Bounty Description
24+
23−This bounty is to create a portion of the Gall app library for Remote Procedure Calls to a Bitcoin Core full node, written in Hoon. The other portions are covered in these grants: [One](https://grants.urbit.org/bounties/1507085808-bitcoin-node-json-rpc-api-part-1), [Two](https://grants.urbit.org/bounties/1577544668-bitcoin-node-json-rpc-api-part-2), [Three](https://grants.urbit.org/bounties/312452925-bitcoin-node-json-rpc-api-part-3).
25+This bounty is to create a portion of the Gall app library for Remote Procedure Calls to a Bitcoin Core full node, written in Hoon. The other portions are covered in these grants: [One](https://grants.urbit.org/bounties/1507085808-bitcoin-node-json-rpc-api-part-1), [Two](https://grants.urbit.org/bounties/1577544668-bitcoin-node-json-rpc-api-part-2), [Three](https://grants.urbit.org/bounties/312452925-bitcoin-node-json-rpc-api-part-3).
26+
24−* Specifically, this bounty is to create types and JSON conversions for commands and responses of the sections of the [Bitcoin Core API reference](https://bitcoincore.org/en/doc/0.18.0/ ) titled **"Wallet"** and **"ZMQ"**.
27+- Specifically, this bounty is to create types and JSON conversions for commands and responses of the sections of the [Bitcoin Core API reference](https://bitcoincore.org/en/doc/0.18.0/) titled **"Wallet"** and **"ZMQ"**.
25−* Create type definitions in Hoon for structuring commands and responses. Specify poke-action types that map to each command. Use logic specified in Bitcoin Core API resource and the template contained in the guidelines, and fill in this code where appropriate in [`pkg/arvo/lib/btc-node-json.hoon`](https://github.com/urbit/urbit/blob/9bb9b20c71a0a46edc6c52dd869017d3a51ede30/pkg/arvo/lib/btc-node-json.hoon).
28+- Create type definitions in Hoon for structuring commands and responses. Specify poke-action types that map to each command. Use logic specified in Bitcoin Core API resource and the template contained in the guidelines, and fill in this code where appropriate in [`pkg/arvo/lib/btc-node-json.hoon`](https://github.com/urbit/urbit/blob/9bb9b20c71a0a46edc6c52dd869017d3a51ede30/pkg/arvo/lib/btc-node-json.hoon).
26−* The application will be structured as two Gall agents: one “Store” and one “Hook”. The store should act as a data store for data received from the Bitcoin full node, and the Hook should send commands to the node as well as parsing the responses and poking them into the Store. A [template branch](https://github.com/urbit/urbit/tree/btc-node-grant) has been created to set up skeletons of these files to make your work easier.
29+- The application will be structured as two Gall agents: one “Store” and one “Hook”. The store should act as a data store for data received from the Bitcoin full node, and the Hook should send commands to the node as well as parsing the responses and poking them into the Store. A [template branch](https://github.com/urbit/urbit/tree/btc-node-grant) has been created to set up skeletons of these files to make your work easier.
27
30
28#### Resources
31#### Resources
32+
29−* [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
33+- [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
30−* [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
34+- [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
31−* Bitcoin Core API reference documentation: [Here](https://bitcoincore.org/en/doc/0.18.0/), [here](https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs).
35+- Bitcoin Core API reference documentation: [Here](https://bitcoincore.org/en/doc/0.18.0/), [here](https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs).
32−* Distinctions between _bitcoind_ and _bitcoin-qt_: Differences between them discussed [here](https://bitcoin.stackexchange.com/questions/13368/whats-the-difference-between-bitcoind-and-bitcoin-qt-different-commands)
36+- Distinctions between _bitcoind_ and _bitcoin-qt_: Differences between them discussed [here](https://bitcoin.stackexchange.com/questions/13368/whats-the-difference-between-bitcoind-and-bitcoin-qt-different-commands)
33−* [JSON RPC API standards](https://www.jsonrpc.org/specification)
37+- [JSON RPC API standards](https://www.jsonrpc.org/specification)
34
38
35#### Contribution Guidelines
39#### Contribution Guidelines
36−* Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
37−* Base your work off of the [btc-node-grant branch](https://github.com/urbit/urbit/tree/btc-node-grant). Follow Boilerplate. Look for `TODO`s.
38−* Submit your code as a PR to the [btc-node-grant](https://github.com/urbit/urbit/tree/btc-node-grant) branch of the `urbit` repo in form of a `.hoon` file.
39−* You have 90 days from the time of approval to complete this bounty.
40
40
41−## Milestones
41+- Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
42+- Base your work off of the [btc-node-grant branch](https://github.com/urbit/urbit/tree/btc-node-grant). Follow Boilerplate. Look for `TODO`s.
43+- Submit your code as a PR to the [btc-node-grant](https://github.com/urbit/urbit/tree/btc-node-grant) branch of the `urbit` repo in form of a `.hoon` file.
44+- You have 90 days from the time of approval to complete this bounty.
42
45
46+## Milestones
43
47
44### Your PR is merged
48### Your PR is merged
49+
452 stars
502 stars
46Your PR containing all the relevant code updates is accepted and merged.
51Your PR containing all the relevant code updates is accepted and merged.
47−
48−
content/grants/bitcoin-wallet-on-bridge.md+10−10
@@ -2,8 +2,8 @@
2title = "Bitcoin Wallet on Bridge"
2title = "Bitcoin Wallet on Bridge"
3date = 2019-12-09
3date = 2019-12-09
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Azimuth"]
6+grant_category = ["App Dev", "Azimuth"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Add Bitcoin support to the Bridge interface. "
9description = "Add Bitcoin support to the Bridge interface. "
@@ -17,19 +17,20 @@ link = ""
17
17
18### Background
18### Background
19
19
20−To expand Urbit’s Bitcoin-related capabilities, this bounty is to add Bitcoin support to the Urbit wallet on bridge.urbit.org. Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a ‘money primitive’ for future Gall apps.
20+To expand Urbit’s Bitcoin-related capabilities, this bounty is to add Bitcoin support to the Urbit wallet on bridge.urbit.org. Our ultimate goal is to create Bitcoin libraries for Urbit, enabling Bitcoin to serve as a ‘money primitive’ for future Gall apps.
21
21
22### Bounty Description
22### Bounty Description
23
23
24Create an SPV (simple payment verification) Bitcoin wallet within [Bridge](https://bridge.urbit.org). Bridge is written in React; please conform to the code style Bridge has thus far been written in.
24Create an SPV (simple payment verification) Bitcoin wallet within [Bridge](https://bridge.urbit.org). Bridge is written in React; please conform to the code style Bridge has thus far been written in.
25
25
26A completed wallet should:
26A completed wallet should:
27+
27- Use the bitcoinjs-lib library for generating transactions and interfacing with Bitcoin
28- Use the bitcoinjs-lib library for generating transactions and interfacing with Bitcoin
28- Display Bitcoin balance (display as individual UTXOs)
29- Display Bitcoin balance (display as individual UTXOs)
29- Generate new addresses to receive Bitcoin
30- Generate new addresses to receive Bitcoin
30- Support transaction signing and ability to broadcast to a full node specified by the node’s domain name
31- Support transaction signing and ability to broadcast to a full node specified by the node’s domain name
31- Reuse login credentials to generate Bitcoin wallets / derivation path
32- Reuse login credentials to generate Bitcoin wallets / derivation path
32−- When logged in with a master ticket, use the ownership mnemonic.
33+- When logged in with a master ticket, use the ownership mnemonic.
33- When logged in with a BIP 39 mnemonic, use that as-is.
34- When logged in with a BIP 39 mnemonic, use that as-is.
34- Then, proceed as per BIP32
35- Then, proceed as per BIP32
35
36
@@ -44,16 +45,15 @@ A completed wallet should:
44- [BIP 39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)
45- [BIP 39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)
45
46
46### Contribution Guidelines
47### Contribution Guidelines
48+
47−- Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
49+- Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
48- Bounty claimant should have a good working knowledge of React and Bitcoin transactions.
50- Bounty claimant should have a good working knowledge of React and Bitcoin transactions.
49- Submit your code as a PR to the [Bridge](https://github.com/urbit/bridge) repository.
51- Submit your code as a PR to the [Bridge](https://github.com/urbit/bridge) repository.
50−- You have 45 days from the time of approval to complete this bounty.
52+- You have 45 days from the time of approval to complete this bounty.
51
53
52## Milestones
54## Milestones
53
55
54−
55### Pull request is accepted
56### Pull request is accepted
56−1 stars
57−Your pull request containing all of the relevant code has been merged.
58
57
59−
58+1 stars
59+Your pull request containing all of the relevant code has been merged.
content/grants/boston-t-train-tracker-landscape-tile.md+8−12
@@ -2,8 +2,8 @@
2title = "Boston T Train Tracker Landscape Tile"
2title = "Boston T Train Tracker Landscape Tile"
3date = 2020-03-24
3date = 2020-03-24
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Create a landscape tile that tracks the Boston T train."
9description = "Create a landscape tile that tracks the Boston T train."
@@ -21,8 +21,8 @@ Create a backend for importing MBTA (Massachusetts Bay Transportation Authority)
21
21
22We would like to create a T Train information Landscape tile. The backend should access real-time departure and arrival information for the complete list of stations via the MBTA API, as well as the data feeds for schedule tables, elevator outages, and customer alerts. The tile interface should encompass:
22We would like to create a T Train information Landscape tile. The backend should access real-time departure and arrival information for the complete list of stations via the MBTA API, as well as the data feeds for schedule tables, elevator outages, and customer alerts. The tile interface should encompass:
23
23
24−- A real-time trip planner using the MBTA data, similar to the one on the official MBTA website.
24+- A real-time trip planner using the MBTA data, similar to the one on the official MBTA website.
25−- Links for schedule tables for weekday, weekend, and holiday service.
25+- Links for schedule tables for weekday, weekend, and holiday service.
26- A link to the official MBTA L Train map linked below, or an open-source workaround.
26- A link to the official MBTA L Train map linked below, or an open-source workaround.
27- A place (possibly a scrolling feed?) for MBTA alerts, using the ‘Alerts’ API stream.
27- A place (possibly a scrolling feed?) for MBTA alerts, using the ‘Alerts’ API stream.
28- A place for MBTA station facilities closure status information.
28- A place for MBTA station facilities closure status information.
@@ -36,20 +36,16 @@ We would like to create a T Train information Landscape tile. The backend should
36## Contribution Guidelines:
36## Contribution Guidelines:
37
37
38- Do not begin work until your request to claim this bounty is accepted.
38- Do not begin work until your request to claim this bounty is accepted.
39−- Do not use copyrighted images, including the MBTA logo or the official route map. Instead, always refer to MBTA in plaintext. You should include an external link to the T Train route map; do not host this map locally (we are open to an open-source, good quality route map which does not include the MBTA logo or other trademarks, however).
39+- Do not use copyrighted images, including the MBTA logo or the official route map. Instead, always refer to MBTA in plaintext. You should include an external link to the T Train route map; do not host this map locally (we are open to an open-source, good quality route map which does not include the MBTA logo or other trademarks, however).
40−- Please read the Developer License Agreement carefully and obey their guidelines for application naming and presentation of API data.
40+- Please read the Developer License Agreement carefully and obey their guidelines for application naming and presentation of API data.
41- Submit your work as a pull request to the [urbit/urbit](https://github.com/urbit/urbit/pulls) repo
41- Submit your work as a pull request to the [urbit/urbit](https://github.com/urbit/urbit/pulls) repo
42- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
42- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
43- You have 90 days from the time of approval to complete this bounty.
43- You have 90 days from the time of approval to complete this bounty.
44−- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
44+- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
45−
46−
47
45
48## Milestones
46## Milestones
49
47
50−
51### Your PR is merged
48### Your PR is merged
49+
523 stars
503 stars
53Your code is accepted and merged.
51Your code is accepted and merged.
54−
55−
content/grants/calendar-ui.md+8−9
@@ -2,8 +2,8 @@
2title = "Calendar UI"
2title = "Calendar UI"
3date = 2020-07-16
3date = 2020-07-16
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Build a Landscape-native calendar UI"
9description = "Build a Landscape-native calendar UI"
@@ -25,9 +25,10 @@ The current proposal aims to create a Landscape tile and app to improve the acce
25The UI will be backed by the calendar app implementation described in the aforementioned previous proposal. In order to allow the parallel implementation of a UI and the Gall app, this proposal will be executed in two stages.
25The UI will be backed by the calendar app implementation described in the aforementioned previous proposal. In order to allow the parallel implementation of a UI and the Gall app, this proposal will be executed in two stages.
26
26
27The first stage is the development of working prototypes of the screens that the calendar will initially support. These include:
27The first stage is the development of working prototypes of the screens that the calendar will initially support. These include:
28+
28− - a monthly view with clickable dates to daily views;
29+- a monthly view with clickable dates to daily views;
29− - a daily view that lists the events in chronological order with a short description
30+- a daily view that lists the events in chronological order with a short description
30− - a form to create new events with fields for the required properties per RFC 5545.
31+- a form to create new events with fields for the required properties per RFC 5545.
31
32
32The deliverables will be functional web pages that can be integrated with Landscape. The screens will be built entirely with components from the [Indigo-react](https://github.com/urbit/indigo-react) library.
33The deliverables will be functional web pages that can be integrated with Landscape. The screens will be built entirely with components from the [Indigo-react](https://github.com/urbit/indigo-react) library.
33The UI will be built with the assumption that event participants are ships.
34The UI will be built with the assumption that event participants are ships.
@@ -40,14 +41,12 @@ These pages can provide the basis for UX experiments and integrations with other
40
41
41## Milestones
42## Milestones
42
43
43−
44### Functional pages
44### Functional pages
45+
451 stars
461 stars
46Build the necessary pages that will allow Landscape to interact with a Calendar Gall app
47Build the necessary pages that will allow Landscape to interact with a Calendar Gall app
47
48
48−
49### Working integration with Gall app
49### Working integration with Gall app
50+
501 stars
511 stars
51Fully capable of importing an .ics calendar, creating new events, looking through existing events in the calendar of a ship.
52Fully capable of importing an .ics calendar, creating new events, looking through existing events in the calendar of a ship.
52−
53−
content/grants/calendar.md+9−11
@@ -2,8 +2,8 @@
2title = "Calendar"
2title = "Calendar"
3date = 2020-05-19
3date = 2020-05-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "An Arvo calendar agent based on the iCalendar spec."
9description = "An Arvo calendar agent based on the iCalendar spec."
@@ -22,7 +22,7 @@ Calendars are a sizable undertaking both in terms of data management (modeling &
22
22
23## Deliverables
23## Deliverables
24
24
25−The goal of this proposal is to create a gall agent that can be used to store a calendar of events on a ship, and to expose calendars as an additional pubsub channel in the same vein as chats, links and notebooks. Additionally, we'll provide accompanying generators for creator, importing events from `.ics` files and direct creation of events.
25+The goal of this proposal is to create a gall agent that can be used to store a calendar of events on a ship, and to expose calendars as an additional pubsub channel in the same vein as chats, links and notebooks. Additionally, we'll provide accompanying generators for creator, importing events from `.ics` files and direct creation of events.
26
26
27## Team
27## Team
28
28
@@ -36,7 +36,7 @@ Raghu Nimmagadda (~sovmep-ripsum), is a software engineer with a fair amount of
36
36
37The goal is to allow import from iCalendar, but not export to it. There's no reason this couldn't be done, but we're trying to drive towards "calendaring within Urbit" moreso than "calendaring between Urbit and Earth tech." We believe this is more in line with an apparent guiding philosophy behind other applications built so far.
37The goal is to allow import from iCalendar, but not export to it. There's no reason this couldn't be done, but we're trying to drive towards "calendaring within Urbit" moreso than "calendaring between Urbit and Earth tech." We believe this is more in line with an apparent guiding philosophy behind other applications built so far.
38
38
39−So, why base anything on iCalendar at all? Two reasons:
39+So, why base anything on iCalendar at all? Two reasons:
40
40
411. It's prior art on how a calendaring system should work, which by all appearances works pretty well. As neither of us have experience with building a calendar (and wouldn't exactly call ourselves "calendar researchers"), this seems like a good starting point that should provide ample guidance on the domain-specific components.
411. It's prior art on how a calendaring system should work, which by all appearances works pretty well. As neither of us have experience with building a calendar (and wouldn't exactly call ourselves "calendar researchers"), this seems like a good starting point that should provide ample guidance on the domain-specific components.
422. A way to import an existing calendar into Urbit would be a cool feature anyways, since many of us (...or at least some people we know) have personal calendars that should really be on a personal server.
422. A way to import an existing calendar into Urbit would be a cool feature anyways, since many of us (...or at least some people we know) have personal calendars that should really be on a personal server.
@@ -88,28 +88,26 @@ END:VEVENT
88END:VCALENDAR
88END:VCALENDAR
89```
89```
90
90
91−If time permits, we'd also want to support parsing VALARM components, which correspond to alarms/reminders about events. These components can be nested within VEVENTs, and have three flavors - audio, display, and email (each representing the kind of reminder the component can give you). We aim to support parsing display alarms (displaying some text) initially, as audio is only useful once a UI is built and we don't have email on mars. While handling the alarms is outside the scope of this proposal, by parsing them we hope to make it easy for future proposals to build on them.
91+If time permits, we'd also want to support parsing VALARM components, which correspond to alarms/reminders about events. These components can be nested within VEVENTs, and have three flavors - audio, display, and email (each representing the kind of reminder the component can give you). We aim to support parsing display alarms (displaying some text) initially, as audio is only useful once a UI is built and we don't have email on mars. While handling the alarms is outside the scope of this proposal, by parsing them we hope to make it easy for future proposals to build on them.
92
92
93## Milestones
93## Milestones
94
94
95−
96### VEVENT Parser
95### VEVENT Parser
96+
971 stars
971 stars
98A generator that can parse `.ics` files from the dojo containing VEVENTs into hoon data structures. This milestone will NOT support top-level calendar properties.
98A generator that can parse `.ics` files from the dojo containing VEVENTs into hoon data structures. This milestone will NOT support top-level calendar properties.
99
99
100−
101### Calendar Gall Agent
100### Calendar Gall Agent
101+
1021 stars
1021 stars
103Creation of a gall agent that can be used to persist and read events from `.ics` files into a "calendar" on the running ship.
103Creation of a gall agent that can be used to persist and read events from `.ics` files into a "calendar" on the running ship.
104
104
105−
106### Gall Agent Enrichment
105### Gall Agent Enrichment
106+
1071 stars
1071 stars
108Extend the gall agent to support queries (e.g. within a range), updates and deletes of events, and a generator to create events without use of `.ics` files.
108Extend the gall agent to support queries (e.g. within a range), updates and deletes of events, and a generator to create events without use of `.ics` files.
109
109
110−
111### Pubsub/Channel Support
110### Pubsub/Channel Support
111+
1122 stars
1122 stars
113Extend the gall agent to allow pubsub with other ships and integration with Groups to ultimately allow calendars to exist as an additional channel.
113Extend the gall agent to allow pubsub with other ships and integration with Groups to ultimately allow calendars to exist as an additional channel.
114−
115−
content/grants/comprehensive-local-server-and-mum-explanation-video.md+5−4
@@ -2,7 +2,7 @@
2title = "Comprehensive local, server and mum explanation video"
2title = "Comprehensive local, server and mum explanation video"
3date = 2021-01-31
3date = 2021-01-31
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -17,12 +17,15 @@ link = ""
17# Scope
17# Scope
18
18
19## First video
19## First video
20+
20Create a comprehensive video describing how to purchase (or obtain) and run an Urbit planet. Brief overview on how to use Urbit. Mention hosting providers (Tlon) for those who don't want to do this.
21Create a comprehensive video describing how to purchase (or obtain) and run an Urbit planet. Brief overview on how to use Urbit. Mention hosting providers (Tlon) for those who don't want to do this.
21
22
22## Second Video
23## Second Video
24+
23Instruct on how to register a domain name, provision a VPS, setup DNS and create an nginx reverse proxy to create a publicly accessible Let's Encrypt secured public facing Urbit.
25Instruct on how to register a domain name, provision a VPS, setup DNS and create an nginx reverse proxy to create a publicly accessible Let's Encrypt secured public facing Urbit.
24
26
25## Third Video
27## Third Video
28+
26Explain Urbit in a simple way to my sister and technologically illiterate mum. It can be somewhat difficult to explain Urbit to people, so this video should provide an overview for people with no technical knowledge.
29Explain Urbit in a simple way to my sister and technologically illiterate mum. It can be somewhat difficult to explain Urbit to people, so this video should provide an overview for people with no technical knowledge.
27
30
28# Additional Info
31# Additional Info
@@ -33,9 +36,7 @@ Granted star would be used to onboard friends, family and people from the easype
33
36
34## Milestones
37## Milestones
35
38
36−
37### Record, edit and upload all videos
39### Record, edit and upload all videos
40+
381 stars
411 stars
39Upload all three videos to Youtube, post links in proposal updates.
42Upload all three videos to Youtube, post links in proposal updates.
40−
41−
content/grants/content-saver.md+4−7
@@ -2,8 +2,8 @@
2title = "Content Saver"
2title = "Content Saver"
3date = 2020-03-20
3date = 2020-03-20
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Extract and save content from HTML."
9description = "Extract and save content from HTML."
@@ -22,7 +22,7 @@ This app should be able to: Copy both a given highlighted block of text, or a di
22If you have a web scraper that can go out and fetch web pages for you, like the one indicated in [this bounty](https://grants.urbit.org/bounties/1967189374-web-scraper), you can just poke the Publish app to save it and be able to read it in Publish. (Note: this bounty is not to build a web scraper, but simply the content-extraction component)
22If you have a web scraper that can go out and fetch web pages for you, like the one indicated in [this bounty](https://grants.urbit.org/bounties/1967189374-web-scraper), you can just poke the Publish app to save it and be able to read it in Publish. (Note: this bounty is not to build a web scraper, but simply the content-extraction component)
23The file should strip the content out of HTML and save it into the Markdown format.
23The file should strip the content out of HTML and save it into the Markdown format.
24
24
25−### Resources:
25+### Resources:
26
26
27- [The Instapaper API](https://www.instapaper.com/api)
27- [The Instapaper API](https://www.instapaper.com/api)
28- [Firefox Readability](https://github.com/mozilla/readability); this implementation can be copied to the extent that you desire.
28- [Firefox Readability](https://github.com/mozilla/readability); this implementation can be copied to the extent that you desire.
@@ -34,12 +34,9 @@ The file should strip the content out of HTML and save it into the Markdown form
34- Submit your code as a PR to the [urbit](github.com/urbit/urbit] repository.
34- Submit your code as a PR to the [urbit](github.com/urbit/urbit] repository.
35- You have 90 days from the time of approval to complete this bounty.
35- You have 90 days from the time of approval to complete this bounty.
36
36
37−
38## Milestones
37## Milestones
39
38
40−
41### PR is merged
39### PR is merged
40+
422 stars
412 stars
43Your code is accepted and merged.
42Your code is accepted and merged.
44−
45−
content/grants/cross-platform-desktop-urbit-app.md+21−13
@@ -2,8 +2,8 @@
2title = "Cross-Platform Desktop Urbit App"
2title = "Cross-Platform Desktop Urbit App"
3date = 2021-02-23
3date = 2021-02-23
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A native app that makes running Urbit near friction-less for everyone."
9description = "A native app that makes running Urbit near friction-less for everyone."
@@ -17,69 +17,77 @@ link = ""
17# Taisho, A native cross-platform desktop Urbit app
17# Taisho, A native cross-platform desktop Urbit app
18
18
19## Introduction
19## Introduction
20+
20Urbit is gaining momentum, and soon we'll have apps that people really want to use. Currently people from outside Urbit see joining as something of a hassle or time investment that they may not want to make. Taisho will help alleviate those fears and ease people into the process of joining Urbit by running it for them.
21Urbit is gaining momentum, and soon we'll have apps that people really want to use. Currently people from outside Urbit see joining as something of a hassle or time investment that they may not want to make. Taisho will help alleviate those fears and ease people into the process of joining Urbit by running it for them.
21
22
22## Features
23## Features
24+
23The main feature of Taisho is that it runs Urbit for you, offering a simple interface without need for explanation to get running.
25The main feature of Taisho is that it runs Urbit for you, offering a simple interface without need for explanation to get running.
24
26
25- Ease of install, simply download and run
27- Ease of install, simply download and run
26- Boots and runs new and existing planets, moons and comets (maybe stars in the future)
28- Boots and runs new and existing planets, moons and comets (maybe stars in the future)
27- **Ship management**: keeps track of ships, auto-resumes ships when launching, giving them a user selected name, place them in a folder of your choosing, one-click ejection for moving to hosting
29- **Ship management**: keeps track of ships, auto-resumes ships when launching, giving them a user selected name, place them in a folder of your choosing, one-click ejection for moving to hosting
28- **Azimuth integration**: operates locally for greater security
30- **Azimuth integration**: operates locally for greater security
29− - generate arvo keyfile for booting planets
31+ - generate arvo keyfile for booting planets
30− - handles keyfiles for user making first time booting less complicated
32+ - handles keyfiles for user making first time booting less complicated
31− - ensures keyfiles get deleted after use
33+ - ensures keyfiles get deleted after use
32
34
33## Potential Future Paths Unlocked
35## Potential Future Paths Unlocked
36+
34- **Plugin/Marketplace system**: would open pathways for easy transitions to hosting, planet buying, downloading and managing Urbit apps/plugins
37- **Plugin/Marketplace system**: would open pathways for easy transitions to hosting, planet buying, downloading and managing Urbit apps/plugins
35- **Native integration**: if we were to integrate Landscape, Taisho could provide a bridge to OS operations that might be currently difficult to accomplish with the Urbit binary.
38- **Native integration**: if we were to integrate Landscape, Taisho could provide a bridge to OS operations that might be currently difficult to accomplish with the Urbit binary.
36- **Education**: operations being run could be exposed through the UI so that people could learn what's going on behind the scenes in context.
39- **Education**: operations being run could be exposed through the UI so that people could learn what's going on behind the scenes in context.
37
40
38## App Architecture
41## App Architecture
42+
39The current architecture is an Electron app which wraps the Urbit binary. This gets packaged into a simple zip or package installer which can be run immediately.
43The current architecture is an Electron app which wraps the Urbit binary. This gets packaged into a simple zip or package installer which can be run immediately.
40
44
41### Electron
45### Electron
46+
42−The app uses principles based on this article by James Long, [The Secret of Good Electron Apps](https://archive.jlongster.com/secret-of-good-electron-apps). It is split into a main, renderer, and background process which keeps performance high. Urbit itself is spawned as a separate process which also helps keep things performant.
47+The app uses principles based on this article by James Long, [The Secret of Good Electron Apps](https://archive.jlongster.com/secret-of-good-electron-apps). It is split into a main, renderer, and background process which keeps performance high. Urbit itself is spawned as a separate process which also helps keep things performant.
43
48
44### Front-end
49### Front-end
50+
45The renderer or front-end of the app is built with React, Typescript, and TailwindCSS. This should allow people who have worked on Landscape to have familiarity, and give an easier path if we were to incorporate Landscape itself in the future.
51The renderer or front-end of the app is built with React, Typescript, and TailwindCSS. This should allow people who have worked on Landscape to have familiarity, and give an easier path if we were to incorporate Landscape itself in the future.
46
52
47## Current Progress
53## Current Progress
54+
48−Currently, Taisho is able to run on both MacOS and Linux. It can boot new comets, keep record of comets booted with it, and resume the Urbit process of the comet if it gets killed. It is code-signed with Apple so that it can be distributed easily and not require special permissions.
55+Currently, Taisho is able to run on both MacOS and Linux. It can boot new comets, keep record of comets booted with it, and resume the Urbit process of the comet if it gets killed. It is code-signed with Apple so that it can be distributed easily and not require special permissions.
49
56
50## Star Usage
57## Star Usage
58+
51If awarded stars, most of them would go towards offering the ability to purchase planets and immediately host them from a service I plan to build in the future, after reaching a stable point in Taisho.
59If awarded stars, most of them would go towards offering the ability to purchase planets and immediately host them from a service I plan to build in the future, after reaching a stable point in Taisho.
52
60
53## Final Thoughts
61## Final Thoughts
62+
54People like to jump in and experiment with things first. I think this app provides an extremely easy way to do that before committing to spending time on the network, getting hosting or buying a dedicated device, because it provides a no-knowledge way of running Urbit. It also opens a lot of avenues for Urbit. For one, it can be a kind of hub for different services, plugins, apps etc. Another possibility is embedding Landscape, to bring features that wouldn't be possible in a plain web app. I think Taisho can act as a helpful guide for many people's first trek into Urbit.
63People like to jump in and experiment with things first. I think this app provides an extremely easy way to do that before committing to spending time on the network, getting hosting or buying a dedicated device, because it provides a no-knowledge way of running Urbit. It also opens a lot of avenues for Urbit. For one, it can be a kind of hub for different services, plugins, apps etc. Another possibility is embedding Landscape, to bring features that wouldn't be possible in a plain web app. I think Taisho can act as a helpful guide for many people's first trek into Urbit.
55
64
56---
65---
57
66
58## About Me
67## About Me
68+
59My name is Hunter Miller, and I've been building on the web for 7 years. I currently work as a Senior Software Engineer for This Dot building websites and web apps for our clients. I'm focused on delivering the best user experience, which takes delicate coordination between back-end and front-end architecture to really achieve near-perfection. Throughout my time as a developer I've gained a variety of experience starting at an advertising and design agency, moving to a half a billion dollar e-commerce website, and then on to a high-level contracting and consulting firm.
69My name is Hunter Miller, and I've been building on the web for 7 years. I currently work as a Senior Software Engineer for This Dot building websites and web apps for our clients. I'm focused on delivering the best user experience, which takes delicate coordination between back-end and front-end architecture to really achieve near-perfection. Throughout my time as a developer I've gained a variety of experience starting at an advertising and design agency, moving to a half a billion dollar e-commerce website, and then on to a high-level contracting and consulting firm.
60
70
61You can checkout [my website](https://hmiller.dev/), [LinkedIn](https://www.linkedin.com/in/hunter-miller-dev/), and [Twitter](https://twitter.com/hmillerdev) to see more about me.
71You can checkout [my website](https://hmiller.dev/), [LinkedIn](https://www.linkedin.com/in/hunter-miller-dev/), and [Twitter](https://twitter.com/hmillerdev) to see more about me.
62
72
63## Milestones
73## Milestones
64
74
75+### Ability to run basic ship features
65
76
66−### Ability to run basic ship features
671 stars
771 stars
68Includes start/stop/restart ship, show status, eject ship for hosting, boot new planets, moons, and comets, boot existing planets and comets, act as browser for hosted ships, and ship removal.
78Includes start/stop/restart ship, show status, eject ship for hosting, boot new planets, moons, and comets, boot existing planets and comets, act as browser for hosted ships, and ship removal.
69
79
70−
71### (Timeboxed) Proof of Concept for Windows
80### (Timeboxed) Proof of Concept for Windows
81+
721 stars
821 stars
73To include the Windows' user base, the PoC should enable running on Windows either through WSL or some other means. Two week timebox to make sure we don't spend too much time here.
83To include the Windows' user base, the PoC should enable running on Windows either through WSL or some other means. Two week timebox to make sure we don't spend too much time here.
74
84
75−
76### Urbit Client Beta Release
85### Urbit Client Beta Release
86+
774 stars
874 stars
78Significant testing during this time. Cross-platform, include all basic ship features, with no major bugs. Renamed to Urbit Client and added to urbit.org as an easy download.
88Significant testing during this time. Cross-platform, include all basic ship features, with no major bugs. Renamed to Urbit Client and added to urbit.org as an easy download.
79
89
80−
81### Azimuth Integration and Official Release
90### Azimuth Integration and Official Release
91+
824 stars
924 stars
83Integrating Urbit key generation for easy booting of new planets. Adding further refinements to UI, all moderate issues resolved, and documentation for users and contributors.
93Integrating Urbit key generation for easy booting of new planets. Adding further refinements to UI, all moderate issues resolved, and documentation for users and contributors.
84−
85−
content/grants/cta-train-tracker-landscape-tile.md+11−11
@@ -2,8 +2,8 @@
2title = "CTA Train Tracker Landscape Tile"
2title = "CTA Train Tracker Landscape Tile"
3date = 2020-03-18
3date = 2020-03-18
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Build an app to track the schedule of the Chicago Transit Authority."
9description = "Build an app to track the schedule of the Chicago Transit Authority."
@@ -19,32 +19,32 @@ link = ""
19
19
20Create a backend for importing CTA (Chicago Transit Authority) L Train arrival and departure data and service alerts via the CTA public API to Urbit, and design a Landscape tile which will serve as a route planner app inside Urbit.
20Create a backend for importing CTA (Chicago Transit Authority) L Train arrival and departure data and service alerts via the CTA public API to Urbit, and design a Landscape tile which will serve as a route planner app inside Urbit.
21
21
22−We would like to create a L Train information Landscape tile. The backend should access real-time departure and arrival information for the complete list of stations via the CTA API, as well as the data feeds for schedule tables, elevator outages, and customer alerts.
22+We would like to create a L Train information Landscape tile. The backend should access real-time departure and arrival information for the complete list of stations via the CTA API, as well as the data feeds for schedule tables, elevator outages, and customer alerts.
23
23
24The tile interface should encompass:
24The tile interface should encompass:
25
25
26−- A real-time trip planner using the CTA data, similar to the one on the official CTA website.
26+- A real-time trip planner using the CTA data, similar to the one on the official CTA website.
27−- Links for schedule tables for weekday, weekend, and holiday service.
27+- Links for schedule tables for weekday, weekend, and holiday service.
28- A link to the official CTA L Train map linked below, or an open-source workaround.
28- A link to the official CTA L Train map linked below, or an open-source workaround.
29- A place (possibly a scrolling feed?) for CTA alerts, using the ‘Customer Alerts’ API.
29- A place (possibly a scrolling feed?) for CTA alerts, using the ‘Customer Alerts’ API.
30- A place for CTA station elevator closure status information.
30- A place for CTA station elevator closure status information.
31
31
32### Resources
32### Resources
33+
33- [CTA Developer Center](https://www.transitchicago.com/developers/)
34- [CTA Developer Center](https://www.transitchicago.com/developers/)
34- [CTA Branding Guide for Open API Apps](https://www.transitchicago.com/developers/branding/)
35- [CTA Branding Guide for Open API Apps](https://www.transitchicago.com/developers/branding/)
35- [CTA Developer License Agreement](https://www.transitchicago.com/developers/terms/C)
36- [CTA Developer License Agreement](https://www.transitchicago.com/developers/terms/C)
36
37
37### Contribution Guidelines
38### Contribution Guidelines
39+
38- Do not begin work until your request to claim this bounty is accepted.
40- Do not begin work until your request to claim this bounty is accepted.
39−- Please note that this bounty is for the CTA Train API and not for the CTA Bus API.
41+- Please note that this bounty is for the CTA Train API and not for the CTA Bus API.
40−- Do not use copyrighted images, including the CTA logo or the official route map. Instead, always refer to CTA in plaintext, and use the provided train image which is detailed in the above Developer License Agreement link. You should include an external link to the CTA L Train route map; do not host this map locally (we are open to an open-source, good quality route map which does not include the CTA logo or other trademarks, however).
42+- Do not use copyrighted images, including the CTA logo or the official route map. Instead, always refer to CTA in plaintext, and use the provided train image which is detailed in the above Developer License Agreement link. You should include an external link to the CTA L Train route map; do not host this map locally (we are open to an open-source, good quality route map which does not include the CTA logo or other trademarks, however).
41−- Please read the Developer License Agreement and Branding Guide carefully and obey their guidelines for application naming and presentation of API data.
43+- Please read the Developer License Agreement and Branding Guide carefully and obey their guidelines for application naming and presentation of API data.
42
44
43## Milestones
45## Milestones
44
46
45−
46### Your PR is merged
47### Your PR is merged
48+
473 stars
493 stars
48Your code is accepted and merged.
50Your code is accepted and merged.
49−
50−
content/grants/display-eth-data.md+4−7
@@ -2,8 +2,8 @@
2title = "Display ETH Data"
2title = "Display ETH Data"
3date = 2020-01-31
3date = 2020-01-31
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "The Urbit identity system uses a suite of Ethereum contracts as its PKI. As such, a lot of Ethereum-related functionality is available within the system."
9description = "The Urbit identity system uses a suite of Ethereum contracts as its PKI. As such, a lot of Ethereum-related functionality is available within the system."
@@ -26,7 +26,7 @@ Create a gall application, and a user interface for that application, that are u
26- Set up with just contract address, retrieving ABI from etherscan.io API.
26- Set up with just contract address, retrieving ABI from etherscan.io API.
27- Stores lists of events and relevant details per contract and config, and make them available to the user interface.
27- Stores lists of events and relevant details per contract and config, and make them available to the user interface.
28
28
29−##### User interface
29+##### User interface
30
30
31- Allows adding/removing watched contracts per the above app interface.
31- Allows adding/removing watched contracts per the above app interface.
32- Displays events, per contract+config or for all watched, in readable format (ie, "Transfer: from: 0xabc, to: 0xdef, value: 123", with block number or timestamp, link to transaction on Etherscan.")
32- Displays events, per contract+config or for all watched, in readable format (ie, "Transfer: from: 0xabc, to: 0xdef, value: 123", with block number or timestamp, link to transaction on Etherscan.")
@@ -45,12 +45,9 @@ Create a gall application, and a user interface for that application, that are u
45- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
45- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
46- You have 90 days from the time of approval to complete this bounty.
46- You have 90 days from the time of approval to complete this bounty.
47
47
48−
49## Milestones
48## Milestones
50
49
51−
52### Work is finished
50### Work is finished
51+
531 stars
521 stars
54Your work has been finished and accepted.
53Your work has been finished and accepted.
55−
56−
content/grants/docker-image-for-cloud-container-orchestration.md+9−8
@@ -2,7 +2,7 @@
2title = "Docker image for cloud container orchestration"
2title = "Docker image for cloud container orchestration"
3date = 2020-12-21
3date = 2020-12-21
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Dev Tool"]
6grant_category = ["Dev Tool"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -17,30 +17,31 @@ link = ""
17Many cloud providers offer container orchestration services that abstract away from managing servers or compute instances (e.g. Amazon ECS, Azure Container Instances). A docker image tagged for the latest version of Urbit would drastically simplify the process of deploying urbits to the cloud, which is preferable for planets, stars, and galaxies.
17Many cloud providers offer container orchestration services that abstract away from managing servers or compute instances (e.g. Amazon ECS, Azure Container Instances). A docker image tagged for the latest version of Urbit would drastically simplify the process of deploying urbits to the cloud, which is preferable for planets, stars, and galaxies.
18
18
19# Deliverables
19# Deliverables
20+
20- A merged pull request to the urbit/urbit repository, with nix code to generate a docker image
21- A merged pull request to the urbit/urbit repository, with nix code to generate a docker image
21− * With a volume-mountable path for a ship
22+ - With a volume-mountable path for a ship
22− * With a volume-mountable path for a keyfile
23+ - With a volume-mountable path for a keyfile
23- CI integration to release the docker image as a GitHub artifact when version releases of Urbit are cut
24- CI integration to release the docker image as a GitHub artifact when version releases of Urbit are cut
24- CI integration to publish the image on Docker Hub when version releases of Urbit are cut
25- CI integration to publish the image on Docker Hub when version releases of Urbit are cut
25- Documentation:
26- Documentation:
26 - Reference for volume mounts and controlling the behavior of Urbit in a container
27 - Reference for volume mounts and controlling the behavior of Urbit in a container
27− * Volume mount points for keyfiles or existing ships
28+ - Volume mount points for keyfiles or existing ships
28− * Ports to publish for Landscape and external API access.
29+ - Ports to publish for Landscape and external API access.
29 - Quickstarts for deploying an Urbit ship to
30 - Quickstarts for deploying an Urbit ship to
30 - Amazon ECS
31 - Amazon ECS
31 - Azure Container Instances
32 - Azure Container Instances
32
33
33# Team
34# Team
35+
34Edward Amsden ~ritpub-sipsyl is a veteran developer with several years experience using Nix to manage production builds and deployments. He is the principal of Black River Software LLC
36Edward Amsden ~ritpub-sipsyl is a veteran developer with several years experience using Nix to manage production builds and deployments. He is the principal of Black River Software LLC
35
37
36## Milestones
38## Milestones
37
39
38−
39### Merged PR: Nix docker integration
40### Merged PR: Nix docker integration
41+
401 stars
421 stars
43+
41- Nix code to generate an Urbit docker image
44- Nix code to generate an Urbit docker image
42- CI integration to release docker images on GitHub
45- CI integration to release docker images on GitHub
43- CI integration to publish docker images on Docker Hub
46- CI integration to publish docker images on Docker Hub
44- Documentation
47- Documentation
45−
46−
content/grants/educational-guide-todomvc-urbit-edition.md+21−23
@@ -2,7 +2,7 @@
2title = "Educational Guide: TodoMVC, Urbit Edition"
2title = "Educational Guide: TodoMVC, Urbit Edition"
3date = 2021-01-05
3date = 2021-01-05
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -24,7 +24,7 @@ Urbit.
24The application we'll demonstrate is the classic [TodoMVC](http://todomvc.com/examples/react/#/) app, which many
24The application we'll demonstrate is the classic [TodoMVC](http://todomvc.com/examples/react/#/) app, which many
25developers will be immediately familiar with. Even if a newcomer isn't familiar
25developers will be immediately familiar with. Even if a newcomer isn't familiar
26with TodoMVC, it's quite easy to get a handle on it because it's a todo
26with TodoMVC, it's quite easy to get a handle on it because it's a todo
27−list--surely *everyone* at this point has experience with todo lists.
27+list--surely _everyone_ at this point has experience with todo lists.
28
28
29The classic TodoMVC example is a simple, functional and aesthetically pleasing
29The classic TodoMVC example is a simple, functional and aesthetically pleasing
30web-based todo list. What it lacks, however, is any form of persistence or
30web-based todo list. What it lacks, however, is any form of persistence or
@@ -46,12 +46,12 @@ For reference, see the
46application, which is a standalone application served from the `/~debug` URI.
46application, which is a standalone application served from the `/~debug` URI.
47
47
48Our goal is to serve a pre-built `TodoMVC` application at the route `/~todo`.
48Our goal is to serve a pre-built `TodoMVC` application at the route `/~todo`.
49−It's important to note that this process could be applied to serve *any* HTML
49+It's important to note that this process could be applied to serve _any_ HTML
50file, whether it's a single-page application or not. With very little
50file, whether it's a single-page application or not. With very little
51imagination, it becomes easy to see how one could serve their personal blog at
51imagination, it becomes easy to see how one could serve their personal blog at
52`/~blog`, or a static "About Me" page at `/~about`.
52`/~blog`, or a static "About Me" page at `/~about`.
53
53
54−Urbit as a personal *file* server is useful in and of itself, but it will
54+Urbit as a personal _file_ server is useful in and of itself, but it will
55require a basic understanding of Hoon, Clay, Gall, and the development
55require a basic understanding of Hoon, Clay, Gall, and the development
56environment more generally. We'll break this guide into two sections: one
56environment more generally. We'll break this guide into two sections: one
57focused on getting a development environment set up, and another on actually
57focused on getting a development environment set up, and another on actually
@@ -71,7 +71,7 @@ with development ships (this is essentially the "deployment process"), and how
71to use some basic generators.
71to use some basic generators.
72
72
73This guide should satisfy the following user stories, each of which start with
73This guide should satisfy the following user stories, each of which start with
74−*As a new developer reading this guide, ...*:
74+_As a new developer reading this guide, ..._:
75
75
76- I can install the Urbit binary.
76- I can install the Urbit binary.
77- I can boot a fake ship for development.
77- I can boot a fake ship for development.
@@ -91,11 +91,11 @@ it is or how it works.
91
91
92To start, let's talk a bit about what a pier is and its relation to the unix
92To start, let's talk a bit about what a pier is and its relation to the unix
93filesystem, the way files are represented and how to navigate our pier from
93filesystem, the way files are represented and how to navigate our pier from
94−within Urbit (*e.g.* `+ls %`, `+cat %/gen/cat`), and what `|mount` and `|commit`
94+within Urbit (_e.g._ `+ls %`, `+cat %/gen/cat`), and what `|mount` and `|commit`
95are doing (at a high level).
95are doing (at a high level).
96
96
97That might be a good segue into some basic Hoon via a super simple
97That might be a good segue into some basic Hoon via a super simple
98−generator--just enough to explain important syntax rules (*e.g.* ace v. gap),
98+generator--just enough to explain important syntax rules (_e.g._ ace v. gap),
99the concept of runes, and provide links to places where you can learn more about
99the concept of runes, and provide links to places where you can learn more about
100all of these things.
100all of these things.
101
101
@@ -120,7 +120,7 @@ conversion from one to the other would be an informative bonus lesson.
120By the end of this lesson:
120By the end of this lesson:
121
121
122- I understand what Gall is at a high level.
122- I understand what Gall is at a high level.
123−- I know what an *agent* is.
123+- I know what an _agent_ is.
124- I know how to start a gall agent.
124- I know how to start a gall agent.
125- I can serve a static file (or directory of files) from a URI on my ship.
125- I can serve a static file (or directory of files) from a URI on my ship.
126
126
@@ -210,7 +210,7 @@ By the end of this lesson:
210
210
211Urbit makes heavy use of [Command Query Responsibility
211Urbit makes heavy use of [Command Query Responsibility
212Segregation](https://www.martinfowler.com/bliki/CQRS.html), or CQRS, which means
212Segregation](https://www.martinfowler.com/bliki/CQRS.html), or CQRS, which means
213−that our application can either issue *commands* or *queries*, but not both
213+that our application can either issue _commands_ or _queries_, but not both
214simultaneously. This is contrasted with the more common Create Read Update
214simultaneously. This is contrasted with the more common Create Read Update
215Delete (CRUD) model, in which our client is performing more direct manipulation
215Delete (CRUD) model, in which our client is performing more direct manipulation
216of records in a datastore. In Urbit, CQRS is paired with an [Event
216of records in a datastore. In Urbit, CQRS is paired with an [Event
@@ -230,7 +230,7 @@ To contrast that with a CQRS + Event Sourcing model, we'd have the following:
2301. Client queries for all todos to load into the page.
2301. Client queries for all todos to load into the page.
2312. Client sets up a subscription to receive any new todos that are created as
2312. Client sets up a subscription to receive any new todos that are created as
232 events.
232 events.
233−3. Client issues a command to create a new todo, which produces *no response,*
233+3. Client issues a command to create a new todo, which produces _no response,_
234 since these responsibilities are separated.
234 since these responsibilities are separated.
2354. After the new todo is created by the server, it emits an event which is
2354. After the new todo is created by the server, it emits an event which is
236 picked up by the subscription in step (2), which is then added to the list.
236 picked up by the subscription in step (2), which is then added to the list.
@@ -254,10 +254,10 @@ The answer becomes clear when you consider Urbit's primary purpose, which is for
254building distributed systems. In a distributed system, each agent is interacting
254building distributed systems. In a distributed system, each agent is interacting
255with many others through message passing. Imagine a chat application, in which
255with many others through message passing. Imagine a chat application, in which
256many agents are sending messages at once: creating a message and then adding the
256many agents are sending messages at once: creating a message and then adding the
257−returned message into your UI would work for messages *you* send, but would miss
257+returned message into your UI would work for messages _you_ send, but would miss
258any messages sent to you by other agents. In Urbit's approach, messages sent by
258any messages sent to you by other agents. In Urbit's approach, messages sent by
259other agents are no different than those sent by your agent, meaning the same
259other agents are no different than those sent by your agent, meaning the same
260−implementation that handles one agent also handles *n* other agents.
260+implementation that handles one agent also handles _n_ other agents.
261
261
262After explaining the rationale behind the approach, we'll want to demonstrate
262After explaining the rationale behind the approach, we'll want to demonstrate
263how to extend `on-watch` to expose our todos, how to publish events to
263how to extend `on-watch` to expose our todos, how to publish events to
@@ -286,14 +286,14 @@ By the end of this section:
286- I understand how to set up a subscription on a foreign ship.
286- I understand how to set up a subscription on a foreign ship.
287- I understand how to tear down subscriptions.
287- I understand how to tear down subscriptions.
288- I understand how to store and represent data belonging to multiple ships.
288- I understand how to store and represent data belonging to multiple ships.
289−- I understand how to upgrade my application's state.
289+- I understand how to upgrade my application's state.
290−
291
290
292## Deliverables
291## Deliverables
292+
293Your solution to this bounty should include:
293Your solution to this bounty should include:
294
294
295−* A standalone repository with gall agent(s) that demonstrate each working part.
295+- A standalone repository with gall agent(s) that demonstrate each working part.
296−* A pull request against the [urbit/docs](https://github.com/urbit/docs) repository that adds guided tutorials for each section.
296+- A pull request against the [urbit/docs](https://github.com/urbit/docs) repository that adds guided tutorials for each section.
297
297
298## Expectations
298## Expectations
299
299
@@ -303,29 +303,27 @@ The director will ensure that you have access to the necessary resources to comp
303
303
304## Milestones
304## Milestones
305
305
306−
307### Part 1: Serving Static Content
306### Part 1: Serving Static Content
307+
3082 stars
3082 stars
309Sample code and guide are completed and ready for merge against urbit/docs.
309Sample code and guide are completed and ready for merge against urbit/docs.
310
310
311−
312### Part 2: Data Modeling
311### Part 2: Data Modeling
312+
3131 stars
3131 stars
314Sample code and guide are completed and ready for merge against urbit/docs.
314Sample code and guide are completed and ready for merge against urbit/docs.
315
315
316−
317### Part 3: Taking Action
316### Part 3: Taking Action
317+
3181 stars
3181 stars
319Sample code and guide are completed and ready for merge against urbit/docs.
319Sample code and guide are completed and ready for merge against urbit/docs.
320
320
321−
322### Part 4: Client Integration
321### Part 4: Client Integration
322+
3233 stars
3233 stars
324Sample code and guide are completed and ready for merge against urbit/docs.
324Sample code and guide are completed and ready for merge against urbit/docs.
325
325
326−
327### Part 5: Collaboration
326### Part 5: Collaboration
327+
3283 stars
3283 stars
329Sample code and guide are completed and ready for merge against urbit/docs.
329Sample code and guide are completed and ready for merge against urbit/docs.
330−
331−
content/grants/escape.md+6−8
@@ -2,8 +2,8 @@
2title = "Escape"
2title = "Escape"
3date = 2019-12-04
3date = 2019-12-04
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A reputation agent for Stars."
9description = "A reputation agent for Stars."
@@ -15,11 +15,11 @@ canceled = true
15link = ""
15link = ""
16+++
16+++
17
17
18−"How much *Escape* does `~marzod` have?"
18+"How much _Escape_ does `~marzod` have?"
19
19
20When a planet is newly booted into the Urbit Network there is a fundamental service that its sponsor needs to provide: peer discovery. In order to do this the sponsor needs to be up and running, with a stable internet connection. The Urbit Network is still young but there has been several instances where planets discovered that, right after a first boot, they can't communicate with anybody in the network due to their sponsor not been active.
20When a planet is newly booted into the Urbit Network there is a fundamental service that its sponsor needs to provide: peer discovery. In order to do this the sponsor needs to be up and running, with a stable internet connection. The Urbit Network is still young but there has been several instances where planets discovered that, right after a first boot, they can't communicate with anybody in the network due to their sponsor not been active.
21
21
22−These planets need to quickly escape, that is, leave their sponsor star and find a new one that provides a good service. A simple way to assess the likelihood of the sponsor being a good actor in the network is to look at on-chain data from the Azimuth contract, in particular, *Escapes*. If a sponsor has a low Escape score (planets that leave), one could use this as a proxy and say that the sponsor will keep behaving in the same way as the past data indicates. More over, if a planet attracts more planets, that signals more strongly the good quality of the provided service.
22+These planets need to quickly escape, that is, leave their sponsor star and find a new one that provides a good service. A simple way to assess the likelihood of the sponsor being a good actor in the network is to look at on-chain data from the Azimuth contract, in particular, _Escapes_. If a sponsor has a low Escape score (planets that leave), one could use this as a proxy and say that the sponsor will keep behaving in the same way as the past data indicates. More over, if a planet attracts more planets, that signals more strongly the good quality of the provided service.
23
23
24This proposal addresses this problem by using the Beta Reputation to create a Landscape app that will show the score of a planet's sponsor based on data from Azimuth, in particular the number of planets spawned, and the number of planets that have escaped. [The Beta Reputation](https://www.csee.umbc.edu/~msmith27/readings/public/josang-2002a.pdf) uses the Beta Distribution to calculate the score (e.g. successful/unsuccessful events over the total number of interactions) as the expected value of a probability distribution. More data available (high number of booted planets) will narrow down the confidence of the probability (if a star has only booted a planet that didn't escape, the confidence of that score `(1-0.67=33%)` is smaller than the one of a star that has booted 200 planets and only two have escaped `(1-0.87=13%)`)
24This proposal addresses this problem by using the Beta Reputation to create a Landscape app that will show the score of a planet's sponsor based on data from Azimuth, in particular the number of planets spawned, and the number of planets that have escaped. [The Beta Reputation](https://www.csee.umbc.edu/~msmith27/readings/public/josang-2002a.pdf) uses the Beta Distribution to calculate the score (e.g. successful/unsuccessful events over the total number of interactions) as the expected value of a probability distribution. More data available (high number of booted planets) will narrow down the confidence of the probability (if a star has only booted a planet that didn't escape, the confidence of that score `(1-0.67=33%)` is smaller than the one of a star that has booted 200 planets and only two have escaped `(1-0.87=13%)`)
25
25
@@ -33,14 +33,12 @@ With this is mind the Beta library (`/lib/beta.hoon`) can be used with any app t
33
33
34## Milestones
34## Milestones
35
35
36−
37### Gall Agent and Beta Reputation Library
36### Gall Agent and Beta Reputation Library
37+
382 stars
382 stars
39Delivery of the agent and library for the Beta reputation that's able to poke Azimuth for the Blockchain data, calculate the reputation score, and store it on the agent.
39Delivery of the agent and library for the Beta reputation that's able to poke Azimuth for the Blockchain data, calculate the reputation score, and store it on the agent.
40
40
41−
42### Escape UI
41### Escape UI
42+
432 stars
432 stars
44Delivery of the UI interface that will show the Reputation Score to the user, with the ability to search for specific sponsors and filter the results accordingly.
44Delivery of the UI interface that will show the Reputation Score to the user, with the ability to search for specific sponsors and filter the results accordingly.
45−
46−
content/grants/ethereum-abi-parser.md+4−6
@@ -2,8 +2,8 @@
2title = "Ethereum ABI Parser"
2title = "Ethereum ABI Parser"
3date = 2020-03-10
3date = 2020-03-10
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Create a Gall app that takes the bytecode for a contract ABI."
9description = "Create a Gall app that takes the bytecode for a contract ABI."
@@ -38,18 +38,16 @@ Create a Gall app that can output the byte code for a contract ABI.
38- [ABI Spec](https://solidity.readthedocs.io/en/v0.5.3/abi-spec.html)
38- [ABI Spec](https://solidity.readthedocs.io/en/v0.5.3/abi-spec.html)
39
39
40### Contribution Guidelines:
40### Contribution Guidelines:
41+
41- Do not begin work until your request to claim this bounty is accepted.
42- Do not begin work until your request to claim this bounty is accepted.
42- Email your work to grants@urbit.org.
43- Email your work to grants@urbit.org.
43- Submit your work as a pull request on to the [urbit/urbit github repository](https://github.com/urbit/urbit).
44- Submit your work as a pull request on to the [urbit/urbit github repository](https://github.com/urbit/urbit).
44- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
45- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
45- You have 90 days from the time of approval to complete this bounty.
46- You have 90 days from the time of approval to complete this bounty.
46
47
47−
48## Milestones
48## Milestones
49
49
50−
51### PR is merged
50### PR is merged
51+
522 stars
522 stars
53Your code is accepted and merged.
53Your code is accepted and merged.
54−
55−
content/grants/gall-api-documentation.md+14−17
@@ -2,7 +2,7 @@
2title = "Gall API documentation"
2title = "Gall API documentation"
3date = 2019-07-22
3date = 2019-07-22
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -20,35 +20,32 @@ Gall is the Arvo kernel module that controls userspace applications. Understandi
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23−Write a reference-style document that lists each arm name that could be used in a Gall app and describes what those arms are for. Each arm should also have a short example.
23+Write a reference-style document that lists each arm name that could be used in a Gall app and describes what those arms are for. Each arm should also have a short example.
24
24
25−Developers should be able to use this document as a template for writing their Gall app. Arms documented should include: `+poke`, `+coup`, `+peer`, `+reap`, `+quit`, `+peek`, `+prep`,`+scry`, and `+wake`.
25+Developers should be able to use this document as a template for writing their Gall app. Arms documented should include: `+poke`, `+coup`, `+peer`, `+reap`, `+quit`, `+peek`, `+prep`,`+scry`, and `+wake`.
26
26
27#### Resources
27#### Resources
28
28
29−* Read the existing [Gall documentation](https://urbit.org/docs/learn/arvo/gall/).
29+- Read the existing [Gall documentation](https://urbit.org/docs/learn/arvo/gall/).
30−* Familiarize yourself with `gall.hoon`, which is in the `/sys/vane` directory.
30+- Familiarize yourself with `gall.hoon`, which is in the `/sys/vane` directory.
31−* Familiarize yourself with the style of [reference documentation](https://urbit.org/docs/reference/).
31+- Familiarize yourself with the style of [reference documentation](https://urbit.org/docs/reference/).
32
32
33#### Contribution Guidelines
33#### Contribution Guidelines
34
34
35−* You have 30 days from the time of approval to complete this bounty.
35+- You have 30 days from the time of approval to complete this bounty.
36−* Do not begin work until your request to claim this bounty is accepted.
36+- Do not begin work until your request to claim this bounty is accepted.
37−* Your document should be written in Markdown.
37+- Your document should be written in Markdown.
38−* Submit your document in the form of a pull-request to the [Docs repo](https://github.com/urbit/docs). This file should live under the reference directory.
38+- Submit your document in the form of a pull-request to the [Docs repo](https://github.com/urbit/docs). This file should live under the reference directory.
39−* Expect to receive requests for changes to your document.
39+- Expect to receive requests for changes to your document.
40−
41
40
42## Milestones
41## Milestones
43
42
44−
45### First draft is submitted
43### First draft is submitted
46−0 stars
47−Your first draft is submitted as a pull request to the Docs repository.
48
44
45+0 stars
46+Your first draft is submitted as a pull request to the Docs repository.
49
47
50### Final draft is merged
48### Final draft is merged
49+
511 stars
501 stars
52Your edits are satisfactory, and your PR is merged to master.
51Your edits are satisfactory, and your PR is merged to master.
53−
54−
content/grants/go-airlock-library.md+4−7
@@ -2,7 +2,7 @@
2title = "Go Airlock Library"
2title = "Go Airlock Library"
3date = 2020-06-25
3date = 2020-06-25
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -14,7 +14,7 @@ completed = true
14link = ""
14link = ""
15+++
15+++
16
16
17−Create an Airlock library for the Go (aka Golang) programming language. Airlock is the set of HTTP APIs for communicating with an Urbit. This bounty will involve creating a Go library wrapper for the server side event and HTTP API.
17+Create an Airlock library for the Go (aka Golang) programming language. Airlock is the set of HTTP APIs for communicating with an Urbit. This bounty will involve creating a Go library wrapper for the server side event and HTTP API.
18
18
19Additionally, write a one-page explanation for the design choices for this library in the readme. If you have ideas for what Urbit applications would be useful for this library, please also include those suggestions in the readme.
19Additionally, write a one-page explanation for the design choices for this library in the readme. If you have ideas for what Urbit applications would be useful for this library, please also include those suggestions in the readme.
20
20
@@ -24,22 +24,19 @@ Additionally, write a one-page explanation for the design choices for this libra
24- https://github.com/baudtack/urlock-py
24- https://github.com/baudtack/urlock-py
25- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
25- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
26
26
27−
28###Contribution Guidelines:
27###Contribution Guidelines:
29
28
30-Do not begin work until your request to claim this bounty is accepted.
29-Do not begin work until your request to claim this bounty is accepted.
30+
31- Submit your work as a separate github repo, and include a link to it in your submission. Email grants@urbit.org if you have trouble.
31- Submit your work as a separate github repo, and include a link to it in your submission. Email grants@urbit.org if you have trouble.
32- Your library should be uploaded and available in a format compatible with the package manager you feel most comfortable maintaining.
32- Your library should be uploaded and available in a format compatible with the package manager you feel most comfortable maintaining.
33- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
33- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
34- You have 90 days from the time of approval to complete this bounty.
34- You have 90 days from the time of approval to complete this bounty.
35- Successful completion of this bounty may result in an invitation to complete other Airlock library bounties. If you are interested in creating an Airlock library for a language other than the ones currently presented, please contact us at grants@urbit.org ; it’s likely we’ll approve this as a proposal.
35- Successful completion of this bounty may result in an invitation to complete other Airlock library bounties. If you are interested in creating an Airlock library for a language other than the ones currently presented, please contact us at grants@urbit.org ; it’s likely we’ll approve this as a proposal.
36
36
37−
38## Milestones
37## Milestones
39
38
40−
41### Work is finished
39### Work is finished
40+
423 stars
413 stars
43You have completed your work and pushed it to a Github repo.
42You have completed your work and pushed it to a Github repo.
44−
45−
content/grants/graph-store-documentation-guide.md+47−35
@@ -2,7 +2,7 @@
2title = "Graph Store Documentation Guide"
2title = "Graph Store Documentation Guide"
3date = 2021-02-13
3date = 2021-02-13
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -15,6 +15,7 @@ link = ""
15+++
15+++
16
16
17## Overview
17## Overview
18+
18Motivation: `graph-store` is an extremely well-designed and powerful system for creating social and business applications, that should unlock myriad novel applications on Urbit. Unfortunately, it is currently nearly completely unused outside of Tlon, mainly due to inadequate documentation materials.
19Motivation: `graph-store` is an extremely well-designed and powerful system for creating social and business applications, that should unlock myriad novel applications on Urbit. Unfortunately, it is currently nearly completely unused outside of Tlon, mainly due to inadequate documentation materials.
19
20
20This project will change that, by fully familiarizing developers with `graph-store` and how to build software using it, and by providing a reference assist during subsequent development process.
21This project will change that, by fully familiarizing developers with `graph-store` and how to build software using it, and by providing a reference assist during subsequent development process.
@@ -22,79 +23,90 @@ This project will change that, by fully familiarizing developers with `graph-sto
22Every aspect of `graph-store` will be covered: designing schemas, interacting with them inside the CLI or from Urbit apps, and accessing them from frontends.
23Every aspect of `graph-store` will be covered: designing schemas, interacting with them inside the CLI or from Urbit apps, and accessing them from frontends.
23
24
24## Scope & Intended Audience
25## Scope & Intended Audience
26+
25### Scope
27### Scope
28+
26The target audience is an experienced developer in any outside programming language. We assume Hoon knowledge, and refer recommended hoon resources whenever necessary, covering the bare minimum in-line.
29The target audience is an experienced developer in any outside programming language. We assume Hoon knowledge, and refer recommended hoon resources whenever necessary, covering the bare minimum in-line.
27
30
28We cover the process involved in creating a new social app from scratch. We do not cover interacting with `graph-store` on the server-side, i.e. from other `gall` agents, although we may refer to several outside examples of that, since they should be comprehensible to the user after working through this.
31We cover the process involved in creating a new social app from scratch. We do not cover interacting with `graph-store` on the server-side, i.e. from other `gall` agents, although we may refer to several outside examples of that, since they should be comprehensible to the user after working through this.
29
32
30### Audience 1: Developers Learning `graph-store`
33### Audience 1: Developers Learning `graph-store`
34+
31The explainer and tutorial below are intended for learners, users who want to build a strong mental model of the store from scratch. They should be doable in either order (to accommodate different learning styles)
35The explainer and tutorial below are intended for learners, users who want to build a strong mental model of the store from scratch. They should be doable in either order (to accommodate different learning styles)
32
36
33### Audience 2: Developers Working on Social Applications
37### Audience 2: Developers Working on Social Applications
38+
34−The cookbook/how-to and API reference are for developers who understand `graph-store` and need reference materials for common patterns and syntax while building applications.
39+The cookbook/how-to and API reference are for developers who understand `graph-store` and need reference materials for common patterns and syntax while building applications.
35
40
36## Sections
41## Sections
42+
37### Explainer
43### Explainer
38
44
39This includes a high-level description of what `graph-store` is and why it exists, a technical overview of `graph-store`, and a walkthrough of the implementations of the Chat and Publish apps and how they are built using `graph-store`.
45This includes a high-level description of what `graph-store` is and why it exists, a technical overview of `graph-store`, and a walkthrough of the implementations of the Chat and Publish apps and how they are built using `graph-store`.
40
46
41Includes explanations of:
47Includes explanations of:
48+
42−* full walkthrough of `graph-store` and `post` sur files
49+- full walkthrough of `graph-store` and `post` sur files
43−* how the indexes work
50+- how the indexes work
44−* how validation marks are used in the code to enforce schemas
51+- how validation marks are used in the code to enforce schemas
45−* scry examples
52+- scry examples
46−* how mutations to `graph-store` happen
53+- how mutations to `graph-store` happen
47−* how the frontend queries, receives updates from, and sends messages to the backend
54+- how the frontend queries, receives updates from, and sends messages to the backend
48−* where JSON parsing is used and for what
55+- where JSON parsing is used and for what
49−* key differences in schema design for Chat vs Publish
56+- key differences in schema design for Chat vs Publish
50−* what would be needed to extend Chat and Publish in various ways
57+- what would be needed to extend Chat and Publish in various ways
51
58
52### Tutorial
59### Tutorial
60+
53−* implementation of a simplified chan-style imageboard
61+- implementation of a simplified chan-style imageboard
54−* demonstrates threading and basic pagination
62+- demonstrates threading and basic pagination
55−* simple `graph-store` reference embedding
63+- simple `graph-store` reference embedding
56
64
57### Cookbooks
65### Cookbooks
66+
58−* common social data patterns, and how to do each one
67+- common social data patterns, and how to do each one
59−* how to make a schema
68+- how to make a schema
60−* poking from the frontend
69+- poking from the frontend
61−* updating graph nodes
70+- updating graph nodes
62−* deleting & archiving graphs
71+- deleting & archiving graphs
63−* querying data from any graph
72+- querying data from any graph
64−* embedding references to other graph content
73+- embedding references to other graph content
65−* simple algorithms to rank results, a la HN/Reddit
74+- simple algorithms to rank results, a la HN/Reddit
66
75
67### Reference
76### Reference
77+
68Update https://urbit.org/docs/tutorials/hoon/graph/ to be more useful:
78Update https://urbit.org/docs/tutorials/hoon/graph/ to be more useful:
79+
69−* links to relevant source files
80+- links to relevant source files
70−* exact scrys available, with examples
81+- exact scrys available, with examples
71
82
72## User Stories
83## User Stories
84+
73As a developer without prior `graph-store` knowledge, I can:
85As a developer without prior `graph-store` knowledge, I can:
86+
74−* Build a mental model of all aspects of the system with detailed explanations of actual production code
87+- Build a mental model of all aspects of the system with detailed explanations of actual production code
75−* Develop intuitions for how applications are built with it by designing and building my own social application
88+- Develop intuitions for how applications are built with it by designing and building my own social application
76
89
77As a developer who already understands `graph-store` I can:
90As a developer who already understands `graph-store` I can:
78−* think of the pattern my social app will follow, and then refer to similar design how-tos to create my schema
79−* look up API information
80−* maintain existing `graph-store` applications on the backend
81−* maintain existing `graph-store` applications on the frontend in the frontend stack of my choice
82
91
83−## Milestones
92+- think of the pattern my social app will follow, and then refer to similar design how-tos to create my schema
93+- look up API information
94+- maintain existing `graph-store` applications on the backend
95+- maintain existing `graph-store` applications on the frontend in the frontend stack of my choice
84
96
97+## Milestones
85
98
86### Explainer
99### Explainer
100+
871 stars
1011 stars
88Full written explainer posted online
102Full written explainer posted online
89
103
90−
91### Tutorial
104### Tutorial
105+
921 stars
1061 stars
93Full written tutorial with tested code samples
107Full written tutorial with tested code samples
94
108
95−
96### Cookbooks & Reference, Finalization
109### Cookbooks & Reference, Finalization
110+
972 stars
1112 stars
98Full written cookbook document, updated reference, and finalization of the content
112Full written cookbook document, updated reference, and finalization of the content
99−
100−
content/grants/haskell-airlock-library.md+3−7
@@ -2,7 +2,7 @@
2title = "Haskell Airlock Library"
2title = "Haskell Airlock Library"
3date = 2020-06-25
3date = 2020-06-25
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -14,7 +14,7 @@ completed = true
14link = ""
14link = ""
15+++
15+++
16
16
17−Create an Airlock library for the Haskell programming language. Airlock is the set of HTTP APIs for communicating with an Urbit. This bounty will involve creating a Haskell library wrapper for the server side event and HTTP API.
17+Create an Airlock library for the Haskell programming language. Airlock is the set of HTTP APIs for communicating with an Urbit. This bounty will involve creating a Haskell library wrapper for the server side event and HTTP API.
18
18
19Additionally, write a one-page explanation for the design choices for this library in the readme. If you have ideas for what Urbit applications would be useful for this library, please also include those suggestions in the readme.
19Additionally, write a one-page explanation for the design choices for this library in the readme. If you have ideas for what Urbit applications would be useful for this library, please also include those suggestions in the readme.
20
20
@@ -24,7 +24,6 @@ Additionally, write a one-page explanation for the design choices for this libra
24- https://github.com/baudtack/urlock-py
24- https://github.com/baudtack/urlock-py
25- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
25- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
26
26
27−
28### Contribution Guidelines:
27### Contribution Guidelines:
29
28
30- Do not begin work until your request to claim this bounty is accepted.
29- Do not begin work until your request to claim this bounty is accepted.
@@ -34,12 +33,9 @@ Additionally, write a one-page explanation for the design choices for this libra
34- You have 90 days from the time of approval to complete this bounty.
33- You have 90 days from the time of approval to complete this bounty.
35- Successful completion of this bounty may result in an invitation to complete other Airlock library bounties. If you are interested in creating an Airlock library for a language other than the ones currently presented, please contact us at grants@urbit.org ; it’s likely we’ll approve this as a proposal.
34- Successful completion of this bounty may result in an invitation to complete other Airlock library bounties. If you are interested in creating an Airlock library for a language other than the ones currently presented, please contact us at grants@urbit.org ; it’s likely we’ll approve this as a proposal.
36
35
37−
38## Milestones
36## Milestones
39
37
40−
41### Your work is finished
38### Your work is finished
39+
423 stars
403 stars
43You have completed your work and pushed it to a Github repo.
41You have completed your work and pushed it to a Github repo.
44−
45−
content/grants/hoon-001-learner-efficiency-and-early-learner-resources.md+10−15
@@ -2,7 +2,7 @@
2title = "Hoon 001: Learner efficiency and early-learner resources"
2title = "Hoon 001: Learner efficiency and early-learner resources"
3date = 2020-02-10
3date = 2020-02-10
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -24,27 +24,26 @@ The problem:
24
24
25We perceive a need for an onboarding/educational experience into Hoon which is particularly tailored to the individual who has little to no experience coding, or for the individual who has a serious interest in learning and using Hoon, but has a heightened need for the educational efficiency (i.e. as much learning possible per amount of time and brainpower spent). This comment, and indeed this project proposal is in no way a dig on the current Tlon educational efforts. In fact, we would like to state outright that the current resources represent a solid work effort and are extraordinarily useful for many types of learners.
25We perceive a need for an onboarding/educational experience into Hoon which is particularly tailored to the individual who has little to no experience coding, or for the individual who has a serious interest in learning and using Hoon, but has a heightened need for the educational efficiency (i.e. as much learning possible per amount of time and brainpower spent). This comment, and indeed this project proposal is in no way a dig on the current Tlon educational efforts. In fact, we would like to state outright that the current resources represent a solid work effort and are extraordinarily useful for many types of learners.
26
26
27−For these two groups mentioned above, Hoon presents particular learning challenges, including:
27+For these two groups mentioned above, Hoon presents particular learning challenges, including:
28
28
29Extensive and new vocabulary, with no clear distinction between which terms map to general computer science, which are Urbit/Hoon particular, and where the boundaries of definition lie in each case.
29Extensive and new vocabulary, with no clear distinction between which terms map to general computer science, which are Urbit/Hoon particular, and where the boundaries of definition lie in each case.
30Sheer volume of new concepts for the beginning programmer, which, when presented at a pace faster than an efficient learning pace, might lead to confusion and less efficient learning.
30Sheer volume of new concepts for the beginning programmer, which, when presented at a pace faster than an efficient learning pace, might lead to confusion and less efficient learning.
31It may be that the new coder or early learner has little mastery of similar concepts. References to introduce new concepts should make use of common prior knowledge, for example, by mapping comparisons to Excel, everyday thinking and, where necessary, mathematical functions.
31It may be that the new coder or early learner has little mastery of similar concepts. References to introduce new concepts should make use of common prior knowledge, for example, by mapping comparisons to Excel, everyday thinking and, where necessary, mathematical functions.
32−In particular, the new student starts out “lost” by definition and requires many more references as to where one is, where one is going and what lies at the end of each lesson.
32+In particular, the new student starts out “lost” by definition and requires many more references as to where one is, where one is going and what lies at the end of each lesson.
33−Additionally, they will benefit from larger-scope references as to where lessons fit into the landscape of Hoon mastery.
33+Additionally, they will benefit from larger-scope references as to where lessons fit into the landscape of Hoon mastery.
34−The non-coder or coder who is learning in order to realize a particular idea with Hoon code might not appreciate purely cerebral exercises. To keep peak interest and engagement, work products should be tangible and feel useful to cultivate enthusiasm to keep learning, even with basic material.
34+The non-coder or coder who is learning in order to realize a particular idea with Hoon code might not appreciate purely cerebral exercises. To keep peak interest and engagement, work products should be tangible and feel useful to cultivate enthusiasm to keep learning, even with basic material.
35
35
36Our solution:
36Our solution:
37
37
38−We aim to create a set of Hoon education modules that are specifically catered to people who have minimal to no coding skills. Our current working title is “Hoon 001.” We envision the product will be a textbook-esque website-based set of content. To achieve this as an excellent-quality & effective work product we plan to utilize the following elements:
38+We aim to create a set of Hoon education modules that are specifically catered to people who have minimal to no coding skills. Our current working title is “Hoon 001.” We envision the product will be a textbook-esque website-based set of content. To achieve this as an excellent-quality & effective work product we plan to utilize the following elements:
39
39
40An appropriately high-level introduction to coding generally, and to Hoon specifically, focusing on the broadest concepts, which a learner should focus on understanding first
40An appropriately high-level introduction to coding generally, and to Hoon specifically, focusing on the broadest concepts, which a learner should focus on understanding first
41Definitions of terms which are not open-ended, and which as clearly as possible establish boundaries between what something is and is not and, where possible, include references to readily accessible external concepts
41Definitions of terms which are not open-ended, and which as clearly as possible establish boundaries between what something is and is not and, where possible, include references to readily accessible external concepts
42Visualization using color, white space and annotations to convey program flow and highlighting key points.
42Visualization using color, white space and annotations to convey program flow and highlighting key points.
43Pacing of new and abstract concepts, that is deliberate and steady, ordered as sequentially as possible, with a limited number of new concepts under focus per unit effort/time
43Pacing of new and abstract concepts, that is deliberate and steady, ordered as sequentially as possible, with a limited number of new concepts under focus per unit effort/time
44Linear progression/accumulation of skill with a steady advancement of themes, concepts, knowledge
44Linear progression/accumulation of skill with a steady advancement of themes, concepts, knowledge
45−Consistent teaching methodology - Break down complex programs into readily intelligible sections (thereby aiding the user in understanding how the interpreter ‘thinks’), discuss tools required to program these subsections, walk line by line through the resultant code and finally explain how the work can be stitched together to form the complete program.
45+Consistent teaching methodology - Break down complex programs into readily intelligible sections (thereby aiding the user in understanding how the interpreter ‘thinks’), discuss tools required to program these subsections, walk line by line through the resultant code and finally explain how the work can be stitched together to form the complete program.
46−Multi-sensory learning experience - The use of multiple tools to cater to different learning styles, such as text-based walkthrough, annotations (as already indicated) and a video walkthrough for each generator analyzed.
46+Multi-sensory learning experience - The use of multiple tools to cater to different learning styles, such as text-based walkthrough, annotations (as already indicated) and a video walkthrough for each generator analyzed.
47−
48
47
49Proposed work product/deliverable:
48Proposed work product/deliverable:
50
49
@@ -65,17 +64,13 @@ Two of the types of Hoon programs
65The naked generator
64The naked generator
66The say generator
65The say generator
67Some tools we will need (some runes explained)
66Some tools we will need (some runes explained)
68−Let’s create! Five generators, from fairly trivial (1-2) to stretching the learner’s skill set with each next generator project. Tasks presented, breaking down the task to what conceptual tools are needed, to going through the code line by line and character by character, again in-depth and in plain English to explain how those elements are written in Hoon and how the computer manages it
67+Let’s create! Five generators, from fairly trivial (1-2) to stretching the learner’s skill set with each next generator project. Tasks presented, breaking down the task to what conceptual tools are needed, to going through the code line by line and character by character, again in-depth and in plain English to explain how those elements are written in Hoon and how the computer manages it
69−
70
68
71Expected hours: 125
69Expected hours: 125
72
70
73−
74## Milestones
71## Milestones
75
72
76−
77### Full Project
73### Full Project
74+
783 stars
753 stars
79Full project delivery, including content, learning materials, generators, walkthroughs, video walkthroughs
76Full project delivery, including content, learning materials, generators, walkthroughs, video walkthroughs
80−
81−
content/grants/host-three-college-university-urbit-meetups-1.md+6−7
@@ -2,7 +2,7 @@
2title = "Host Three College/University Urbit Meetups (1)"
2title = "Host Three College/University Urbit Meetups (1)"
3date = 2020-03-02
3date = 2020-03-02
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,11 +16,12 @@ link = ""
16
16
17### Background
17### Background
18
18
19−Urbit is a canvas for learning, building, experiments and collaboration. We believe this makes it a natural fit for students and teachers of many disciplines. We encourage faculty, staff, and students at any college or university to conduct meetups to explain Urbit and help new users join.
19+Urbit is a canvas for learning, building, experiments and collaboration. We believe this makes it a natural fit for students and teachers of many disciplines. We encourage faculty, staff, and students at any college or university to conduct meetups to explain Urbit and help new users join.
20
20
21### Bounty Description
21### Bounty Description
22
22
23This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
24+
24- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
25- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
25- You do not need to be a Computer Science student, but we request that you specifically make sure to invite and notify the CS department at your school about the meetups.
26- You do not need to be a Computer Science student, but we request that you specifically make sure to invite and notify the CS department at your school about the meetups.
26- The meetup must have a presentation or talk about Urbit.
27- The meetup must have a presentation or talk about Urbit.
@@ -29,6 +30,7 @@ This bounty is to host an Urbit meetup at your college/university. The meetup sh
29- You must host at least three meetups.
30- You must host at least three meetups.
30
31
31Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
32Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
33+
32- Nock (Virtual Machines)
34- Nock (Virtual Machines)
33- Kelvin versioning
35- Kelvin versioning
34- Deterministic computing
36- Deterministic computing
@@ -49,12 +51,9 @@ Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best pra
49- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
51- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
50- You have 100 days from the time of approval to complete this bounty.
52- You have 100 days from the time of approval to complete this bounty.
51
53
52−
53## Milestones
54## Milestones
54
55
55−
56### Three meetups are held
56### Three meetups are held
57−1 stars
58−Your three meetups are held, and links to the presentations have been posted and sent to grants@urbit.org.
59
57
60−
58+1 stars
59+Your three meetups are held, and links to the presentations have been posted and sent to grants@urbit.org.
content/grants/host-three-college-university-urbit-meetups-2.md+6−7
@@ -2,7 +2,7 @@
2title = "Host Three College/University Urbit Meetups (2)"
2title = "Host Three College/University Urbit Meetups (2)"
3date = 2020-03-03
3date = 2020-03-03
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,11 +16,12 @@ link = ""
16
16
17### Background
17### Background
18
18
19−Urbit is a canvas for learning, building, experiments and collaboration. We believe this makes it a natural fit for students and teachers of many disciplines. We encourage faculty, staff, and students at any college or university to conduct meetups to explain Urbit and help new users join.
19+Urbit is a canvas for learning, building, experiments and collaboration. We believe this makes it a natural fit for students and teachers of many disciplines. We encourage faculty, staff, and students at any college or university to conduct meetups to explain Urbit and help new users join.
20
20
21### Bounty Description
21### Bounty Description
22
22
23This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
24+
24- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
25- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
25- You do not need to be a Computer Science student, but we request that you specifically make sure to invite and notify the CS department at your school about the meetups.
26- You do not need to be a Computer Science student, but we request that you specifically make sure to invite and notify the CS department at your school about the meetups.
26- The meetup must have a presentation or talk about Urbit.
27- The meetup must have a presentation or talk about Urbit.
@@ -29,6 +30,7 @@ This bounty is to host an Urbit meetup at your college/university. The meetup sh
29- You must host at least three meetups.
30- You must host at least three meetups.
30
31
31Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
32Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
33+
32- Nock (Virtual Machines)
34- Nock (Virtual Machines)
33- Kelvin versioning
35- Kelvin versioning
34- Deterministic computing
36- Deterministic computing
@@ -49,12 +51,9 @@ Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best pra
49- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
51- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
50- You have 100 days from the time of approval to complete this bounty.
52- You have 100 days from the time of approval to complete this bounty.
51
53
52−
53## Milestones
54## Milestones
54
55
55−
56### Three meetups are held
56### Three meetups are held
57−1 stars
58−Your three meetups are held, and links to the presentations have been posted and sent to grants@urbit.org.
59
57
60−
58+1 stars
59+Your three meetups are held, and links to the presentations have been posted and sent to grants@urbit.org.
content/grants/host-three-college-university-urbit-meetups-3.md+7−7
@@ -2,8 +2,8 @@
2title = "Host Three College/University Urbit Meetups (3)"
2title = "Host Three College/University Urbit Meetups (3)"
3date = 2020-03-03
3date = 2020-03-03
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Hold a meetup and presentation about Urbit."
9description = "Hold a meetup and presentation about Urbit."
@@ -16,11 +16,12 @@ link = ""
16
16
17### Background
17### Background
18
18
19−Urbit is a canvas for learning, building, experiments and collaboration. We believe this makes it a natural fit for students and teachers of many disciplines. We encourage faculty, staff, and students at any college or university to conduct meetups to explain Urbit and help new users join.
19+Urbit is a canvas for learning, building, experiments and collaboration. We believe this makes it a natural fit for students and teachers of many disciplines. We encourage faculty, staff, and students at any college or university to conduct meetups to explain Urbit and help new users join.
20
20
21### Bounty Description
21### Bounty Description
22
22
23This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
24+
24- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
25- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
25- You do not need to be a Computer Science student, but we request that you specifically make sure to invite and notify the CS department at your school about the meetups.
26- You do not need to be a Computer Science student, but we request that you specifically make sure to invite and notify the CS department at your school about the meetups.
26- The meetup must have a presentation or talk about Urbit.
27- The meetup must have a presentation or talk about Urbit.
@@ -29,6 +30,7 @@ This bounty is to host an Urbit meetup at your college/university. The meetup sh
29- You must host at least three meetups.
30- You must host at least three meetups.
30
31
31Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
32Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
33+
32- Nock (Virtual Machines)
34- Nock (Virtual Machines)
33- Kelvin versioning
35- Kelvin versioning
34- Deterministic computing
36- Deterministic computing
@@ -51,9 +53,7 @@ Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best pra
51
53
52## Milestones
54## Milestones
53
55
54−
55### Three meetups are held
56### Three meetups are held
56−1 stars
57−Your three meetups are held, and links to the presentations have been posted and sent to grants@urbit.org.
58
57
59−
58+1 stars
59+Your three meetups are held, and links to the presentations have been posted and sent to grants@urbit.org.
content/grants/host-three-virtual-urbit-meetups.md+5−7
@@ -2,7 +2,7 @@
2title = "Host Three Virtual Urbit Meetups"
2title = "Host Three Virtual Urbit Meetups"
3date = 2020-03-27
3date = 2020-03-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23It's the time of the Coronavirus, and so everyone is switching to meeting online. Urbit meetups can do this, too! This bounty is to host an Urbit meetup virtually. The meetup should meet the following criteria:
23It's the time of the Coronavirus, and so everyone is switching to meeting online. Urbit meetups can do this, too! This bounty is to host an Urbit meetup virtually. The meetup should meet the following criteria:
24
24
25- The meetup must be publicly joinable, and there must be a public web link for signing up (like meetup.com)
25- The meetup must be publicly joinable, and there must be a public web link for signing up (like meetup.com)
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least three virtual meetups.
29- You must host at least three virtual meetups.
@@ -36,16 +36,14 @@ Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best pra
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38
38
39−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
42- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
43
43
44## Milestones
44## Milestones
45
45
46−
47### The third meetup is help
46### The third meetup is help
47+
481 stars
481 stars
49The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
50−
51−
content/grants/host-two-urbit-meetups-1.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (1)"
2title = "Host Two Urbit Meetups (1)"
3date = 2019-11-19
3date = 2019-11-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is held
51### The second meetup is held
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-10.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (10)"
2title = "Host Two Urbit Meetups (10)"
3date = 2019-11-26
3date = 2019-11-26
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com)
25- The meetup must be public, and there must be a public web link for joining (like meetup.com)
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is help
46### The first meetup is help
47+
470 stars
480 stars
48The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is help
51### The second meetup is help
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-11.md+6−7
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (11)"
2title = "Host Two Urbit Meetups (11)"
3date = 2021-02-07
3date = 2021-02-07
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -23,7 +23,7 @@ Urbit needs champions! The Urbit Foundation is looking for community members to
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com)
25- The meetup must be public, and there must be a public web link for joining (like meetup.com)
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is held
51### The second meetup is held
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-2.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (2)"
2title = "Host Two Urbit Meetups (2)"
3date = 2019-11-19
3date = 2019-11-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is held
51### The second meetup is held
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-3.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (3)"
2title = "Host Two Urbit Meetups (3)"
3date = 2019-11-19
3date = 2019-11-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The first meetup is held
51### The first meetup is held
52+
521 stars
531 stars
53The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-4.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (4)"
2title = "Host Two Urbit Meetups (4)"
3date = 2019-11-19
3date = 2019-11-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is held
51### The second meetup is held
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-5.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (5)"
2title = "Host Two Urbit Meetups (5)"
3date = 2019-11-19
3date = 2019-11-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is held
51### The second meetup is held
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-6.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (6)"
2title = "Host Two Urbit Meetups (6)"
3date = 2019-11-21
3date = 2019-11-21
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is held
51### The second meetup is held
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-7.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (7)"
2title = "Host Two Urbit Meetups (7)"
3date = 2019-11-21
3date = 2019-11-21
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
25- The meetup must be public, and there must be a public web link for joining (like meetup.com
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is held
51### The second meetup is held
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-8.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (8)"
2title = "Host Two Urbit Meetups (8)"
3date = 2019-11-22
3date = 2019-11-22
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com)
25- The meetup must be public, and there must be a public web link for joining (like meetup.com)
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is held
46### The first meetup is held
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is held
51### The second meetup is held
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/host-two-urbit-meetups-9.md+7−8
@@ -2,7 +2,7 @@
2title = "Host Two Urbit Meetups (9)"
2title = "Host Two Urbit Meetups (9)"
3date = 2019-11-26
3date = 2019-11-26
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,14 +16,14 @@ link = ""
16
16
17#### Background
17#### Background
18
18
19−Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
19+Tlon is not Urbit; Urbit is owned by its community. So we want to decenter the Urbit brand into cities outside of San Francisco, and watch the community’s independent visions of the project take wing.
20
20
21#### Bounty Description
21#### Bounty Description
22
22
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
23This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
24
24
25- The meetup must be public, and there must be a public web link for joining (like meetup.com)
25- The meetup must be public, and there must be a public web link for joining (like meetup.com)
26−- The meetup must have a presentation or talk about Urbit.
26+- The meetup must have a presentation or talk about Urbit.
27- The presentation or talk must be recorded and posted publicly online.
27- The presentation or talk must be recorded and posted publicly online.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
28- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
29- You must host at least two meetups.
29- You must host at least two meetups.
@@ -35,21 +35,20 @@ You should go into this bounty with the mindset of creating a regularly schedule
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
35Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
36
36
37#### Contribution Guidelines
37#### Contribution Guidelines
38+
38−- Do not begin work until your request to claim this bounty is accepted.
39+- Do not begin work until your request to claim this bounty is accepted.
39- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
40- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
41- You have 100 days from the time of approval to complete this bounty.
42- You have 100 days from the time of approval to complete this bounty.
42
43
43## Milestones
44## Milestones
44
45
45−
46### The first meetup is help
46### The first meetup is help
47+
470 stars
480 stars
48The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
49
50
50−
51### The second meetup is help
51### The second meetup is help
52+
521 stars
531 stars
53The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
54−
55−
content/grants/links-in-urbit-reference-docs.md+2−4
@@ -2,7 +2,7 @@
2title = "Links in Urbit Reference Docs"
2title = "Links in Urbit Reference Docs"
3date = 2020-06-16
3date = 2020-06-16
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -22,9 +22,7 @@ Consider, for contrast, a [random Python doc page](https://docs.python.org/3/lib
22
22
23## Milestones
23## Milestones
24
24
25−
26### Links added to Reference documentation
25### Links added to Reference documentation
26+
271 stars
271 stars
28Concepts that refer to pages with documentation have links to said documentation.
28Concepts that refer to pages with documentation have links to said documentation.
29−
30−
content/grants/llelogram.md+16−19
@@ -2,8 +2,8 @@
2title = "Llelogram"
2title = "Llelogram"
3date = 2020-07-29
3date = 2020-07-29
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Towards creating a political-econometric of federal legislation people can read as easily as a stock ticker: Llelogram"
9description = "Towards creating a political-econometric of federal legislation people can read as easily as a stock ticker: Llelogram"
@@ -15,42 +15,39 @@ canceled = true
15link = ""
15link = ""
16+++
16+++
17
17
18−This is a grant proposal to build a Gall application, we are calling Llelogram*
18+This is a grant proposal to build a Gall application, we are calling Llelogram\*
19
19
20−For the past few years we have been working on a legislative analysis tool we call Prism that interprets actionable legislation in federal congress and renders a basic, static typed value reflecting the partisan displacement of the text, then transposes that over roll call voting data. The inherent structure of Gall applications, with vases and cages seems for us an ideal way to take the concept one step deeper by creating an index of relevant factors to run contravariant to the state:(actionable legislation). Put another way, we want to be able to interpolate more complex factors like fiscal displacement and popular discourse into our data, creating a political-econometric. By translating the static displacement of partisan divergence into a material quantity through Prism rendering a typed value, we have been waiting to interpolate abstract textual facets of predeterminate factors (like the intellectual justifications of empirical affect) into a value dynamic enough to be logged cleanly and actionably. Needless to say, we are very excited about Gall.
20+For the past few years we have been working on a legislative analysis tool we call Prism that interprets actionable legislation in federal congress and renders a basic, static typed value reflecting the partisan displacement of the text, then transposes that over roll call voting data. The inherent structure of Gall applications, with vases and cages seems for us an ideal way to take the concept one step deeper by creating an index of relevant factors to run contravariant to the state:(actionable legislation). Put another way, we want to be able to interpolate more complex factors like fiscal displacement and popular discourse into our data, creating a political-econometric. By translating the static displacement of partisan divergence into a material quantity through Prism rendering a typed value, we have been waiting to interpolate abstract textual facets of predeterminate factors (like the intellectual justifications of empirical affect) into a value dynamic enough to be logged cleanly and actionably. Needless to say, we are very excited about Gall.
21− The concept of scoring legislation at all–let alone determining how divergent it may be–is somewhat controversial, however we believe that our process of scoring legislation is well developed yet simple enough to be conceptualized casually, to the point that is credible in the way that stock tickers are referenced to interpret market developments in real time. Ideally, Llelogram should take advantage of the Gall application structure to provide economic and philosophic context to active federal legislation in real time through logs of atomic transactions.
21+The concept of scoring legislation at all–let alone determining how divergent it may be–is somewhat controversial, however we believe that our process of scoring legislation is well developed yet simple enough to be conceptualized casually, to the point that is credible in the way that stock tickers are referenced to interpret market developments in real time. Ideally, Llelogram should take advantage of the Gall application structure to provide economic and philosophic context to active federal legislation in real time through logs of atomic transactions.
22−Nothing happens in a vacuum. For however complicated and impenetrable legislation can be, there are very clear and consistent textual markers that do translate into material displacement. The idea then, is to create a Gall application that renders an illustration* of this displacement so that we could easily conceptualize how legislation affects our society.
22+Nothing happens in a vacuum. For however complicated and impenetrable legislation can be, there are very clear and consistent textual markers that do translate into material displacement. The idea then, is to create a Gall application that renders an illustration\* of this displacement so that we could easily conceptualize how legislation affects our society.
23
23
24−Technically, Llelogram is a set of tables to run contravariant to legislation. Technically illiterate as I am, from what I could gather on the Urbit Gall App tutorial, the unary function would help to illustrate the fiscal dynamic, while the binary function would translate the more abstract philosophical displacement of the text. The unary table would be made up of contemporary econometrics having to do with wealth portfolios; i.e. income/tax[liabilities] across demographics such as public sector employees (eg. teachers and janitors)/elected representatives, to private sector employees/capitalists (eg. tycoons). The binary function would be comprised of diametrica that reflect the spectrum of modern* discourse/experience. The unary table is a little more straightforward in that it’s parameters are neatly class/quantified through a currency which is universally accepted/desired. On the other hand, the binary table would be something like a literary collage made up of seminal sociological texts spanning the entire spectrum of (actionable)pop discourse that resonates variably between partisan positions to illustrate displacement.
24+Technically, Llelogram is a set of tables to run contravariant to legislation. Technically illiterate as I am, from what I could gather on the Urbit Gall App tutorial, the unary function would help to illustrate the fiscal dynamic, while the binary function would translate the more abstract philosophical displacement of the text. The unary table would be made up of contemporary econometrics having to do with wealth portfolios; i.e. income/tax[liabilities] across demographics such as public sector employees (eg. teachers and janitors)/elected representatives, to private sector employees/capitalists (eg. tycoons). The binary function would be comprised of diametrica that reflect the spectrum of modern\* discourse/experience. The unary table is a little more straightforward in that it’s parameters are neatly class/quantified through a currency which is universally accepted/desired. On the other hand, the binary table would be something like a literary collage made up of seminal sociological texts spanning the entire spectrum of (actionable)pop discourse that resonates variably between partisan positions to illustrate displacement.
25−
26−2020 has been a scary year, but for all the sound and fury I can see light in our eyes. If we can create what I have been conceptualizing since 2015, Llelogram will be a tool for people to see how well legislation written in their names reflects the light in their eyes. Thank you so much for reading, I hope I can be part of utilizing Urbit and bringing it into the real world with you folks!
27
25
26+2020 has been a scary year, but for all the sound and fury I can see light in our eyes. If we can create what I have been conceptualizing since 2015, Llelogram will be a tool for people to see how well legislation written in their names reflects the light in their eyes. Thank you so much for reading, I hope I can be part of utilizing Urbit and bringing it into the real world with you folks!
28
27
29## Milestones
28## Milestones
30
29
31−
32### Build the CLI
30### Build the CLI
33−1 stars
34−At this point we should have a basic CLI that imports actionable* federal legislation, and provides a basic way for us to flag language/numbers and score it according to how generally displaced is.
35
31
32+1 stars
33+At this point we should have a basic CLI that imports actionable\* federal legislation, and provides a basic way for us to flag language/numbers and score it according to how generally displaced is.
36
34
37### Compiling the tables
35### Compiling the tables
36+
381 stars
371 stars
39Having worked in parallel with the engineers as they put together the CLI, I'll be compiling a basic list of tax liabilities issued by tax code; also a literary collage of seminal sociology
38Having worked in parallel with the engineers as they put together the CLI, I'll be compiling a basic list of tax liabilities issued by tax code; also a literary collage of seminal sociology
40
39
41−
42### Interpret the stimulus package
40### Interpret the stimulus package
41+
431 stars
421 stars
44Given the gravity of the stimulus package congress is working on, we should apply our project to it as a way of testing how well our agent illustrates the content and resonates with our control
43Given the gravity of the stimulus package congress is working on, we should apply our project to it as a way of testing how well our agent illustrates the content and resonates with our control
45
44
46−
47### Write a paper
45### Write a paper
48−1 stars
49−The paper should stand as a kind of thesis which would be tested as the election happens and we can see how these developments were interpreted through the constituents.
50
46
47+1 stars
48+The paper should stand as a kind of thesis which would be tested as the election happens and we can see how these developments were interpreted through the constituents.
51
49
52### Create a kind of graphic rendition
50### Create a kind of graphic rendition
53−1 stars
54−Given that the ultimate goal of Llelogram is to be something like a stock ticker, I want to create a coherent design language that would reflect the State we are managing.
55
51
56−
52+1 stars
53+Given that the ultimate goal of Llelogram is to be something like a stock ticker, I want to create a coherent design language that would reflect the State we are managing.
content/grants/matrices-in-hoon.md+9−10
@@ -2,7 +2,7 @@
2title = "Matrices in Hoon"
2title = "Matrices in Hoon"
3date = 2020-02-21
3date = 2020-02-21
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -21,16 +21,18 @@ Hoon currently does not have vector or array types.
21### Bounty Description
21### Bounty Description
22
22
23You must:
23You must:
24+
24- Define a Hoon data structure for n-dimensional arrays
25- Define a Hoon data structure for n-dimensional arrays
25- Spec out Hoon type signatures for basic array functions, with an informal but coherent plan for jetting
26- Spec out Hoon type signatures for basic array functions, with an informal but coherent plan for jetting
26- Implement basic array functions
27- Implement basic array functions
27- Write corresponding jets
28- Write corresponding jets
28−
29+
29You approach could follow one of many paradigms, but below are some good ideas:
30You approach could follow one of many paradigms, but below are some good ideas:
31+
30−- BLAS-style matrix math
32+- BLAS-style matrix math
31- Tensorflow
33- Tensorflow
32- Futhark
34- Futhark
33−
35+
34Any paradigm is acceptable as long as it results in code whose performance is at least close to on-par with NumPy.
36Any paradigm is acceptable as long as it results in code whose performance is at least close to on-par with NumPy.
35
37
36### Resources
38### Resources
@@ -42,16 +44,13 @@ Any paradigm is acceptable as long as it results in code whose performance is at
42
44
43### Contribution Guidelines
45### Contribution Guidelines
44
46
45−- Do not begin work until your request to claim this bounty is accepted.
47+- Do not begin work until your request to claim this bounty is accepted.
46- Submit your code as a PR to the [urbit Github repo](https://github.com/urbit/urbit)
48- Submit your code as a PR to the [urbit Github repo](https://github.com/urbit/urbit)
47−- You have 180 days from the time of approval to complete this bounty.
49+- You have 180 days from the time of approval to complete this bounty.
48−
49
50
50## Milestones
51## Milestones
51
52
52−
53### Your PR is merged
53### Your PR is merged
54+
545 stars
555 stars
55Your PR is accepted and merged.
56Your PR is accepted and merged.
56−
57−
content/grants/matrixriotim-bridge-bot.md+8−7
@@ -2,7 +2,7 @@
2title = "Matrix(Riot.im) bridge/bot"
2title = "Matrix(Riot.im) bridge/bot"
3date = 2020-11-05
3date = 2020-11-05
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,24 +16,25 @@ link = ""
16+++
16+++
17
17
18## How
18## How
19+
19Looking over the airlock documentation this seems to be a pretty simple endeavor. Preliminary testing shows it should be more than possible to connect a matrix server and urbit channel. Both systems have well built python based API's and transfer message's via a json query, very manipulation looks needed.
20Looking over the airlock documentation this seems to be a pretty simple endeavor. Preliminary testing shows it should be more than possible to connect a matrix server and urbit channel. Both systems have well built python based API's and transfer message's via a json query, very manipulation looks needed.
21+
20## Why
22## Why
23+
21I'm currently apart of a group split between the two platforms, us Martians pushing for the new internet and the old souls resistant to change. Building something like this then open sourcing it for other groups experiencing similar issues could bring a entry point for plethora of future Martians.
24I'm currently apart of a group split between the two platforms, us Martians pushing for the new internet and the old souls resistant to change. Building something like this then open sourcing it for other groups experiencing similar issues could bring a entry point for plethora of future Martians.
22−## Stars
23−I'm a close friend of ~nartes-fasrum, a prominent member of the community. They've gotten me addicted to this new age internet and gave me the idea for this project. I'm seeking a single star to cement my place in the galaxy, helping grow the community. I've actively recruited people in the real world under ~sorwet on behalf of ~nart but would like to start sponsoring them myself. I'm an AWS certified engineer with a burning passion for bleeding edge tech, this is my newest and most burning passion. The second milestone is more of a stretch goal of mine, I'm not sure I'm able to complete that alone, but I think it would be a really nice addition to lower the entry bar for fellow martians.
24
25
26+## Stars
25
27
28+I'm a close friend of ~nartes-fasrum, a prominent member of the community. They've gotten me addicted to this new age internet and gave me the idea for this project. I'm seeking a single star to cement my place in the galaxy, helping grow the community. I've actively recruited people in the real world under ~sorwet on behalf of ~nart but would like to start sponsoring them myself. I'm an AWS certified engineer with a burning passion for bleeding edge tech, this is my newest and most burning passion. The second milestone is more of a stretch goal of mine, I'm not sure I'm able to complete that alone, but I think it would be a really nice addition to lower the entry bar for fellow martians.
26
29
27## Milestones
30## Milestones
28
31
29−
30### Working base client
32### Working base client
33+
311 stars
341 stars
32At this point I'd like to have the base client working, subscribing and emitting messages between systems. I'd plan on this running via a separate cli-based client.
35At this point I'd like to have the base client working, subscribing and emitting messages between systems. I'd plan on this running via a separate cli-based client.
33
36
34−
35### Web Client
37### Web Client
38+
361 stars
391 stars
37A self hosted administration portal for the bot, able to add matrix channels/ships seamlessly. This is something that I'd like to complete but not sure on an ETA.
40A self hosted administration portal for the bot, able to add matrix channels/ships seamlessly. This is something that I'd like to complete but not sure on an ETA.
38−
39−
content/grants/minimal-urbit-os.md+6−7
@@ -2,7 +2,7 @@
2title = "Minimal Urbit OS"
2title = "Minimal Urbit OS"
3date = 2021-01-20
3date = 2021-01-20
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -21,6 +21,7 @@ It will be designed and built with the larger goal of identifying and isolating
21This OS is intended to be a foundation for most of the different environments where people will want to run Urbit. It will be simple for future projects to combine this OS with an overlay that includes software specific to the target environment.
21This OS is intended to be a foundation for most of the different environments where people will want to run Urbit. It will be simple for future projects to combine this OS with an overlay that includes software specific to the target environment.
22
22
23Possible environments:
23Possible environments:
24+
24- local server
25- local server
25- single cloud server
26- single cloud server
26- planet hosting provider
27- planet hosting provider
@@ -33,24 +34,22 @@ Qualifications: I recently installed Gentoo on a 20 year old ThinkPad for fun.
33
34
34## Milestones
35## Milestones
35
36
36−
37### Proof of concept
37### Proof of concept
38+
381 stars
391 stars
39A minimal VM that supports booting and running a comet for several hours with a small amount of manual setup
40A minimal VM that supports booting and running a comet for several hours with a small amount of manual setup
40
41
41−
42### System architecture plan
42### System architecture plan
43+
431 stars
441 stars
44A diagram and written overview of all components and their dependencies, explaining how the system works and why those components were chosen. I will seek input from Tlon.
45A diagram and written overview of all components and their dependencies, explaining how the system works and why those components were chosen. I will seek input from Tlon.
45
46
46−
47### Usable OS image
47### Usable OS image
48+
482 stars
492 stars
49A reasonably stable and complete OS image that testers can use for hosting their planets
50A reasonably stable and complete OS image that testers can use for hosting their planets
50
51
51−
52### Documentation and fixes
52### Documentation and fixes
53+
532 stars
542 stars
54Documentation for the entire system and build process, including specs for each component and ideas for replacements within Urbit. The OS will be updated to address known problems.
55Documentation for the entire system and build process, including specs for each component and ideas for replacements within Urbit. The OS will be updated to address known problems.
55−
56−
content/grants/network-explorer-data-pipeline-http-api.md+21−19
@@ -2,8 +2,8 @@
2title = "Network Explorer: Data Pipeline & HTTP API"
2title = "Network Explorer: Data Pipeline & HTTP API"
3date = 2021-03-12
3date = 2021-03-12
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Build a public, open HTTP API for exploring metrics about the Urbit network."
9description = "Build a public, open HTTP API for exploring metrics about the Urbit network."
@@ -66,15 +66,15 @@ defines a data model in terms of a relational database:
66
66
67Some notes about the above diagram:
67Some notes about the above diagram:
68
68
69−* The data model should be *agnostic to any particular PKI storage
69+- The data model should be _agnostic to any particular PKI storage
70− infrastructure* to future-proof it against PKI changes.
70+ infrastructure_ to future-proof it against PKI changes.
71−* For non-`ping` data, it should be possible to compute the table of `node` from
71+- For non-`ping` data, it should be possible to compute the table of `node` from
72 a time-ordered traversal of `pki_event` (kind of like Arvo!). This means that
72 a time-ordered traversal of `pki_event` (kind of like Arvo!). This means that
73 many fields listed on the `node` table could instead be derived from analysis
73 many fields listed on the `node` table could instead be derived from analysis
74 of the `pki_event` table. The implementer will be responsible for determining
74 of the `pki_event` table. The implementer will be responsible for determining
75 which fields should be represented on the `node` directly and which should be
75 which fields should be represented on the `node` directly and which should be
76 determined from `pki_event` for performance purposes.
76 determined from `pki_event` for performance purposes.
77−* We don't have data for comets or moons, because they're not registered on
77+- We don't have data for comets or moons, because they're not registered on
78 Azimuth and `radar` only checks for activity from ships with keys that have
78 Azimuth and `radar` only checks for activity from ships with keys that have
79 been set on Azimuth. There will likely be a future in which we'll have a way
79 been set on Azimuth. There will likely be a future in which we'll have a way
80 to provide data about these ship types though.
80 to provide data about these ship types though.
@@ -107,9 +107,11 @@ could be either REST or GraphQL.
107Produce the details for a single node.
107Produce the details for a single node.
108
108
109**Parameters**
109**Parameters**
110+
110- `urbit_id`: `@p`
111- `urbit_id`: `@p`
111
112
112**Returns**
113**Returns**
114+
113- `urbit_id`: `@p`
115- `urbit_id`: `@p`
114- `node_type`: `#{galaxy,star,planet,moon,comet}`
116- `node_type`: `#{galaxy,star,planet,moon,comet}`
115- `status`: `#{locked,unlocked,spawned,activated,online}`
117- `status`: `#{locked,unlocked,spawned,activated,online}`
@@ -130,6 +132,7 @@ Produce the details for a single node.
130Produce a list of nodes, optionally with parameters. Absence of parameters queries all nodes.
132Produce a list of nodes, optionally with parameters. Absence of parameters queries all nodes.
131
133
132**Parameters**
134**Parameters**
135+
133- `q`: `string` (optional: query term to search for)
136- `q`: `string` (optional: query term to search for)
134- `node_types`: `[node_type]` (optional: produce just events for specific node types)
137- `node_types`: `[node_type]` (optional: produce just events for specific node types)
135- `limit`: `int` (number of results to return)
138- `limit`: `int` (number of results to return)
@@ -143,11 +146,12 @@ An array of `node` in ascending order by `point`.
143Produce the stream of PKI events for a specific Urbit ID, or globally in descending order of `time`.
146Produce the stream of PKI events for a specific Urbit ID, or globally in descending order of `time`.
144
147
145**Parameters**
148**Parameters**
149+
146- `urbit_id`: `@p` (optional: unspecified implies global)
150- `urbit_id`: `@p` (optional: unspecified implies global)
147- `since`: `timestamp` (optional: unspecified implies all events)
151- `since`: `timestamp` (optional: unspecified implies all events)
148- `node_types`: `[node_type]` (optional: produce just events for specific node types)
152- `node_types`: `[node_type]` (optional: produce just events for specific node types)
149- `limit`: `int` (number of results to return)
153- `limit`: `int` (number of results to return)
150−- `offset`: `int` (number of results to offset by**
154+- `offset`: `int` (number of results to offset by\*\*
151
155
152**Returns**
156**Returns**
153An array of `pki_event` in descending order of `time`.
157An array of `pki_event` in descending order of `time`.
@@ -157,6 +161,7 @@ An array of `pki_event` in descending order of `time`.
157Produce the network activity of a node or nodes.
161Produce the network activity of a node or nodes.
158
162
159**Parameters**
163**Parameters**
164+
160- `urbit_id`: `@p` (optional: specific ship to pull activity for)
165- `urbit_id`: `@p` (optional: specific ship to pull activity for)
161- `since`: `timestamp` (optional: activity since provided time)
166- `since`: `timestamp` (optional: activity since provided time)
162- `until`: `timestamp` (optional: activity up until the provided time)
167- `until`: `timestamp` (optional: activity up until the provided time)
@@ -170,6 +175,7 @@ are provided, queries activity within a range.
170
175
171**Returns**
176**Returns**
172Array of:
177Array of:
178+
173- `urbit_id`: `@p`
179- `urbit_id`: `@p`
174- `date`: `date` (no time)
180- `date`: `date` (no time)
175- `active`: `boolean` (active or inactive)
181- `active`: `boolean` (active or inactive)
@@ -179,11 +185,11 @@ Array of:
179That which is not explicitly specified here is up to the choice of the
185That which is not explicitly specified here is up to the choice of the
180implementer.
186implementer.
181
187
182−* **Database**: PostgreSQL
188+- **Database**: PostgreSQL
183−* **Ethereum Interaction**: Infura
189+- **Ethereum Interaction**: Infura
184−* **HTTP API methodology**: GraphQL or REST
190+- **HTTP API methodology**: GraphQL or REST
185−* **ORM**: None. Implementer should be sufficiently familiar with SQL.
191+- **ORM**: None. Implementer should be sufficiently familiar with SQL.
186−* **API Hosting**: The API will be hosted on `api.network.urbit.org` or
192+- **API Hosting**: The API will be hosted on `api.network.urbit.org` or
187 `network.urbit.org/api`.
193 `network.urbit.org/api`.
188
194
189## Requirements
195## Requirements
@@ -203,27 +209,23 @@ implementer.
203
209
204## Milestones
210## Milestones
205
211
206−
207### Data ETL
212### Data ETL
213+
2082 stars
2142 stars
209The database has been designed and data from both sources is ingested
215The database has been designed and data from both sources is ingested
210(extracted, transformed and loaded) on a regular schedule. Analysis can be
216(extracted, transformed and loaded) on a regular schedule. Analysis can be
211performed at the database layer.
217performed at the database layer.
212
218
213−
214−
215### HTTP API
219### HTTP API
220+
2162 stars
2212 stars
217An HTTP API is written per the above specification and deployed to
222An HTTP API is written per the above specification and deployed to
218`https://api.network.urbit.org`.
223`https://api.network.urbit.org`.
219
224
220−
221−
222### UI Integration
225### UI Integration
226+
2231 stars
2271 stars
224The Network Explorer UI will be a separate proposal, but integration with an
228The Network Explorer UI will be a separate proposal, but integration with an
225interface inevitably surfaces oversights in the original design. An additional
229interface inevitably surfaces oversights in the original design. An additional
226star will be awarded for providing ongoing maintenance as-needed during
230star will be awarded for providing ongoing maintenance as-needed during
227front-end integration.
231front-end integration.
228−
229−
content/grants/open-street-maps-data-importation.md+6−9
@@ -2,7 +2,7 @@
2title = "Open Street Maps Data Importation"
2title = "Open Street Maps Data Importation"
3date = 2020-07-09
3date = 2020-07-09
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -19,9 +19,9 @@ Create a mapping tool which allows Open Street Maps data to be imported into Urb
19
19
20This grant should involve 2 major steps:
20This grant should involve 2 major steps:
21
21
22−1: Create a client which makes it possible for OSM data in multiple formats to be serialized into Urbit and converted into a Hoon data structure.
22+1: Create a client which makes it possible for OSM data in multiple formats to be serialized into Urbit and converted into a Hoon data structure.
23
23
24−2: Create methods by which this data can be stored and queried in Urbit, then exported and rendered by at least two different common Javascript map rendering libraries.
24+2: Create methods by which this data can be stored and queried in Urbit, then exported and rendered by at least two different common Javascript map rendering libraries.
25
25
26Additionally, write a one-page explanation for your design choices in the readme. Also in the readme, write an explanation of you you might expect a user-facing app to take advantage of your backend.
26Additionally, write a one-page explanation for your design choices in the readme. Also in the readme, write an explanation of you you might expect a user-facing app to take advantage of your backend.
27
27
@@ -36,18 +36,15 @@ Additionally, write a one-page explanation for your design choices in the readme
36
36
37- Do not begin work until your request to claim this bounty is accepted.
37- Do not begin work until your request to claim this bounty is accepted.
38- Submit your work as a separate github repo, and email grants@urbit.org.
38- Submit your work as a separate github repo, and email grants@urbit.org.
39−- Storage concerns: The entire OSM dataset is 40GB, so this client should be constructed so as to allow the manipulation of smaller sectors (corresponding to geographic regions) of data at any given time. The Urbit system has a memory + storage limit of 2GB.
39+- Storage concerns: The entire OSM dataset is 40GB, so this client should be constructed so as to allow the manipulation of smaller sectors (corresponding to geographic regions) of data at any given time. The Urbit system has a memory + storage limit of 2GB.
40−- License: Make sure to read the above link carefully and credit OSM for the relevant data on any user-facing interface.
40+- License: Make sure to read the above link carefully and credit OSM for the relevant data on any user-facing interface.
41- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
41- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
42- You have 90 days from the time of approval to complete this bounty.
42- You have 90 days from the time of approval to complete this bounty.
43- Successful completion of this bounty may result in an invitation to complete other API bounties.
43- Successful completion of this bounty may result in an invitation to complete other API bounties.
44
44
45−
46## Milestones
45## Milestones
47
46
48−
49### You are finished
47### You are finished
48+
502 stars
492 stars
51Your work has been approved.
50Your work has been approved.
52−
53−
content/grants/overhaul-the-urbitorg-website.md+7−9
@@ -2,7 +2,7 @@
2title = "Overhaul the urbit.org website"
2title = "Overhaul the urbit.org website"
3date = 2021-02-19
3date = 2021-02-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Design"]
6grant_category = ["Design"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -29,7 +29,7 @@ This bounty is concerned only with the first part.
29
29
30## Phases
30## Phases
31
31
32−We'll break the project into two phases—**design** and **implementation**.
32+We'll break the project into two phases—**design** and **implementation**.
33
33
34### Design
34### Design
35
35
@@ -39,18 +39,18 @@ Reworking urbit.org is a substantial undertaking and requires thoughtful plannin
392. An **information architecture** that maps the flow of content such that the stories can be fulfilled.
392. An **information architecture** that maps the flow of content such that the stories can be fulfilled.
403. A set of **wireframes** that capture the navigational elements and content requirements in terms of the information architecture.
403. A set of **wireframes** that capture the navigational elements and content requirements in terms of the information architecture.
41
41
42−It's expected that the design phase is completed within four weeks: one week for parts (1) and (2), two weeks for part (3), and an extra week for buffer.
42+It's expected that the design phase is completed within four weeks: one week for parts (1) and (2), two weeks for part (3), and an extra week for buffer.
43
43
44### Implementation
44### Implementation
45
45
46The path to implementation is necessarily dependent on the outcomes of the design phase, but we can make the following assumptions:
46The path to implementation is necessarily dependent on the outcomes of the design phase, but we can make the following assumptions:
47
47
48- The implementation should be time-boxed to 3-4 weeks, which includes a week of QA.
48- The implementation should be time-boxed to 3-4 weeks, which includes a week of QA.
49−- The visual design should remain largely consistent with the current site. Modifications are permissible within the bounds of the [indigo](https://github.com/urbit/indigo-react) design system.
49+- The visual design should remain largely consistent with the current site. Modifications are permissible within the bounds of the [indigo](https://github.com/urbit/indigo-react) design system.
50
50
51## Other Requirements
51## Other Requirements
52
52
53−- You will be expected to attend our regular Monday morning design meetings with work prepared for feedback (10AM PT, usually).
53+- You will be expected to attend our regular Monday morning design meetings with work prepared for feedback (10AM PT, usually).
54- Frequent communication with a group of stakeholders on the project
54- Frequent communication with a group of stakeholders on the project
55
55
56## Resources
56## Resources
@@ -60,14 +60,12 @@ The path to implementation is necessarily dependent on the outcomes of the desig
60
60
61## Milestones
61## Milestones
62
62
63−
64### Designs are complete
63### Designs are complete
64+
652 stars
652 stars
66Completion of the contents of the Design section above.
66Completion of the contents of the Design section above.
67
67
68−
69### Implementation is complete
68### Implementation is complete
69+
704 stars
704 stars
71Completion of the contents of the Implementation section above.
71Completion of the contents of the Implementation section above.
72−
73−
content/grants/ragnarok-online-on-urbit.md+5−8
@@ -2,8 +2,8 @@
2title = "Ragnarok Online on Urbit"
2title = "Ragnarok Online on Urbit"
3date = 2019-08-30
3date = 2019-08-30
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Landscape app that supports registering an urbit ID with an RO server, exposing various account management actions and guild / channel chats"
9description = "Landscape app that supports registering an urbit ID with an RO server, exposing various account management actions and guild / channel chats"
@@ -17,7 +17,6 @@ link = ""
17
17
18# Ragnarok Online on Urbit
18# Ragnarok Online on Urbit
19
19
20−
21This is a Landscape / Gall app proposal for registering an urbit ID with an account in an MMORPG, with initial support for Ragnarok Online and exposing various actions like inventory management, friend lists, guild / main chat, and in-game market tools. Most importantly, account state will be persisted on your ship and can be transferred between supported servers.
20This is a Landscape / Gall app proposal for registering an urbit ID with an account in an MMORPG, with initial support for Ragnarok Online and exposing various actions like inventory management, friend lists, guild / main chat, and in-game market tools. Most importantly, account state will be persisted on your ship and can be transferred between supported servers.
22
21
23RO has a large but fragmented private server community. Both the server and game clients are heavily customizable, and there are open source tools that can manipulate the server state through the browser (create accounts, browse in-game player shops, etc).
22RO has a large but fragmented private server community. Both the server and game clients are heavily customizable, and there are open source tools that can manipulate the server state through the browser (create accounts, browse in-game player shops, etc).
@@ -36,19 +35,17 @@ Other potential outcomes:
36
35
37## Milestones
36## Milestones
38
37
38+### Gall app
39
39
40−### Gall app
411 stars
401 stars
42A gall app that handles updates to all linked character states and relevant game state. The data model should be constructed with an eye towards supporting multiple games and permissioning
41A gall app that handles updates to all linked character states and relevant game state. The data model should be constructed with an eye towards supporting multiple games and permissioning
43
42
44−
45### Frontend UI
43### Frontend UI
44+
461 stars
451 stars
47Character and game state display. Should be able to view various server and character stats as well as read chat channels. Character creation and account deletion as well.
46Character and game state display. Should be able to view various server and character stats as well as read chat channels. Character creation and account deletion as well.
48
47
49−
50### Working connection to RO server
48### Working connection to RO server
49+
511 stars
501 stars
52A customized urbit RO server that only accepts @p logins and a documented communication pattern with the gall app.
51A customized urbit RO server that only accepts @p logins and a documented communication pattern with the gall app.
53−
54−
content/grants/search-in-groups.md+6−7
@@ -2,8 +2,8 @@
2title = "Search in groups"
2title = "Search in groups"
3date = 2021-02-25
3date = 2021-02-25
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Implement a basic text search in groups channels"
9description = "Implement a basic text search in groups channels"
@@ -14,7 +14,8 @@ completed = false
14link = ""
14link = ""
15+++
15+++
16
16
17−I saw this post in u-c feature requests channel [~bitbet-bolbel/urbit-community/resource/publish/ship/~bitpyx-dildus/feature-requests/note/170141184504903337445158066480138420224](http://localhost:8080/~landscape/ship/~bitbet-bolbel/urbit-community/resource/publish/ship/~bitpyx-dildus/feature-requests/note/170141184504903337445158066480138420224)
17+I saw this post in u-c feature requests channel [~bitbet-bolbel/urbit-community/resource/publish/ship/~bitpyx-dildus/feature-requests/note/170141184504903337445158066480138420224](http://localhost:8080/~landscape/ship/~bitbet-bolbel/urbit-community/resource/publish/ship/~bitpyx-dildus/feature-requests/note/170141184504903337445158066480138420224)
18+
18> Even the sort of thing that could be thrown together in an afternoon would be 1000x better than nothing.
19> Even the sort of thing that could be thrown together in an afternoon would be 1000x better than nothing.
19
20
20and I likewise thought even a basic search function would be immediately useful
21and I likewise thought even a basic search function would be immediately useful
@@ -28,14 +29,12 @@ There will also be a generator with nearly same functionality but it's stateless
28
29
29## Milestones
30## Milestones
30
31
31−
32### search generator done
32### search generator done
33+
331 stars
341 stars
34↑
35↑
35
36
36−
37### shoe app done
37### shoe app done
38+
381 stars
391 stars
39↑
40↑
40−
41−
content/grants/staff-the-urbit-help-desk-1.md+15−14
@@ -2,7 +2,7 @@
2title = "Staff the Urbit Help Desk (1)"
2title = "Staff the Urbit Help Desk (1)"
3date = 2020-02-19
3date = 2020-02-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,25 +16,28 @@ link = ""
16
16
17### Background
17### Background
18
18
19−Urbit is live. Users frequently need help. Technical issues need to be reported. This feedback process is the primary vector for refining and improving Urbit. This bounty commissions its claimant to observe and attend to these issues presently, as they arise.
19+Urbit is live. Users frequently need help. Technical issues need to be reported. This feedback process is the primary vector for refining and improving Urbit. This bounty commissions its claimant to observe and attend to these issues presently, as they arise.
20
20
21### Bounty Description
21### Bounty Description
22
22
23−The claimant of this bounty will be “staffed” to the three primary Urbit chatrooms: Discord, Urbit-Help on Dopzod, and Urbit.Live’s Telegram group. They are expected to be online at least 4 hours per day to perform the following duties:
23+The claimant of this bounty will be “staffed” to the three primary Urbit chatrooms: Discord, Urbit-Help on Dopzod, and Urbit.Live’s Telegram group. They are expected to be online at least 4 hours per day to perform the following duties:
24+
24−- Help users boot ships
25+- Help users boot ships
25- Recommend relevant resources
26- Recommend relevant resources
26- Troubleshoot errors users encounter using Urbit
27- Troubleshoot errors users encounter using Urbit
27- Observe and document bugs
28- Observe and document bugs
28- File issues to the relevant Github repo
29- File issues to the relevant Github repo
29
30
30−Once per week, staff should send a weekly digest email to support@urbit.org, with a report of key events and hours worked.
31+Once per week, staff should send a weekly digest email to support@urbit.org, with a report of key events and hours worked.
31
32
32−Staff should periodically identify themselves and announce their presence to encourage feedback.
33+Staff should periodically identify themselves and announce their presence to encourage feedback.
33
34
34−The bounty claimant should have competency in the following areas: Booting Urbit in terminal, Troubleshooting, Operating Urbit via the Dojo, Chat CLI, and General Urbit terminology.
35+The bounty claimant should have competency in the following areas: Booting Urbit in terminal, Troubleshooting, Operating Urbit via the Dojo, Chat CLI, and General Urbit terminology.
35
36
36### Resources
37### Resources
38+
37Chatrooms to Monitor:
39Chatrooms to Monitor:
40+
38- [Urbit.live Telegram](https://t.me/UrbitLiveGroup)
41- [Urbit.live Telegram](https://t.me/UrbitLiveGroup)
39- [Urbit Discord](https://discord.gg/Mae2bk7)
42- [Urbit Discord](https://discord.gg/Mae2bk7)
40- `~dopzod/urbit-help`
43- `~dopzod/urbit-help`
@@ -45,17 +48,15 @@ Repos to file issues:
45- [Urbit Issues on Github](https://github.com/urbit/urbit/issues)
48- [Urbit Issues on Github](https://github.com/urbit/urbit/issues)
46
49
47### Contribution Guidelines
50### Contribution Guidelines
48−- Do not begin work until your request to claim this bounty is accepted.
49−- Claimant will be online and responsive in the chatrooms, 4 hours daily, for 30 days
50−- It may be requested that staffers modify their hours to improve coverage of issues.
51−- Estimated work: 2 - 4 hours per day
52
51
52+- Do not begin work until your request to claim this bounty is accepted.
53+- Claimant will be online and responsive in the chatrooms, 4 hours daily, for 30 days
54+- It may be requested that staffers modify their hours to improve coverage of issues.
55+- Estimated work: 2 - 4 hours per day
53
56
54## Milestones
57## Milestones
55
58
56−
57### You have been staffing a help desk for 30 days
59### You have been staffing a help desk for 30 days
60+
581 stars
611 stars
59You have been responsive daily for 30 days.
62You have been responsive daily for 30 days.
60−
61−
content/grants/staff-the-urbit-help-desk-2.md+15−14
@@ -2,7 +2,7 @@
2title = "Staff the Urbit Help Desk (2)"
2title = "Staff the Urbit Help Desk (2)"
3date = 2020-02-21
3date = 2020-02-21
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,25 +16,28 @@ link = ""
16
16
17### Background
17### Background
18
18
19−Urbit is live. Users frequently need help. Technical issues need to be reported. This feedback process is the primary vector for refining and improving Urbit. This bounty commissions its claimant to observe and attend to these issues presently, as they arise.
19+Urbit is live. Users frequently need help. Technical issues need to be reported. This feedback process is the primary vector for refining and improving Urbit. This bounty commissions its claimant to observe and attend to these issues presently, as they arise.
20
20
21### Bounty Description
21### Bounty Description
22
22
23−The claimant of this bounty will be “staffed” to the three primary Urbit chatrooms: Discord, Urbit-Help on Dopzod, and Urbit.Live’s Telegram group. They are expected to be online at least 4 hours per day to perform the following duties:
23+The claimant of this bounty will be “staffed” to the three primary Urbit chatrooms: Discord, Urbit-Help on Dopzod, and Urbit.Live’s Telegram group. They are expected to be online at least 4 hours per day to perform the following duties:
24+
24−- Help users boot ships
25+- Help users boot ships
25- Recommend relevant resources
26- Recommend relevant resources
26- Troubleshoot errors users encounter using Urbit
27- Troubleshoot errors users encounter using Urbit
27- Observe and document bugs
28- Observe and document bugs
28- File issues to the relevant Github repo
29- File issues to the relevant Github repo
29
30
30−Once per week, staff should send a weekly digest email to support@urbit.org, with a report of key events and hours worked.
31+Once per week, staff should send a weekly digest email to support@urbit.org, with a report of key events and hours worked.
31
32
32−Staff should periodically identify themselves and announce their presence to encourage feedback.
33+Staff should periodically identify themselves and announce their presence to encourage feedback.
33
34
34−The bounty claimant should have competency in the following areas: Booting Urbit in terminal, Troubleshooting, Operating Urbit via the Dojo, Chat CLI, and General Urbit terminology.
35+The bounty claimant should have competency in the following areas: Booting Urbit in terminal, Troubleshooting, Operating Urbit via the Dojo, Chat CLI, and General Urbit terminology.
35
36
36### Resources
37### Resources
38+
37Chatrooms to Monitor:
39Chatrooms to Monitor:
40+
38- [Urbit.live Telegram](https://t.me/UrbitLiveGroup)
41- [Urbit.live Telegram](https://t.me/UrbitLiveGroup)
39- [Urbit Discord](https://discord.gg/Mae2bk7)
42- [Urbit Discord](https://discord.gg/Mae2bk7)
40- `~dopzod/urbit-help`
43- `~dopzod/urbit-help`
@@ -45,17 +48,15 @@ Repos to file issues:
45- [Urbit Issues on Github](https://github.com/urbit/urbit/issues)
48- [Urbit Issues on Github](https://github.com/urbit/urbit/issues)
46
49
47### Contribution Guidelines
50### Contribution Guidelines
48−- Do not begin work until your request to claim this bounty is accepted.
49−- Claimant will be online and responsive in the chatrooms, 4 hours daily, for 30 days
50−- It may be requested that staffers modify their hours to improve coverage of issues.
51−- Estimated work: 2 - 4 hours per day
52
51
52+- Do not begin work until your request to claim this bounty is accepted.
53+- Claimant will be online and responsive in the chatrooms, 4 hours daily, for 30 days
54+- It may be requested that staffers modify their hours to improve coverage of issues.
55+- Estimated work: 2 - 4 hours per day
53
56
54## Milestones
57## Milestones
55
58
56−
57### You have been staffing a help desk for 30 days
59### You have been staffing a help desk for 30 days
60+
581 stars
611 stars
59You have been responsive daily for 30 days.
62You have been responsive daily for 30 days.
60−
61−
content/grants/staff-the-urbit-helpdesk-east.md+5−9
@@ -2,7 +2,7 @@
2title = "Staff the Urbit Helpdesk, East"
2title = "Staff the Urbit Helpdesk, East"
3date = 2021-01-25
3date = 2021-01-25
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -23,6 +23,7 @@ Urbit is pretty novel, and newcomers are often confused by the many new concepts
23You will “staff the help desk,” which means watching our [Discord server](https://discord.gg/Mae2bk7) and the Help channel within Urbit Community for support requests. You’re expected to be online for at least **four hours** within the hours of 0000-0800 UTC (4pm - 12am PST), for five days a week over the course of a month.
23You will “staff the help desk,” which means watching our [Discord server](https://discord.gg/Mae2bk7) and the Help channel within Urbit Community for support requests. You’re expected to be online for at least **four hours** within the hours of 0000-0800 UTC (4pm - 12am PST), for five days a week over the course of a month.
24
24
25You’re expected to:
25You’re expected to:
26+
26- Help users boot ships
27- Help users boot ships
27- Recommend relevant resources
28- Recommend relevant resources
28- Troubleshoot errors users encounter using Urbit
29- Troubleshoot errors users encounter using Urbit
@@ -42,19 +43,14 @@ It will help if you identify yourself periodically as a support resource so that
42
43
43### Contribution Guidelines
44### Contribution Guidelines
44
45
45−- Do not begin work until your request to claim this bounty is accepted.
46+- Do not begin work until your request to claim this bounty is accepted.
46−- Claimant will be online and responsive, 4 hours daily, for 30 days
47+- Claimant will be online and responsive, 4 hours daily, for 30 days
47- It may be requested that staffers modify their hours to improve coverage of issues.
48- It may be requested that staffers modify their hours to improve coverage of issues.
48- Estimated work: 2 - 4 hours per day
49- Estimated work: 2 - 4 hours per day
49
50
50−
51−
52−
53## Milestones
51## Milestones
54
52
55−
56### Work Complete
53### Work Complete
54+
571 stars
551 stars
58You've spent the last month helping out newcomers.
56You've spent the last month helping out newcomers.
59−
60−
content/grants/staff-the-urbit-helpdesk-west.md+5−6
@@ -2,7 +2,7 @@
2title = "Staff the Urbit Helpdesk, West"
2title = "Staff the Urbit Helpdesk, West"
3date = 2020-12-03
3date = 2020-12-03
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -23,6 +23,7 @@ Urbit is pretty novel, and newcomers are often confused by the many new concepts
23You will “staff the help desk,” which means watching our [Discord server](https://discord.gg/Mae2bk7) and the Help channel within Urbit Community for support requests. You’re expected to be online for at least **four hours** within the hours of 1600-0000 UTC (8am - 4pm PT), for five days a week over the course of a month.
23You will “staff the help desk,” which means watching our [Discord server](https://discord.gg/Mae2bk7) and the Help channel within Urbit Community for support requests. You’re expected to be online for at least **four hours** within the hours of 1600-0000 UTC (8am - 4pm PT), for five days a week over the course of a month.
24
24
25You’re expected to:
25You’re expected to:
26+
26- Help users boot ships
27- Help users boot ships
27- Recommend relevant resources
28- Recommend relevant resources
28- Troubleshoot errors users encounter using Urbit
29- Troubleshoot errors users encounter using Urbit
@@ -42,16 +43,14 @@ It will help if you identify yourself periodically as a support resource so that
42
43
43### Contribution Guidelines
44### Contribution Guidelines
44
45
45−- Do not begin work until your request to claim this bounty is accepted.
46+- Do not begin work until your request to claim this bounty is accepted.
46−- Claimant will be online and responsive, 4 hours daily, for 30 days
47+- Claimant will be online and responsive, 4 hours daily, for 30 days
47- It may be requested that staffers modify their hours to improve coverage of issues.
48- It may be requested that staffers modify their hours to improve coverage of issues.
48- Estimated work: 2 - 4 hours per day
49- Estimated work: 2 - 4 hours per day
49
50
50## Milestones
51## Milestones
51
52
52−
53### Work Complete
53### Work Complete
54+
541 stars
551 stars
55You've spent the last month helping out newcomers.
56You've spent the last month helping out newcomers.
56−
57−
content/grants/the-complete-guide-to-gall-and-landscape.md+32−26
@@ -2,7 +2,7 @@
2title = "The Complete Guide to Gall and Landscape"
2title = "The Complete Guide to Gall and Landscape"
3date = 2020-06-22
3date = 2020-06-22
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -17,61 +17,67 @@ link = ""
17# Gall Guide Deliverables
17# Gall Guide Deliverables
18
18
19## PoC and Prior Work
19## PoC and Prior Work
20+
20The first 5 chapters of the course are complete in late draft form and can be found [here](https://github.com/timlucmiptev/gall-guide/blob/master/guide-docs/overview.md)
21The first 5 chapters of the course are complete in late draft form and can be found [here](https://github.com/timlucmiptev/gall-guide/blob/master/guide-docs/overview.md)
21
22
22My ["Nock for Everyday Coders" Guide](https://blog.timlucmiptev.space/part1.html) was the result of my exploring Nock on my own, and is probably the most detailed Nock reference available currently.
23My ["Nock for Everyday Coders" Guide](https://blog.timlucmiptev.space/part1.html) was the result of my exploring Nock on my own, and is probably the most detailed Nock reference available currently.
23
24
24## Overview and Goals
25## Overview and Goals
25
26
26−Develop a Hooniversity module for teaching Gall and creating and modifying Gall applications.
27+Develop a Hooniversity module for teaching Gall and creating and modifying Gall applications.
27
28
28−The final product will contain all lessons (which incrementally build on each other), example code and reference items needed to transfer this knowledge with no gaps or unanswered questions.
29+The final product will contain all lessons (which incrementally build on each other), example code and reference items needed to transfer this knowledge with no gaps or unanswered questions.
29
30
30The student who completes this course will not only be able to author their own Landscape app, but the learning program associated with these materials will mandate that accomplishment in order for a student to be considered to have passed Hooniversity Gall training.
31The student who completes this course will not only be able to author their own Landscape app, but the learning program associated with these materials will mandate that accomplishment in order for a student to be considered to have passed Hooniversity Gall training.
31
32
32## Table of Contents
33## Table of Contents
33
34
34### Basic Backend
35### Basic Backend
36+
35−* Workflow Setup(2 hours)
37+- Workflow Setup(2 hours)
36−* The 10 Arms of Gaal: App Structure(4 hours)
38+- The 10 Arms of Gaal: App Structure(4 hours)
37−* App Lifecycle and State(5 hours)
39+- App Lifecycle and State(5 hours)
38−* Importing Code and Static Resources(5 hours)
40+- Importing Code and Static Resources(5 hours)
39−* Poke and Watch(6 hours)
41+- Poke and Watch(6 hours)
40
42
41(From this point onward in the course, all lessons will be in the context of building up a full-featured application)
43(From this point onward in the course, all lessons will be in the context of building up a full-featured application)
44+
42−* Communicating with the Outside World (HTTP)(2 hours)
45+- Communicating with the Outside World (HTTP)(2 hours)
43−* Setting up Data Structures(3 hours)
46+- Setting up Data Structures(3 hours)
44
47
45### Frontend
48### Frontend
49+
46−* Landscape: GUI for Gall](3 hours)
50+- Landscape: GUI for Gall](3 hours)
47−* Walkthrough: Landscape Skeleton](4 hours)
51+- Walkthrough: Landscape Skeleton](4 hours)
48−* Communicating with Landscape (Subscriptions)](3 hours)
52+- Communicating with Landscape (Subscriptions)](3 hours)
49−* Everything about React for Landscape](6 hours)
53+- Everything about React for Landscape](6 hours)
50
54
51### More Backend
55### More Backend
56+
52−* Calling the OS (Arvo)](3 hours)
57+- Calling the OS (Arvo)](3 hours)
53−* Communicating with Other Ships](3 hours)
58+- Communicating with Other Ships](3 hours)
54−* Store/Hook/View](4 hours)
59+- Store/Hook/View](4 hours)
55
60
56### Appendix
61### Appendix
62+
57−* Troubleshooting & FAQ](1 hour)
63+- Troubleshooting & FAQ](1 hour)
58−* Types Used in Gall Apps](2 hours)
64+- Types Used in Gall Apps](2 hours)
59−* Common Hoon Idioms Used in Gall](1 hour)
65+- Common Hoon Idioms Used in Gall](1 hour)
60
66
61## Video Materials
67## Video Materials
62−* 5 Lessons of 2-3 hours in length each, taught on a weekly basis to help students through the material who are more interactive learners.
63
68
64−## Milestones
69+- 5 Lessons of 2-3 hours in length each, taught on a weekly basis to help students through the material who are more interactive learners.
65
70
71+## Milestones
66
72
67### Written Guide
73### Written Guide
74+
681 stars
751 stars
69Full written guide (table of contents in proposal) posted online.
76Full written guide (table of contents in proposal) posted online.
70
77
71−
72### Videos Courses & Full Sample Application
78### Videos Courses & Full Sample Application
79+
731 stars
801 stars
74−* Videos made for the course
75−* Full sample application finished and polished with extensive commenting, integrated into the lessons
76
81
77−
82+- Videos made for the course
83+- Full sample application finished and polished with extensive commenting, integrated into the lessons
content/grants/thread-documentation.md+34−26
@@ -2,7 +2,7 @@
2title = "Thread Documentation"
2title = "Thread Documentation"
3date = 2021-02-18
3date = 2021-02-18
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -15,61 +15,69 @@ link = ""
15+++
15+++
16
16
17# Thread Documentation Bounty
17# Thread Documentation Bounty
18+
18−The [official thread documentation](https://urbit.org/docs/tutorials/arvo/gall/#threads) is accurate and helpful, but it's a very thin combination of explainer (production code), how-to, and reference. It's a nice starting point, but it's not sufficient to let a typical Urbit autodidact enthusiast get fully comfortable with threads. As a result, they are often an uncomfortable/unused part of the Urbit system, even though they are useful and robust.
19+The [official thread documentation](https://urbit.org/docs/tutorials/arvo/gall/#threads) is accurate and helpful, but it's a very thin combination of explainer (production code), how-to, and reference. It's a nice starting point, but it's not sufficient to let a typical Urbit autodidact enthusiast get fully comfortable with threads. As a result, they are often an uncomfortable/unused part of the Urbit system, even though they are useful and robust.
19
20
20Fortunately, the amount of implicit knowledge needed to build a strong mental model of threads and begin using them in Urbit applications. By expanding the explainer/tutorial/howto/reference and delineating them more clearly, we can expose this part of Urbit to devs.
21Fortunately, the amount of implicit knowledge needed to build a strong mental model of threads and begin using them in Urbit applications. By expanding the explainer/tutorial/howto/reference and delineating them more clearly, we can expose this part of Urbit to devs.
21
22
22This bounty is detailed for clarity, but the individual sections shouldn't take too long to write and don't need to be extremely long.
23This bounty is detailed for clarity, but the individual sections shouldn't take too long to write and don't need to be extremely long.
23
24
24## scope
25## scope
26+
25−* `ted` directory
27+- `ted` directory
26−* `spider` usage in Gall
28+- `spider` usage in Gall
27−* calling from the dojo with `-`
29+- calling from the dojo with `-`
28−* the `bind`/`;<` chaining model
30+- the `bind`/`;<` chaining model
29−* how `spider` manages its threads
31+- how `spider` manages its threads
30
32
31### not in scope
33### not in scope
34+
32−* aqua
35+- aqua
33
36
34## sections
37## sections
38+
35### tutorial
39### tutorial
40+
36−* Walk through building a thread that composes multiple threads
41+- Walk through building a thread that composes multiple threads
37−* Will be all from the Dojo using `-`, no Gall
42+- Will be all from the Dojo using `-`, no Gall
38−* Should include the following calls
43+- Should include the following calls
39 - setting a timeout
44 - setting a timeout
40 - pass cards to Arvo/Gall
45 - pass cards to Arvo/Gall
41 - HTTP call
46 - HTTP call
42 - read a file from Clay
47 - read a file from Clay
43
48
44### explainer
49### explainer
50+
45−* use `lib/strand.hoon` code to explain `bind` and the `%wait` etc. objects
51+- use `lib/strand.hoon` code to explain `bind` and the `%wait` etc. objects
46−* explain how all threads MUST take `strand-input` as an argument
52+- explain how all threads MUST take `strand-input` as an argument
47−* explain how `spider` sends `strand-input` to threads and how it determines which threads to send to.
53+- explain how `spider` sends `strand-input` to threads and how it determines which threads to send to.
48
54
49### how-to
55### how-to
56+
50−* Call out to outside web services, chaining calls in the manner of promises/async in other languages
57+- Call out to outside web services, chaining calls in the manner of promises/async in other languages
51−* make system calls to Arvo
58+- make system calls to Arvo
52−* receive/handle responses from Arvo
59+- receive/handle responses from Arvo
53−* use `spider` to integrate with Gall
60+- use `spider` to integrate with Gall
54−* use `retry` and `backoff` for calls that may fail
61+- use `retry` and `backoff` for calls that may fail
55
62
56### reference
63### reference
64+
57This can be thin for now, because most necessary thread functions are in `lib/strandio.hoon`, and we don't need to just cut-and-paste that. Just make a quick list of functionality in `lib/strandio` or edit the one in the current thread docs
65This can be thin for now, because most necessary thread functions are in `lib/strandio.hoon`, and we don't need to just cut-and-paste that. Just make a quick list of functionality in `lib/strandio` or edit the one in the current thread docs
58
66
59## user stories
67## user stories
68+
60−* as a learner with Hoon knowledge, I will be able to build a mental model of how `spider` manages threads, sends input to them, and chains them together. `bind` and `;<` will be demystified and explained in very simple, mechanical ways.
69+- as a learner with Hoon knowledge, I will be able to build a mental model of how `spider` manages threads, sends input to them, and chains them together. `bind` and `;<` will be demystified and explained in very simple, mechanical ways.
61−* as a Hoon learner with prior monad experience, I should be able to get a feel for the similarities of IO monads and Urbit threads, and develop strong intuitions for the more mechanical nature of Urbit ones.
70+- as a Hoon learner with prior monad experience, I should be able to get a feel for the similarities of IO monads and Urbit threads, and develop strong intuitions for the more mechanical nature of Urbit ones.
62−* as a moderately motivated autodidact with Hoon knowledge I should be able to start writing `ted` threads for Dojo usage immediately, with no other outside materials or informal help needed
71+- as a moderately motivated autodidact with Hoon knowledge I should be able to start writing `ted` threads for Dojo usage immediately, with no other outside materials or informal help needed
63−* as a Gall app developer or maintainer, I should be able to integrate threads into my Gall apps
72+- as a Gall app developer or maintainer, I should be able to integrate threads into my Gall apps
64
73
65## resources available
74## resources available
75+
66`~timluc-miptev` will be available to whomever does the bounty to explain things, work through any tough spots, and connect to useful people if necessary.
76`~timluc-miptev` will be available to whomever does the bounty to explain things, work through any tough spots, and connect to useful people if necessary.
67
77
68## Milestones
78## Milestones
69
79
70−
71### Complete the bounty
80### Complete the bounty
81+
721 stars
821 stars
73Everything in "sections" is done.
83Everything in "sections" is done.
74−
75−
content/grants/tor-nodes-relay-search-tile.md+5−9
@@ -2,8 +2,8 @@
2title = "Tor Nodes Relay Search Tile"
2title = "Tor Nodes Relay Search Tile"
3date = 2020-03-31
3date = 2020-03-31
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "An Urbit-native Tor search-tool."
9description = "An Urbit-native Tor search-tool."
@@ -19,7 +19,7 @@ link = ""
19
19
20Create a backend for importing Tor network node relay search data into Urbit, and design a Landscape tile which will serve as a functional search tool for Tor relay node information inside Urbit.
20Create a backend for importing Tor network node relay search data into Urbit, and design a Landscape tile which will serve as a functional search tool for Tor relay node information inside Urbit.
21
21
22−We would like to create an Urbit-native Tor node relay search tool which replicates the same functions as the search tool linked below.
22+We would like to create an Urbit-native Tor node relay search tool which replicates the same functions as the search tool linked below.
23
23
24### Resources
24### Resources
25
25
@@ -33,15 +33,11 @@ We would like to create an Urbit-native Tor node relay search tool which replica
33- Submit your work as a pull request to the [urbit/urbit](https://github.com/urbit/urbit) repo
33- Submit your work as a pull request to the [urbit/urbit](https://github.com/urbit/urbit) repo
34- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
34- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
35- You have 90 days from the time of approval to complete this bounty.
35- You have 90 days from the time of approval to complete this bounty.
36−- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
36+- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
37−
38−
39
37
40## Milestones
38## Milestones
41
39
42−
43### Your PR is merged
40### Your PR is merged
41+
443 stars
423 stars
45Your code is accepted and merged.
43Your code is accepted and merged.
46−
47−
content/grants/translate-key-parts-of-urbitorg-into-german.md+2−4
@@ -2,7 +2,7 @@
2title = "Translate key parts of Urbit.org into German"
2title = "Translate key parts of Urbit.org into German"
3date = 2021-01-19
3date = 2021-01-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -22,9 +22,7 @@ I am a native German speaker with a long history of speaking and writing English
22
22
23## Milestones
23## Milestones
24
24
25−
26### Translation of Key Website Content
25### Translation of Key Website Content
26+
271 stars
271 stars
28Introduction, Urbit OS, Urbit ID, Interface, Roadmap: OS1-> OS N, People + History, and Install + Setup
28Introduction, Urbit OS, Urbit ID, Interface, Roadmap: OS1-> OS N, People + History, and Install + Setup
29−
30−
content/grants/translate-key-parts-of-urbitorg-into-korean.md+2−5
@@ -2,7 +2,7 @@
2title = "Translate key parts of Urbit.org into Korean"
2title = "Translate key parts of Urbit.org into Korean"
3date = 2021-01-30
3date = 2021-01-30
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -20,12 +20,9 @@ I am a native English speaker with a high level of competence in written Korean.
20
20
21At the current pace we are translating a little under 1000 words per week. The total amount to be translated is a little over 9000 words.
21At the current pace we are translating a little under 1000 words per week. The total amount to be translated is a little over 9000 words.
22
22
23−
24## Milestones
23## Milestones
25
24
26−
27### Translation of Key Website Content
25### Translation of Key Website Content
26+
281 stars
271 stars
29Introduction, Urbit OS, Urbit ID, Interface, Roadmap: OS1-> OS N, People + History, and Install + Setup
28Introduction, Urbit OS, Urbit ID, Interface, Roadmap: OS1-> OS N, People + History, and Install + Setup
30−
31−
content/grants/translate-key-parts-of-urbitorg-into-norwegian.md+2−4
@@ -2,7 +2,7 @@
2title = "Translate key parts of Urbit.org into Norwegian"
2title = "Translate key parts of Urbit.org into Norwegian"
3date = 2021-04-07
3date = 2021-04-07
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -24,9 +24,7 @@ In addition to contributing with my translation work, I can also contribute to t
24
24
25## Milestones
25## Milestones
26
26
27−
28### Translation of key site content
27### Translation of key site content
28+
291 stars
291 stars
30Introduction, Urbit OS, Urbit ID, Interface, Roadmap: OS1-> OS N, People + History, and Install + Setup
30Introduction, Urbit OS, Urbit ID, Interface, Roadmap: OS1-> OS N, People + History, and Install + Setup
31−
32−
content/grants/translate-key-parts-of-urbitorg-into-spanish.md+2−4
@@ -2,7 +2,7 @@
2title = "Translate key parts of Urbit.org into Spanish"
2title = "Translate key parts of Urbit.org into Spanish"
3date = 2021-03-20
3date = 2021-03-20
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -22,9 +22,7 @@ I am a fluent speaker with 20+ years of experience with the language and have li
22
22
23## Milestones
23## Milestones
24
24
25−
26### Translation of key site content
25### Translation of key site content
26+
271 stars
271 stars
28Introduction, Urbit OS, Urbit ID, Interface, Roadmap: OS1-> OS N, People + History, and Install + Setup
28Introduction, Urbit OS, Urbit ID, Interface, Roadmap: OS1-> OS N, People + History, and Install + Setup
29−
30−
content/grants/try-urbit-website.md+5−7
@@ -2,8 +2,8 @@
2title = "Try Urbit Website"
2title = "Try Urbit Website"
3date = 2021-02-14
3date = 2021-02-14
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A website where prospective Martians can experience the Landscape interface without any technical chops."
9description = "A website where prospective Martians can experience the Landscape interface without any technical chops."
@@ -14,19 +14,17 @@ completed = false
14link = ""
14link = ""
15+++
15+++
16
16
17−Landing page of website collects minimal information from visitor: Name, email, optional opt-in to foundation newsletter. They are then redirected to a live Landscape interface to "kick the tires" on Urbit as a comet. There will be instruction about how the interface works, what activities to do, etc.
17+Landing page of website collects minimal information from visitor: Name, email, optional opt-in to foundation newsletter. They are then redirected to a live Landscape interface to "kick the tires" on Urbit as a comet. There will be instruction about how the interface works, what activities to do, etc.
18
18
19The server will run a script that "pre-mines" comets to create a pool of IDs and "+code" secrets. It will monitor activity to ensure enough comets are mined to keep up with demand.
19The server will run a script that "pre-mines" comets to create a pool of IDs and "+code" secrets. It will monitor activity to ensure enough comets are mined to keep up with demand.
20
20
21−The server will also maintain a database of users, status, comet ID, process ID and timestamp when assigned to user. After a predetermined time (1 day?), the server will send an email asking if the user still wants to keep their comet, then stops the process if they reply no or don't reply after some time.
21+The server will also maintain a database of users, status, comet ID, process ID and timestamp when assigned to user. After a predetermined time (1 day?), the server will send an email asking if the user still wants to keep their comet, then stops the process if they reply no or don't reply after some time.
22
22
23The website will have an admin interface with performance stats. It will also allow admins to set up email alerts on usage, processes, comet pool, etc.
23The website will have an admin interface with performance stats. It will also allow admins to set up email alerts on usage, processes, comet pool, etc.
24
24
25## Milestones
25## Milestones
26
26
27−
28### Project complete
27### Project complete
28+
292 stars
292 stars
30Website and sever side scripts complete and deployed.
30Website and sever side scripts complete and deployed.
31−
32−
content/grants/typescript-airlock-library.md+3−6
@@ -2,7 +2,7 @@
2title = "Typescript Airlock Library"
2title = "Typescript Airlock Library"
3date = 2020-06-26
3date = 2020-06-26
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -14,7 +14,7 @@ completed = true
14link = ""
14link = ""
15+++
15+++
16
16
17−Create an Airlock library for the Typescript programming language. Airlock is the set of HTTP APIs for communicating with an Urbit. This bounty will involve creating a Typescript library wrapper for the server side event and HTTP API.
17+Create an Airlock library for the Typescript programming language. Airlock is the set of HTTP APIs for communicating with an Urbit. This bounty will involve creating a Typescript library wrapper for the server side event and HTTP API.
18
18
19Additionally, write a one-page explanation for the design choices for this library in the readme. If you have ideas for what Urbit applications would be useful for this library, please also include those suggestions in the readme.
19Additionally, write a one-page explanation for the design choices for this library in the readme. If you have ideas for what Urbit applications would be useful for this library, please also include those suggestions in the readme.
20
20
@@ -24,7 +24,6 @@ Additionally, write a one-page explanation for the design choices for this libra
24- https://github.com/baudtack/urlock-py
24- https://github.com/baudtack/urlock-py
25- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
25- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
26
26
27−
28### Contribution Guidelines:
27### Contribution Guidelines:
29
28
30- Do not begin work until your request to claim this bounty is accepted.
29- Do not begin work until your request to claim this bounty is accepted.
@@ -36,9 +35,7 @@ Additionally, write a one-page explanation for the design choices for this libra
36
35
37## Milestones
36## Milestones
38
37
39−
40### Your work is finished
38### Your work is finished
39+
413 stars
403 stars
42You have completed your work and pushed it to a Github repo.
41You have completed your work and pushed it to a Github repo.
43−
44−
content/grants/ua-collaborative-text-editor.md+9−7
@@ -1,9 +1,9 @@
1+++
1+++
2−title = "Apprenticeship: Collaborative text editor and annotator"
2+title = "Collaborative text editor and annotator"
3date = 2021-05-27
3date = 2021-05-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["apprenticeships"]
5+grant_type = ["Apprenticeship"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A line-based editor for looking at text and code."
9description = "A line-based editor for looking at text and code."
@@ -14,14 +14,16 @@ completed = false
14work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0019&prefill_Grant+Name=Collaborative%20text%20editor%20and%20annotator"
14work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0019&prefill_Grant+Name=Collaborative%20text%20editor%20and%20annotator"
15+++
15+++
16
16
17−A line-based editor for looking at text and code. Can be organized by projects. Allows multiple people to edit, but can use locking for now.
17+A line-based editor for looking at text and code. Can be organized by projects. Allows multiple people to edit, but can use locking for now.
18
18
19Could store edits as diffs. Graph-store is probably fine for this, but a native storage format could work as well and would be good to think through tradeoffs. Interesting extensions would be things like line annotations.
19Could store edits as diffs. Graph-store is probably fine for this, but a native storage format could work as well and would be good to think through tradeoffs. Interesting extensions would be things like line annotations.
20
20
21This project is a good introduction to social apps in Urbit, and could become the framework for a larger product if the apprenticeship prototype works.
21This project is a good introduction to social apps in Urbit, and could become the framework for a larger product if the apprenticeship prototype works.
22
22
23### User Stories
23### User Stories
24+
24As a user I can:
25As a user I can:
26+
25−* create projects
27+- create projects
26−* create text files within those projects
28+- create text files within those projects
27−* invite other users to my project, with varying permissions
29+- invite other users to my project, with varying permissions
content/grants/ua-filesharer.md+12−10
@@ -1,9 +1,9 @@
1+++
1+++
2−title = "Apprenticeship: Filesharer"
2+title = "Filesharer"
3date = 2021-05-27
3date = 2021-05-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["apprenticeships"]
5+grant_type = ["Apprenticeship"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "An application that allows peers to upload files to managed storage, either on or off Urbit, and share files with each other."
9description = "An application that allows peers to upload files to managed storage, either on or off Urbit, and share files with each other."
@@ -14,13 +14,15 @@ completed = false
14work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0022&prefill_Grant+Name=Filesharer"
14work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0022&prefill_Grant+Name=Filesharer"
15+++
15+++
16
16
17−An application that allows peers to upload files to managed storage, either on or off Urbit, and share files with each other. Can also add direct file-sharing via something like WebRTC in the future when that's ready.
17+An application that allows peers to upload files to managed storage, either on or off Urbit, and share files with each other. Can also add direct file-sharing via something like WebRTC in the future when that's ready.
18
18
19### User Stories
19### User Stories
20+
20As a user, I can:
21As a user, I can:
22+
21−* add custom marks to store new filetypes in Urbit
23+- add custom marks to store new filetypes in Urbit
22−* choose a fileserver to connect to with LFS or S3 for larger binaries
24+- choose a fileserver to connect to with LFS or S3 for larger binaries
23−* add files to my system, with metadata
25+- add files to my system, with metadata
24−* specify the users and groups that have access to my files
26+- specify the users and groups that have access to my files
25−* view the files I have access to on other ships
27+- view the files I have access to on other ships
26−* download files to my local machine
28+- download files to my local machine
content/grants/ua-heads-up-poker.md+13−10
@@ -1,9 +1,9 @@
1+++
1+++
2−title = "Apprenticeship: Heads-up poker"
2+title = "Heads-up poker"
3date = 2021-05-27
3date = 2021-05-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["apprenticeships"]
5+grant_type = ["Apprenticeship"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A fun client app that would be a good way to get acquainted with Urbit's networking and p2p abilities."
9description = "A fun client app that would be a good way to get acquainted with Urbit's networking and p2p abilities."
@@ -16,15 +16,18 @@ work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B00
16
16
17A fun client app that would be a good way to get acquainted with Urbit's networking and p2p abilities. While it would be possible to create a fully decentralized version that uses [mental poker](https://en.wikipedia.org/wiki/Mental_poker) [algorithms](https://github.com/kripod/mental-poker) to make the game fully p2p, it is probably more tractable initially to implement the game with a centralized server.
17A fun client app that would be a good way to get acquainted with Urbit's networking and p2p abilities. While it would be possible to create a fully decentralized version that uses [mental poker](https://en.wikipedia.org/wiki/Mental_poker) [algorithms](https://github.com/kripod/mental-poker) to make the game fully p2p, it is probably more tractable initially to implement the game with a centralized server.
18
18
19−The game can be implemented such that the central server only handles queries about current deck state, and so could be swapped out for a solution with no trusted third party at a later time. Everything else can be handled player-side, including signing attestations of game state at different points.
19+The game can be implemented such that the central server only handles queries about current deck state, and so could be swapped out for a solution with no trusted third party at a later time. Everything else can be handled player-side, including signing attestations of game state at different points.
20
20
21### User Stories
21### User Stories
22+
22As a gameserver admin I can:
23As a gameserver admin I can:
24+
23−* set up a server to handle shuffling/dealing
25+- set up a server to handle shuffling/dealing
24−* take API calls from players who want to initiate a game.
26+- take API calls from players who want to initiate a game.
25
27
26As a player, I can:
28As a player, I can:
29+
27−* connect to another player with the app to initiate a game
30+- connect to another player with the app to initiate a game
28−* specify which gameserver I trust to handle card shuffling/dealing
31+- specify which gameserver I trust to handle card shuffling/dealing
29−* play iterated hands of poker
32+- play iterated hands of poker
30−* update a game state that is either tournament-based (first to win all the chips) or cash-based (continually updating stacks of chips on each side, possibly with injections of money along the way)
33+- update a game state that is either tournament-based (first to win all the chips) or cash-based (continually updating stacks of chips on each side, possibly with injections of money along the way)
content/grants/ua-invoice-system.md+12−9
@@ -1,9 +1,9 @@
1+++
1+++
2−title = "Apprenticeship: Invoice system"
2+title = "Invoice system"
3date = 2021-05-27
3date = 2021-05-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["apprenticeships"]
5+grant_type = ["Apprenticeship"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A system to request and record payments made and received."
9description = "A system to request and record payments made and received."
@@ -19,12 +19,15 @@ A system to request and record payments made and received. Currently, Urbit ship
19This invoice system will be needed in Urbit at some point, and so this project has potential to be extended as a grants project in the future if an initial version works well.
19This invoice system will be needed in Urbit at some point, and so this project has potential to be extended as a grants project in the future if an initial version works well.
20
20
21### User Stories
21### User Stories
22+
22As a user, I can:
23As a user, I can:
24+
23−* specify on-Urbit payment methods from which I will make or receive payments
25+- specify on-Urbit payment methods from which I will make or receive payments
24−* request a specific payment amount from another user, specifying the method(s) that can be used for payment
26+- request a specific payment amount from another user, specifying the method(s) that can be used for payment
25−* tell a user that you've made a payment, with reference to some receipt that they can verify.
27+- tell a user that you've made a payment, with reference to some receipt that they can verify.
26−* receive payments with app and time metadata
28+- receive payments with app and time metadata
27
29
28As another application on a user's Urbit I can:
30As another application on a user's Urbit I can:
31+
29−* generate invoices to be sent to other users
32+- generate invoices to be sent to other users
30−* query the invoice store to see which payments have been made for me
33+- query the invoice store to see which payments have been made for me
content/grants/ua-marketplace.md+3−5
@@ -1,9 +1,9 @@
1+++
1+++
2−title = "Apprenticeship: Marketplace"
2+title = "Marketplace"
3date = 2021-05-27
3date = 2021-05-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["apprenticeships"]
5+grant_type = ["Apprenticeship"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A marketplace in which users can post items for sale and browse goods for sale by other users."
9description = "A marketplace in which users can post items for sale and browse goods for sale by other users."
@@ -20,7 +20,6 @@ The most likely architecture has users hosting their items, with aggregator-type
20
20
21Simple versions of this can be implemented to learn userspace programming, and a particular good design could become its own product.
21Simple versions of this can be implemented to learn userspace programming, and a particular good design could become its own product.
22
22
23−
24## User Stories
23## User Stories
25
24
26As a user I can:
25As a user I can:
@@ -31,4 +30,3 @@ As a user I can:
31- buy products
30- buy products
32- sell products
31- sell products
33- have a 3rd party confirm when a sale is complete
32- have a 3rd party confirm when a sale is complete
34−
content/grants/ucal-google-and-outlook-integration.md+24−26
@@ -2,8 +2,8 @@
2title = "ucal Google and Outlook Integration"
2title = "ucal Google and Outlook Integration"
3date = 2021-05-13
3date = 2021-05-13
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Extend the Urbit Calendar (ucal) to integrate with other calendaring systems."
9description = "Extend the Urbit Calendar (ucal) to integrate with other calendaring systems."
@@ -22,9 +22,9 @@ Tools like the iPhone Calendar app handle this by syncing from and to those cale
22
22
23This is a project intended primarily for developer use. Once it is completed, it will:
23This is a project intended primarily for developer use. Once it is completed, it will:
24
24
25− - unlock further development of ucal for end users
25+- unlock further development of ucal for end users
26− - allow use of Urbit ucal as a single source of truth to manage a user's schedule, inside and outside of Urbit
26+- allow use of Urbit ucal as a single source of truth to manage a user's schedule, inside and outside of Urbit
27− - enable future integration with WebRTC for native Urbit video calls and ephemeral chats
27+- enable future integration with WebRTC for native Urbit video calls and ephemeral chats
28
28
29### End Product
29### End Product
30
30
@@ -34,22 +34,22 @@ The step of "pushing" events to Google, Outlook and other ucal users should be i
34
34
35todo: find out which files the below goes into and where the ICS type is.
35todo: find out which files the below goes into and where the ICS type is.
36
36
37− - mar
37+- mar
38 -- modify the grow arm to take an ICS Hoon type and convert to a valid ICS calendar file
38 -- modify the grow arm to take an ICS Hoon type and convert to a valid ICS calendar file
39− - lib
39+- lib
40 -- add a converter from ICS to
40 -- add a converter from ICS to
41− - ted
41+- ted
42 -- take a user's authentication info
42 -- take a user's authentication info
43 -- pull Google or Outlook ICS file
43 -- pull Google or Outlook ICS file
44 -- convert into Hoon format
44 -- convert into Hoon format
45 -- push Hoon calendar events to Google or Outlook
45 -- push Hoon calendar events to Google or Outlook
46 -- push calendar events to other ucal users
46 -- push calendar events to other ucal users
47− - tests
47+- tests
48 -- unit tests of outside ICS files parsing into Hoon format
48 -- unit tests of outside ICS files parsing into Hoon format
49 -- unit tests of Hoon calendar structures into ICS
49 -- unit tests of Hoon calendar structures into ICS
50 -- unit test producing "cards" representing calendar event updates
50 -- unit test producing "cards" representing calendar event updates
51 -- thread testing of syncing
51 -- thread testing of syncing
52− - possible external code
52+- possible external code
53 -- handle situation when extra auth flows are needed with Google/MS.
53 -- handle situation when extra auth flows are needed with Google/MS.
54 -- could require a webpage to be opened to generate an OAuth code or similar
54 -- could require a webpage to be opened to generate an OAuth code or similar
55
55
@@ -59,26 +59,24 @@ This code will not need to be merged into Urbit core.
59
59
60As a developer, I want to
60As a developer, I want to
61
61
62− - input credentials for a Google or Outlook calendar
62+- input credentials for a Google or Outlook calendar
63− - retrieve ICS files associated with those credentials
63+- retrieve ICS files associated with those credentials
64− - create/modify events
64+- create/modify events
65− - push out created/modified events as updates to ucal or external users
65+- push out created/modified events as updates to ucal or external users
66
66
67### Resources and Workflow
67### Resources and Workflow
68+
68− - Improvements will be PRs to the https://github.com/taalhavras/ucal/ project
69+- Improvements will be PRs to the https://github.com/taalhavras/ucal/ project
69− - Contributor will check in weekly with a Foundation director
70+- Contributor will check in weekly with a Foundation director
70− - Current ucal contributors
71+- Current ucal contributors
71− - Example article on pulling ICS files from those services: https://www.digitaltrends.com/computing/how-to-sync-outlook-calendar-with-google-calendar/
72+- Example article on pulling ICS files from those services: https://www.digitaltrends.com/computing/how-to-sync-outlook-calendar-with-google-calendar/
72
73
73### Milestones
74### Milestones
74
75
75−1) Data conversion, sync and calendar updates
76+1. Data conversion, sync and calendar updates
76 Estimate: 21 days - a month | Reward: 2 Stars
77 Estimate: 21 days - a month | Reward: 2 Stars
77
78
78− - handle credential imput and auth flows
79+ - handle credential imput and auth flows
79− - handle syncing
80+ - handle syncing
80− - push updates to Google/Outlook calendars from CLI
81+ - push updates to Google/Outlook calendars from CLI
81− - push updates to Urbit Calendar
82+ - push updates to Urbit Calendar
82−
83−
84−
content/grants/udon-syntax-highlighter.md+6−8
@@ -2,7 +2,7 @@
2title = "Udon syntax highlighter"
2title = "Udon syntax highlighter"
3date = 2019-07-19
3date = 2019-07-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Dev Tool"]
6grant_category = ["Dev Tool"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -25,19 +25,17 @@ Write a CodeMirror language-mode file that results in correct syntax highlightin
25
25
26#### Resources
26#### Resources
27
27
28−* Read the [Udon guide](https://urbit.org/docs/using/sail-and-udon/)
28+- Read the [Udon guide](https://urbit.org/docs/using/sail-and-udon/)
29−* Familiarize yourself with the Udon parser under the `+cram` arm, at lines 15,310 through 15,538 in `hoon.hoon`.
29+- Familiarize yourself with the Udon parser under the `+cram` arm, at lines 15,310 through 15,538 in `hoon.hoon`.
30−* Familiarize yourself with the Udon compiler in the `cram.hoon` file under `/lib`.
30+- Familiarize yourself with the Udon compiler in the `cram.hoon` file under `/lib`.
31
31
32#### Contribution Guidelines
32#### Contribution Guidelines
33
33
34−* Your submission should come in the form of a single JavaScript file. Email the submission to grants@urbit.org
34+- Your submission should come in the form of a single JavaScript file. Email the submission to grants@urbit.org
35
35
36## Milestones
36## Milestones
37
37
38−
39### The highlighter is complete
38### The highlighter is complete
39+
401 stars
401 stars
41The highlighter has been finished and tested, and the language-mode file is finished.
41The highlighter has been finished and tested, and the language-mode file is finished.
42−
43−
content/grants/unit-tests-for-json-parsing.md+9−11
@@ -2,7 +2,7 @@
2title = "Unit tests for JSON parsing"
2title = "Unit tests for JSON parsing"
3date = 2019-11-15
3date = 2019-11-15
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -28,22 +28,20 @@ Save the test files in the `/tests/sys/hoon` directory in Arvo. Use the same fra
28
28
29#### Resources
29#### Resources
30
30
31−* Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
31+- Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
32−* [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
32+- [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
33
33
34#### Contribution Guidelines
34#### Contribution Guidelines
35
35
36−* You have 45 days from the time of approval to complete this bounty.
36+- You have 45 days from the time of approval to complete this bounty.
37−* Do not begin work until your request to claim this bounty is accepted.
37+- Do not begin work until your request to claim this bounty is accepted.
38−* Your tests should be written as two files: one file for `+format` functions and one file for `+html` functions.
38+- Your tests should be written as two files: one file for `+format` functions and one file for `+html` functions.
39−* Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
39+- Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
40−* Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
40+- Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
41
41
42## Milestones
42## Milestones
43
43
44−
45### Test files are merged
44### Test files are merged
45+
462 stars
462 stars
47Your test files are accepted and merged on GitHub.
47Your test files are accepted and merged on GitHub.
48−
49−
content/grants/unit-tests-for-pure-algorithms.md+18−21
@@ -2,7 +2,7 @@
2title = "Unit tests for pure algorithms"
2title = "Unit tests for pure algorithms"
3date = 2019-07-25
3date = 2019-07-25
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -24,38 +24,35 @@ Save the test files in the `/tests/sys/hoon` directory in Arvo. Use the same fra
24
24
25#### Resources
25#### Resources
26
26
27−* Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
27+- Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
28−* Read the documentation on [sets](https://urbit.org/docs/reference/library/2h/), [maps](https://urbit.org/docs/reference/library/2i/), and [queues](https://urbit.org/docs/reference/library/2k/).
28+- Read the documentation on [sets](https://urbit.org/docs/reference/library/2h/), [maps](https://urbit.org/docs/reference/library/2i/), and [queues](https://urbit.org/docs/reference/library/2k/).
29−* [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
29+- [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
30
30
31#### Contribution Guidelines
31#### Contribution Guidelines
32
32
33−* Do not begin work until your request to claim this bounty is accepted.
33+- Do not begin work until your request to claim this bounty is accepted.
34−* Your tests should be written as four files, with one for each core (`+in`, `+by`, `+to`, and `+differ`).
34+- Your tests should be written as four files, with one for each core (`+in`, `+by`, `+to`, and `+differ`).
35−* Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
35+- Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
36−* Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
36+- Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
37−* You have 30 days from the time of approval to complete this bounty.
37+- You have 30 days from the time of approval to complete this bounty.
38
38
39#### Resources
39#### Resources
40
40
41−* Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
41+- Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
42−* Read the documentation on [sets](https://urbit.org/docs/reference/library/2h/), [maps](https://urbit.org/docs/reference/library/2i/), and [queues](https://urbit.org/docs/reference/library/2k/).
42+- Read the documentation on [sets](https://urbit.org/docs/reference/library/2h/), [maps](https://urbit.org/docs/reference/library/2i/), and [queues](https://urbit.org/docs/reference/library/2k/).
43−* [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
43+- [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
44
44
45#### Contribution Guidelines
45#### Contribution Guidelines
46
46
47−* Do not begin work until your request to claim this bounty is accepted.
47+- Do not begin work until your request to claim this bounty is accepted.
48−* Your tests should be written as four files, with one for each arm (`+in`, `+by`, `+to`, and `+differ`).
48+- Your tests should be written as four files, with one for each arm (`+in`, `+by`, `+to`, and `+differ`).
49−* Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
49+- Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
50−* Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
50+- Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
51−* You have 30 days from the time of approval to complete this bounty.
51+- You have 30 days from the time of approval to complete this bounty.
52−
53
52
54## Milestones
53## Milestones
55
54
56−
57### Test files are merged
55### Test files are merged
56+
581 stars
571 stars
59Your test files are accepted and merged on GitHub.
58Your test files are accepted and merged on GitHub.
60−
61−
content/grants/unit-tests-for-sha-functions.md+10−12
@@ -2,7 +2,7 @@
2title = "Unit tests for SHA functions"
2title = "Unit tests for SHA functions"
3date = 2019-07-25
3date = 2019-07-25
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -28,23 +28,21 @@ Save the test file in the `/tests/sys/hoon` directory in Arvo. Use the same fram
28
28
29#### Resources
29#### Resources
30
30
31−* Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
31+- Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
32−* Read the [documentation](https://urbit.org/docs/reference/library/3d/) for section 3d.
32+- Read the [documentation](https://urbit.org/docs/reference/library/3d/) for section 3d.
33−* [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
33+- [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
34
34
35#### Contribution Guidelines
35#### Contribution Guidelines
36
36
37−* Do not begin work until your request to claim this bounty is accepted.
37+- Do not begin work until your request to claim this bounty is accepted.
38−* You have 45 days from approval to complete the bounty.
38+- You have 45 days from approval to complete the bounty.
39−* Your tests should be written as one file.
39+- Your tests should be written as one file.
40−* Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
40+- Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
41−* Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
41+- Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
42
42
43## Milestones
43## Milestones
44
44
45−
46### Your test file is merged
45### Your test file is merged
46+
471 stars
471 stars
48Your test file for all the relevant functions is accepted and merged.
48Your test file for all the relevant functions is accepted and merged.
49−
50−
content/grants/unit-tests-for-zuse-cryptographic-functions.md+10−12
@@ -2,7 +2,7 @@
2title = "Unit tests for Zuse cryptographic functions"
2title = "Unit tests for Zuse cryptographic functions"
3date = 2019-07-25
3date = 2019-07-25
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Dev Tool"]
6grant_category = ["Dev Tool"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -31,22 +31,20 @@ Save the test files in the `tests/sys/zuse/crypto` directory in Arvo. Use the sa
31
31
32#### Resources
32#### Resources
33
33
34−* Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
34+- Read the [guide](https://github.com/urbit/urbit/blob/master/pkg/arvo/TESTING.udon) to writing unit tests in Hoon.
35−* Read the guide to [contributing](https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md).
35+- Read the guide to [contributing](https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md).
36−* [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
36+- [Here](https://github.com/urbit/urbit/blob/alef2/pkg/arvo/tests/sys/zuse/ordered-map.hoon) is an example test file for the new Ames. Your tests should be similar to it.
37
37
38#### Contribution Guidelines
38#### Contribution Guidelines
39
39
40−* Do not begin work until your request to claim this bounty is accepted.
40+- Do not begin work until your request to claim this bounty is accepted.
41−* You have 60 days from acceptance to complete this bounty.
41+- You have 60 days from acceptance to complete this bounty.
42−* Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
42+- Write the appropriate number of unit tests per function. Some arms will only need one test, but some arms may or may not require more. An insufficient number of tests for arms may result in your submission being rejected.
43−* Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
43+- Submit your tests as a PR to the [“urbit” repository](https://github.com/urbit/urbit). Your test file should be under `pkg/arvo/tests/sys/hoon` within the repository. Link this bounty in the PR’s description.
44
44
45## Milestones
45## Milestones
46
46
47−
48### Your test file is merged
47### Your test file is merged
49−1 stars
50−Your test file for all the relevant functions is accepted and merged.
51
48
52−
49+1 stars
50+Your test file for all the relevant functions is accepted and merged.
content/grants/up-to-date-hoon-reference-card.md+5−7
@@ -2,7 +2,7 @@
2title = "Up-to-date Hoon reference card"
2title = "Up-to-date Hoon reference card"
3date = 2020-03-15
3date = 2020-03-15
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -14,17 +14,15 @@ completed = true
14link = ""
14link = ""
15+++
15+++
16
16
17−I have made and will maintain an up-to-date Urbit Hoon reference card. (I am segregating my course-related work very carefully from my Urbit-hobbyist work—although I will use this should my grad course be approved by the dept I am putting it forward as a public resource.)
17+I have made and will maintain an up-to-date Urbit Hoon reference card. (I am segregating my course-related work very carefully from my Urbit-hobbyist work—although I will use this should my grad course be approved by the dept I am putting it forward as a public resource.)
18
18
19−You can see the current version here: https://github.com/natareo/hooncard/blob/master/hooncard.pdf
19+You can see the current version here: https://github.com/natareo/hooncard/blob/master/hooncard.pdf
20
20
21−I put 1 star, but, whatever, I don't really think this is worth a whole star—I was encouraged to put this up as a proposal, which has the added benefit of making Tlon aware that this now exists. But if not, a Nock shirt or the like would be nice.
21+I put 1 star, but, whatever, I don't really think this is worth a whole star—I was encouraged to put this up as a proposal, which has the added benefit of making Tlon aware that this now exists. But if not, a Nock shirt or the like would be nice.
22
22
23## Milestones
23## Milestones
24
24
25−
26### Make card public
25### Make card public
26+
271 stars
271 stars
28Make an accurate, up-to-date Hoon reference card available.
28Make an accurate, up-to-date Hoon reference card available.
29−
30−
content/grants/urbian-a-customized-linux-distribution-for-urbit-appliances.md+7−8
@@ -2,7 +2,7 @@
2title = "Urbian: a customized Linux distribution for Urbit appliances"
2title = "Urbian: a customized Linux distribution for Urbit appliances"
3date = 2020-10-06
3date = 2020-10-06
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Dev Tool"]
6grant_category = ["Dev Tool"]
7[extra]
7[extra]
8image = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Bromeliaceae20020312.JPG/640px-Bromeliaceae20020312.JPG"
8image = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Bromeliaceae20020312.JPG/640px-Bromeliaceae20020312.JPG"
@@ -22,7 +22,7 @@ This is meant to serve as a backend for future turnkey Urbit appliances or IoT h
22
22
23![Bromeliaceae on a tree, Costa Rica (Atlantic area)](https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Bromeliaceae20020312.JPG/640px-Bromeliaceae20020312.JPG)
23![Bromeliaceae on a tree, Costa Rica (Atlantic area)](https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Bromeliaceae20020312.JPG/640px-Bromeliaceae20020312.JPG)
24
24
25−*“An epiphyte uses a tree for physical support but does not drawn nourishment from it.”*
25+_“An epiphyte uses a tree for physical support but does not drawn nourishment from it.”_
26
26
27I’ve been running Urbit on various ARM powered devices since November 2019 and have seen Urbit on ARM evolve from a curious toy into a viable platform for daily Urbit usage, ready to be used on the cloud or a credit card sized microserver hidden in the corner of a room.
27I’ve been running Urbit on various ARM powered devices since November 2019 and have seen Urbit on ARM evolve from a curious toy into a viable platform for daily Urbit usage, ready to be used on the cloud or a credit card sized microserver hidden in the corner of a room.
28
28
@@ -39,9 +39,10 @@ This is a first attempt at building such a base.
39This is a package of scripts and configuration files intended to be used in a userpatches overlay for Armbian. Though deliverables include an image intended for a particular device (the NanoPi M4V2) the advantage of Armbian over other methods of creating an embedded Linux image is the ease of targeting a diverse set of devices without time consuming setup.
39This is a package of scripts and configuration files intended to be used in a userpatches overlay for Armbian. Though deliverables include an image intended for a particular device (the NanoPi M4V2) the advantage of Armbian over other methods of creating an embedded Linux image is the ease of targeting a diverse set of devices without time consuming setup.
40
40
41It should be possible to take this overlay and use it with the [Armbian build tool](https://github.com/armbian/build) to create Urbit ready images for about [38 different platforms](https://docs.google.com/document/d/e/2PACX-1vRo8VKU4oUQQN9Z94vu2lYP2iSb75MRwKLtLGnfTkShmUw7kupjg1cYOryT1Tw1lwczw2Eu8nyIlfKQ/pub) with little or no modification.
41It should be possible to take this overlay and use it with the [Armbian build tool](https://github.com/armbian/build) to create Urbit ready images for about [38 different platforms](https://docs.google.com/document/d/e/2PACX-1vRo8VKU4oUQQN9Z94vu2lYP2iSb75MRwKLtLGnfTkShmUw7kupjg1cYOryT1Tw1lwczw2Eu8nyIlfKQ/pub) with little or no modification.
42−The scripts and configuration files that provide the turnkey Urbit functionality should be universally applicable to most Linux distributions with udev and systemd, and can be installed separately or integrated into other embedded Linux images.
42+The scripts and configuration files that provide the turnkey Urbit functionality should be universally applicable to most Linux distributions with udev and systemd, and can be installed separately or integrated into other embedded Linux images.
43
43
44Core functionality will be handled by a service which runs at boot:
44Core functionality will be handled by a service which runs at boot:
45+
45- It waits for the insertion of a USB drive, and when one is automatically mounted checks for the presence of an Urbit keyfile and an extremely basic wifi configuration file (for users who don’t want to use the bluetooth setup method for wifi).
46- It waits for the insertion of a USB drive, and when one is automatically mounted checks for the presence of an Urbit keyfile and an extremely basic wifi configuration file (for users who don’t want to use the bluetooth setup method for wifi).
46- The script will configure the wifi device if a wifi file was found
47- The script will configure the wifi device if a wifi file was found
47- On finding a keyfile it will check for the presence of an already booted Urbit and will not proceed if one is found.
48- On finding a keyfile it will check for the presence of an already booted Urbit and will not proceed if one is found.
@@ -53,6 +54,7 @@ Core functionality will be handled by a service which runs at boot:
53Outside infrastructure for this is an APT repository to hold the most up-to-date AArch64 versions of Urbit and other packages required to enable turnkey functionality.
54Outside infrastructure for this is an APT repository to hold the most up-to-date AArch64 versions of Urbit and other packages required to enable turnkey functionality.
54
55
55Armbian image to additionally include:
56Armbian image to additionally include:
57+
56- [RPi-Monitor](https://github.com/XavierBerger/RPi-Monitor) for real time monitoring
58- [RPi-Monitor](https://github.com/XavierBerger/RPi-Monitor) for real time monitoring
57- nymea-networkmanager for [wifi configuration over bluetooth](https://berrylan.org)
59- nymea-networkmanager for [wifi configuration over bluetooth](https://berrylan.org)
58
60
@@ -70,17 +72,14 @@ It has the potential to evolve into a system that makes it easier for users to s
70
72
71The development of this backend will support UX experiments with a frontend meant to create a user friendly, turnkey-style Urbit device.
73The development of this backend will support UX experiments with a frontend meant to create a user friendly, turnkey-style Urbit device.
72
74
73−
74## Milestones
75## Milestones
75
76
76−
77### An Armbian userpatches overlay for Urbit
77### An Armbian userpatches overlay for Urbit
78+
781 stars
791 stars
79Overlay with scripts and services integrated, used to create an image for installation to a device, which will setup Urbit upon being booted.
80Overlay with scripts and services integrated, used to create an image for installation to a device, which will setup Urbit upon being booted.
80
81
81−
82### Demo of image generation and boot
82### Demo of image generation and boot
83+
831 stars
841 stars
84Blog style write-up of how to create an image with the Armbian build tool, flashing it to a device, and how it might work with a simple frontend to communicate with the user.
85Blog style write-up of how to create an image with the Armbian build tool, flashing it to a device, and how it might work with a simple frontend to communicate with the user.
85−
86−
content/grants/urbit-api-for-elixir.md+5−7
@@ -2,8 +2,8 @@
2title = "Urbit API for Elixir"
2title = "Urbit API for Elixir"
3date = 2021-02-11
3date = 2021-02-11
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "A proposal to build an Urbit HTTP Api for the Elixir language, bringing to Urbit its state of the art concurrency capabilities."
9description = "A proposal to build an Urbit HTTP Api for the Elixir language, bringing to Urbit its state of the art concurrency capabilities."
@@ -20,19 +20,17 @@ I am a web developer fluent in Ruby, JS, and working mainly with elixir for the
20
20
21## Milestones
21## Milestones
22
22
23−
24### Basic HTTP Interface
23### Basic HTTP Interface
24+
251 stars
251 stars
26Enabling a basic interface to send/receive json to a running Urbit ship.
26Enabling a basic interface to send/receive json to a running Urbit ship.
27
27
28−
29### Graph Store
28### Graph Store
29+
301 stars
301 stars
31Enabling full interactivity with the graph-store HTTP endpoints.
31Enabling full interactivity with the graph-store HTTP endpoints.
32
32
33−
34### Other Gall Apps
33### Other Gall Apps
34+
351 stars
351 stars
36Reach all available endpoints for other Gall apps such as hark-store, metadata-store, etc.
36Reach all available endpoints for other Gall apps such as hark-store, metadata-store, etc.
37−
38−
content/grants/urbit-community-concierge-east-coast-2q2021.md+2−4
@@ -2,7 +2,7 @@
2title = "Urbit Community Concierge - East Coast - 2Q2021"
2title = "Urbit Community Concierge - East Coast - 2Q2021"
3date = 2021-04-27
3date = 2021-04-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -27,9 +27,7 @@ Applicants should:
27
27
28## Milestones
28## Milestones
29
29
30−
31### Complete 240 hours of concierge service
30### Complete 240 hours of concierge service
31+
321 stars
321 stars
33Complete 12 weeks, 5 days/week, 4 hours/day of concierge service in the UC group
33Complete 12 weeks, 5 days/week, 4 hours/day of concierge service in the UC group
34−
35−
content/grants/urbit-community-concierge-east-coast.md+4−5
@@ -2,7 +2,7 @@
2title = "Urbit Community Concierge - East Coast"
2title = "Urbit Community Concierge - East Coast"
3date = 2021-02-10
3date = 2021-02-10
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -17,7 +17,8 @@ link = ""
17Provide concierge service assisting new users in the Urbit Community Group, particularly the General, Watercooler, Help, and Community Formation channels. Identify yourself periodically as a support resource on these channels so that users know they can ask questions of you. Using a nickname could be helpful here.
17Provide concierge service assisting new users in the Urbit Community Group, particularly the General, Watercooler, Help, and Community Formation channels. Identify yourself periodically as a support resource on these channels so that users know they can ask questions of you. Using a nickname could be helpful here.
18
18
19Applicants should:
19Applicants should:
20+
20−- know the "big picture" of Urbit well.
21+- know the "big picture" of Urbit well.
21- be able to answer general questions about the structure and purpose of Urbit and Landscape.
22- be able to answer general questions about the structure and purpose of Urbit and Landscape.
22- keep up with community and be able to recommend public groups, events, people to connect with, etc.
23- keep up with community and be able to recommend public groups, events, people to connect with, etc.
23- have general information available (FAQ, Eth/gas prices, Urbit documentation, etc.)
24- have general information available (FAQ, Eth/gas prices, Urbit documentation, etc.)
@@ -26,9 +27,7 @@ Applicants should:
26
27
27## Milestones
28## Milestones
28
29
29−
30### 80 hours of concierge service
30### 80 hours of concierge service
31+
311 stars
321 stars
32Provide concierge service for 4 hours/day, 5 days/week, for 4 weeks during prime East Coast hours
33Provide concierge service for 4 hours/day, 5 days/week, for 4 weeks during prime East Coast hours
33−
34−
content/grants/urbit-community-concierge-west-coast-2q2021.md+2−4
@@ -2,7 +2,7 @@
2title = "Urbit Community Concierge - West Coast - 2Q2021"
2title = "Urbit Community Concierge - West Coast - 2Q2021"
3date = 2021-04-27
3date = 2021-04-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -27,9 +27,7 @@ Applicants should:
27
27
28## Milestones
28## Milestones
29
29
30−
31### Complete 240 hours concierge service
30### Complete 240 hours concierge service
31+
321 stars
321 stars
33Complete 12 weeks, 5 days/week, 4 hours/day concierge service during west coast hours
33Complete 12 weeks, 5 days/week, 4 hours/day concierge service during west coast hours
34−
35−
content/grants/urbit-community-concierge-west-coast.md+4−5
@@ -2,7 +2,7 @@
2title = "Urbit Community Concierge - West Coast"
2title = "Urbit Community Concierge - West Coast"
3date = 2021-02-10
3date = 2021-02-10
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -17,7 +17,8 @@ link = ""
17Provide concierge service assisting new users in the Urbit Community Group, particularly the General, Watercooler, Help, and Community Formation channels. Identify yourself periodically as a support resource on these channels so that users know they can ask questions of you. Using a nickname could be helpful here.
17Provide concierge service assisting new users in the Urbit Community Group, particularly the General, Watercooler, Help, and Community Formation channels. Identify yourself periodically as a support resource on these channels so that users know they can ask questions of you. Using a nickname could be helpful here.
18
18
19Applicants should:
19Applicants should:
20+
20−- know the "big picture" of Urbit well.
21+- know the "big picture" of Urbit well.
21- be able to answer general questions about the structure and purpose of Urbit and Landscape.
22- be able to answer general questions about the structure and purpose of Urbit and Landscape.
22- keep up with community and be able to recommend public groups, events, people to connect with, etc.
23- keep up with community and be able to recommend public groups, events, people to connect with, etc.
23- have general information available (FAQ, Eth/gas prices, Urbit documentation, etc.)
24- have general information available (FAQ, Eth/gas prices, Urbit documentation, etc.)
@@ -26,9 +27,7 @@ Applicants should:
26
27
27## Milestones
28## Milestones
28
29
29−
30### 80 hours of concierge service
30### 80 hours of concierge service
31+
311 stars
321 stars
32Provide concierge service for 4 hours/day, 5 days/week, for 4 weeks during prime West Coast hours
33Provide concierge service for 4 hours/day, 5 days/week, for 4 weeks during prime West Coast hours
33−
34−
content/grants/urbit-event-series.md+5−6
@@ -2,7 +2,7 @@
2title = "Urbit Event Series"
2title = "Urbit Event Series"
3date = 2020-10-11
3date = 2020-10-11
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -27,6 +27,7 @@ Grant requested: one star
27Additional required budget: None
27Additional required budget: None
28
28
29Deliverable: an introductory series of 3-4 developer calls for the Urbit community. Calls will happen weekly or biweekly and be hosted on Zoom or a similar platform. They can also be streamed to an Urbit channel, where community members can watch and post questions in real time. Each call will feature a different developer, invited to discuss a different part of the Urbit application stack, such as:
29Deliverable: an introductory series of 3-4 developer calls for the Urbit community. Calls will happen weekly or biweekly and be hosted on Zoom or a similar platform. They can also be streamed to an Urbit channel, where community members can watch and post questions in real time. Each call will feature a different developer, invited to discuss a different part of the Urbit application stack, such as:
30+
30- Building apps using store/hook/view
31- Building apps using store/hook/view
31- Graph store (Logan)
32- Graph store (Logan)
32- Lib hook
33- Lib hook
@@ -72,19 +73,17 @@ Scope of work: Act as project manager for the event. Consult with Tlon, communit
72
73
73## Milestones
74## Milestones
74
75
75−
76### Phase I: Developer calls
76### Phase I: Developer calls
77+
771 stars
781 stars
78An introductory series of 3-4 developer calls for the Urbit community. See Details for more information and scope of work.
79An introductory series of 3-4 developer calls for the Urbit community. See Details for more information and scope of work.
79
80
80−
81### Phase II: Town Hall
81### Phase II: Town Hall
82+
822 stars
832 stars
83A one-off, 2-3 hour “town hall” event that will be appropriate for both a technical and a non-technical audience. See Details for more information and scope of work.
84A one-off, 2-3 hour “town hall” event that will be appropriate for both a technical and a non-technical audience. See Details for more information and scope of work.
84
85
85−
86### Phase III: UrbitCon
86### Phase III: UrbitCon
87+
873 stars
883 stars
88A daylong virtual summit, the first public Urbit conference. See Details for more information and scope of work.
89A daylong virtual summit, the first public Urbit conference. See Details for more information and scope of work.
89−
90−
content/grants/urbit-explainer-video.md+3−5
@@ -2,7 +2,7 @@
2title = "Urbit Explainer Video"
2title = "Urbit Explainer Video"
3date = 2020-09-13
3date = 2020-09-13
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -20,15 +20,13 @@ Contrasting the original [Tlon-produced explainer](https://www.youtube.com/watch
20
20
21~minder-folden: My work leans heavily on custom scripting for my own creative projects as well as my commissioned work for clients so I'm excited to bring that skillset to Urbit. As a primarily non-technical member of the community, I want to help communicate the value I've seen first hand on the network beyond the boundaries of the tech world. Feel free to check out [my portfolio site](https://www.jonathanpritchard.me/).
21~minder-folden: My work leans heavily on custom scripting for my own creative projects as well as my commissioned work for clients so I'm excited to bring that skillset to Urbit. As a primarily non-technical member of the community, I want to help communicate the value I've seen first hand on the network beyond the boundaries of the tech world. Feel free to check out [my portfolio site](https://www.jonathanpritchard.me/).
22
22
23−~rivpyl-sidfyl: I am experienced in video, audio and animation work.
23+~rivpyl-sidfyl: I am experienced in video, audio and animation work.
24I'll try my best in translating and adapting our idea to the audiovisual medium.
24I'll try my best in translating and adapting our idea to the audiovisual medium.
25Here's a short video [reel](https://streamable.com/lpzh4s) showcasing some of my recent work.
25Here's a short video [reel](https://streamable.com/lpzh4s) showcasing some of my recent work.
26
26
27## Milestones
27## Milestones
28
28
29−
30### It's Done
29### It's Done
30+
312 stars
312 stars
32We publish the finalized video, after developing a working storyboard that has been reviewed and shared with people that might add relevant perspectives to the project.
32We publish the finalized video, after developing a working storyboard that has been reviewed and shared with people that might add relevant perspectives to the project.
33−
34−
content/grants/urbit-http-api-for-emacs-elisp.md+5−7
@@ -2,7 +2,7 @@
2title = "Urbit HTTP API for Emacs (elisp)"
2title = "Urbit HTTP API for Emacs (elisp)"
3date = 2021-01-18
3date = 2021-01-18
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Dev Tool"]
6grant_category = ["Dev Tool"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -16,23 +16,21 @@ link = ""
16
16
17I've been poking around in Emacs to test the feasibility of this project, and I think it will work out pretty well. The biggest obstacle I found was the lack of SSE client library, but I already have a solution.
17I've been poking around in Emacs to test the feasibility of this project, and I think it will work out pretty well. The biggest obstacle I found was the lack of SSE client library, but I already have a solution.
18
18
19− Milestones have been adapted from this google doc: https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit
19+Milestones have been adapted from this google doc: https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit
20
20
21## Milestones
21## Milestones
22
22
23−
24### Basic HTTP Interface
23### Basic HTTP Interface
24+
251 stars
251 stars
26Implementation of the HTTP interface to send JSON to/from an Urbit ship.
26Implementation of the HTTP interface to send JSON to/from an Urbit ship.
27
27
28−
29### Graph Store Interface
28### Graph Store Interface
29+
301 stars
301 stars
31Implementation of graph-store interface.
31Implementation of graph-store interface.
32
32
33−
34### Additional Agent Interfaces
33### Additional Agent Interfaces
34+
351 stars
351 stars
36Implementation of at least two of the following interfaces: contact-store, invite-store, group-store, and metadata-store.
36Implementation of at least two of the following interfaces: contact-store, invite-store, group-store, and metadata-store.
37−
38−
content/grants/urbit-http-api-for-kotlin.md+5−8
@@ -2,8 +2,8 @@
2title = "Urbit HTTP API for Kotlin"
2title = "Urbit HTTP API for Kotlin"
3date = 2020-10-27
3date = 2020-10-27
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Write an urbit HTTP API (aka Airlock) for Kotlin."
9description = "Write an urbit HTTP API (aka Airlock) for Kotlin."
@@ -16,22 +16,19 @@ link = ""
16
16
17This proposal project will produce urbit HTTP API in Kotlin language with [these requirements](https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit) in mind.
17This proposal project will produce urbit HTTP API in Kotlin language with [these requirements](https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit) in mind.
18
18
19−
20## Milestones
19## Milestones
21
20
22−
23### HTTP interface
21### HTTP interface
22+
241 stars
231 stars
25HTTP interface for sending and receiving JSON from Kotlin programs
24HTTP interface for sending and receiving JSON from Kotlin programs
26
25
27−
28### graph-store interface
26### graph-store interface
27+
291 stars
281 stars
30graph-store interface for interacting with urbit's general purpose data storage model
29graph-store interface for interacting with urbit's general purpose data storage model
31
30
32−
33### agents interfaces
31### agents interfaces
32+
341 stars
331 stars
35metadata-store and group-store agents interfaces
34metadata-store and group-store agents interfaces
36−
37−
content/grants/urbit-http-api-for-rust.md+5−9
@@ -2,8 +2,8 @@
2title = "Urbit HTTP API for Rust"
2title = "Urbit HTTP API for Rust"
3date = 2020-12-16
3date = 2020-12-16
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "This proposal seeks to create an API to interact with an Urbit ship over HTTP written in Rust."
9description = "This proposal seeks to create an API to interact with an Urbit ship over HTTP written in Rust."
@@ -28,29 +28,25 @@ This proposal comprises of the three milestones as defined in this doc: https://
28
28
293. Additional Agent Interfaces - Interface to the group-store and metadata-store Gall agents
293. Additional Agent Interfaces - Interface to the group-store and metadata-store Gall agents
30
30
31−
32**Plan**
31**Plan**
33
32
34While doing research/testing into the complexity of building out such a http api library, I've ended up 90% completing milestone 1. This milestone should be publicly released by the end of the week that this proposal is posted on.
33While doing research/testing into the complexity of building out such a http api library, I've ended up 90% completing milestone 1. This milestone should be publicly released by the end of the week that this proposal is posted on.
35
34
36From a quick look-over, milestones 2/3 do not seem too complex either, however I am also working full-time in tandem, and so my spare dev time is limited. As such the 2nd/3rd milestones are pushed out a bit further to provide some lee-way to ensure they're delivered on time.
35From a quick look-over, milestones 2/3 do not seem too complex either, however I am also working full-time in tandem, and so my spare dev time is limited. As such the 2nd/3rd milestones are pushed out a bit further to provide some lee-way to ensure they're delivered on time.
37
36
38−
39## Milestones
37## Milestones
40
38
41−
42### Basic HTTP Interface
39### Basic HTTP Interface
40+
431 stars
411 stars
44Implementation of the HTTP Interface responsible for sending and receiving JSON to/from an Urbit ship
42Implementation of the HTTP Interface responsible for sending and receiving JSON to/from an Urbit ship
45
43
46−
47### Graph Store Interface
44### Graph Store Interface
45+
481 stars
461 stars
49Implementation of the interface to `graph-store`, which sits on top of the HTTP Interface
47Implementation of the interface to `graph-store`, which sits on top of the HTTP Interface
50
48
51−
52### Additional Agent Interfaces
49### Additional Agent Interfaces
50+
531 stars
511 stars
54Implementation of the `group-store` and `metadata-store` Gall agents.
52Implementation of the `group-store` and `metadata-store` Gall agents.
55−
56−
content/grants/urbit-http-interface-java-edition.md+8−14
@@ -2,7 +2,7 @@
2title = "Urbit HTTP Interface — Java Edition"
2title = "Urbit HTTP Interface — Java Edition"
3date = 2020-10-20
3date = 2020-10-20
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Core Dev"]
6grant_category = ["Core Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -20,19 +20,17 @@ This proposal seeks to create an API to interact with an Urbit ship over HTTP wr
20
20
21One benefit of a Java implementation would be that any JVM languages (Clojure, Kotlin, etc.) that support the use of Java libraries can also make use of it.
21One benefit of a Java implementation would be that any JVM languages (Clojure, Kotlin, etc.) that support the use of Java libraries can also make use of it.
22
22
23−
24## Outline
23## Outline
25
24
26This comprises three parts:
25This comprises three parts:
26+
271. **Basic HTTP Interface** - Responsible for sending and receiving JSON to/from an Urbit ship
271. **Basic HTTP Interface** - Responsible for sending and receiving JSON to/from an Urbit ship
28
28
29−2. **Graph Store Interface** - Interface to the `graph-store` Urbit API on top of the HTTP Interface
29+2. **Graph Store Interface** - Interface to the `graph-store` Urbit API on top of the HTTP Interface
30
30
313. **Additional Agent Interfaces** - Interface to the `group-store` and `metadata-store` Gall agents
313. **Additional Agent Interfaces** - Interface to the `group-store` and `metadata-store` Gall agents
32
32
33−
34−In addition, we will seek to document the code throughout the evolution of the proposal, providing READMEs along the way.
33+In addition, we will seek to document the code throughout the evolution of the proposal, providing READMEs along the way.
35−
36
34
37## Plan
35## Plan
38
36
@@ -41,29 +39,25 @@ In addition, we will seek to document the code throughout the evolution of the p
413. Test it out with more experienced Urbit developers
393. Test it out with more experienced Urbit developers
424. Finalize and write documentation
404. Finalize and write documentation
43
41
44−
45Qualifications:
42Qualifications:
46
43
47I'm qualified to implement this because I am experienced with Java. I have used Java for 3+ years, written robotics code using Java, and have experience using the Gradle build system.
44I'm qualified to implement this because I am experienced with Java. I have used Java for 3+ years, written robotics code using Java, and have experience using the Gradle build system.
48
45
49− My github profile is at https://github.com/ynx0, where I have written software projects in other languages, such as a parser/interpreter combo for a fantasy assembly language.
46+My github profile is at https://github.com/ynx0, where I have written software projects in other languages, such as a parser/interpreter combo for a fantasy assembly language.
50−
51
47
52## Milestones
48## Milestones
53
49
54−
55### Basic HTTP Interface
50### Basic HTTP Interface
51+
561 stars
521 stars
57Implementation of the HTTP Interface responsible for sending and receiving JSON to/from an Urbit ship
53Implementation of the HTTP Interface responsible for sending and receiving JSON to/from an Urbit ship
58
54
59−
60### Graph Store Interface
55### Graph Store Interface
56+
611 stars
571 stars
62Implementation of the interface to `graph-store`, which sits on top of the HTTP Interface
58Implementation of the interface to `graph-store`, which sits on top of the HTTP Interface
63
59
64−
65### Additional Agent Interfaces
60### Additional Agent Interfaces
61+
661 stars
621 stars
67Implementation of the `group-store` and `metadata-store` Gall agents
63Implementation of the `group-store` and `metadata-store` Gall agents
68−
69−
content/grants/urbit-http-library-for-ruby.md+5−7
@@ -2,7 +2,7 @@
2title = "Urbit HTTP Library for Ruby"
2title = "Urbit HTTP Library for Ruby"
3date = 2020-11-05
3date = 2020-11-05
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Dev Tool"]
6grant_category = ["Dev Tool"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -15,25 +15,23 @@ link = ""
15+++
15+++
16
16
17Patterned per document:
17Patterned per document:
18−https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit.
18+https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit.
19
19
20I am a long-time (20+ years) ruby coder and would love to take this on. I tried my best to ballpark the timeframe off the code I have seen as well as the fact that I still have an pretty full day job. ;) I am open to discussion on the timeframe(s) if it is too long.
20I am a long-time (20+ years) ruby coder and would love to take this on. I tried my best to ballpark the timeframe off the code I have seen as well as the fact that I still have an pretty full day job. ;) I am open to discussion on the timeframe(s) if it is too long.
21
21
22## Milestones
22## Milestones
23
23
24−
25### Basic HTTP Interface
24### Basic HTTP Interface
25+
261 stars
261 stars
27This involves building a mechanism for sending and receiving JSON to/from an Urbit ship.
27This involves building a mechanism for sending and receiving JSON to/from an Urbit ship.
28
28
29−
30### Graph Store Interface
29### Graph Store Interface
30+
311 stars
311 stars
32Using the basic HTTP interface referenced above, create an interface to graph-store.
32Using the basic HTTP interface referenced above, create an interface to graph-store.
33
33
34−
35### Additional Agent Interfaces
34### Additional Agent Interfaces
35+
361 stars
361 stars
37Landscape gall agents that can be interfaced with over the HTTP interface. I will implement at least group-store and contact-store. Time permitting I will also try invite-store and/or metadata-store.
37Landscape gall agents that can be interfaced with over the HTTP interface. I will implement at least group-store and contact-store. Time permitting I will also try invite-store and/or metadata-store.
38−
39−
content/grants/urbit-lfs-filehosting.md+10−13
@@ -2,8 +2,8 @@
2title = "Urbit LFS - filehosting"
2title = "Urbit LFS - filehosting"
3date = 2021-03-11
3date = 2021-03-11
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Share large files"
9description = "Share large files"
@@ -18,51 +18,48 @@ link = ""
18
18
19Allow Urbit to be a personal cloud storage interface. Upload files/images to a provider and share links with chats. A technical user can be their own provider.
19Allow Urbit to be a personal cloud storage interface. Upload files/images to a provider and share links with chats. A technical user can be their own provider.
20
20
21−
22## Design
21## Design
23
22
24−A provider is a ship running the lfs-provider gall app that is paired with an http fileserver. A client is a ship running the lfs-client gall app.
23+A provider is a ship running the lfs-provider gall app that is paired with an http fileserver. A client is a ship running the lfs-client gall app.
25
24
26A provider can limit clients to %kids, specific groups, or manual lists of authorized ships. A client can subscribe to multiple providers.
25A provider can limit clients to %kids, specific groups, or manual lists of authorized ships. A client can subscribe to multiple providers.
27
26
28−When a client requests an upload, the provider verifies permissions and file storage limits, and returns a one-time upload url to the fileserver.
27+When a client requests an upload, the provider verifies permissions and file storage limits, and returns a one-time upload url to the fileserver.
29
28
30When the uploading is finished, the fileserver notifies the provider to update client storage usage.
29When the uploading is finished, the fileserver notifies the provider to update client storage usage.
31
30
32−## Me
31+## Me
33
32
34I'm an experienced functional programmer, but amateur hooner. I've read through the Urbit hoon docs, and the GitHub Gall Guide, and I'm starting to appreciate the odd martian soil. I want to try building something real and practical on the platform. I want to run a personal fileserver with my Urbit instead of emailing files and moving USBs.
33I'm an experienced functional programmer, but amateur hooner. I've read through the Urbit hoon docs, and the GitHub Gall Guide, and I'm starting to appreciate the odd martian soil. I want to try building something real and practical on the platform. I want to run a personal fileserver with my Urbit instead of emailing files and moving USBs.
35
34
36−After completing an exploratory proof-of-concept, this proposal replaces https://grants.urbit.org/proposals/1760204192 with more detailed project milestones.
35+After completing an exploratory proof-of-concept, this proposal replaces https://grants.urbit.org/proposals/1760204192 with more detailed project milestones.
37
36
38## Milestones
37## Milestones
39
38
39+### Proof of concept
40
40
41−### Proof of concept
421 stars
411 stars
43Client – Proivder – Fileserver
42Client – Proivder – Fileserver
44
43
45Client subscribes to a provider, and pokes to request an upload. Provider creates an upload url on the fileserver, and passes it to the client.
44Client subscribes to a provider, and pokes to request an upload. Provider creates an upload url on the fileserver, and passes it to the client.
46
45
47−
48### Upload limits
46### Upload limits
47+
491 stars
481 stars
50Provider tracks uploaded files per client and enforces filesize limits based on groups, %kids, list of ships. Clients store limits locally as well.
49Provider tracks uploaded files per client and enforces filesize limits based on groups, %kids, list of ships. Clients store limits locally as well.
51
50
52Fileserver confirms upload to provider
51Fileserver confirms upload to provider
53
52
54−
55### Handle Errors
53### Handle Errors
54+
561 stars
551 stars
57When any of the servers shutdown, a transaction is either canceled or can be resumed from a checkpoint.
56When any of the servers shutdown, a transaction is either canceled or can be resumed from a checkpoint.
58
57
59Provider can import/export the map from ship to uploaded files to prevent data loss.
58Provider can import/export the map from ship to uploaded files to prevent data loss.
60
59
61−
62### Permissions and demo UI
60### Permissions and demo UI
61+
631 stars
621 stars
64The fileid gives permission to delete the file on the fileserver. Create and manage share-links using fileid. Provider can throttle file requests.
63The fileid gives permission to delete the file on the fileserver. Create and manage share-links using fileid. Provider can throttle file requests.
65
64
66Demo html/javascript UI for client to manage files.
65Demo html/javascript UI for client to manage files.
67−
68−
content/grants/urbit-online-meetup.md+2−4
@@ -2,7 +2,7 @@
2title = "Urbit online meetup."
2title = "Urbit online meetup."
3date = 2020-06-08
3date = 2020-06-08
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -22,9 +22,7 @@ Ultimately, it might be nice to move the community over to an Urbit group. The t
22
22
23## Milestones
23## Milestones
24
24
25−
26### Urbit Lecture
25### Urbit Lecture
26+
271 stars
271 stars
28The Urbit lecture, given by me, as described.
28The Urbit lecture, given by me, as described.
29−
30−
content/grants/urbit-react-cookbook.md+6−8
@@ -2,8 +2,8 @@
2title = "Urbit React Cookbook"
2title = "Urbit React Cookbook"
3date = 2021-04-10
3date = 2021-04-10
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Provide concrete examples of React UI driven by @urbit/http-api to quickly start building on top of Urbit"
9description = "Provide concrete examples of React UI driven by @urbit/http-api to quickly start building on top of Urbit"
@@ -16,7 +16,7 @@ link = ""
16
16
17The React Cookbook will create a single source of best practices for Urbit development in React through a series of simple examples. The guide will focus on implementing the new @urbit/http-api library to interface with custom Gall apps as well as common calls to backend foundations, particularly graph-store.
17The React Cookbook will create a single source of best practices for Urbit development in React through a series of simple examples. The guide will focus on implementing the new @urbit/http-api library to interface with custom Gall apps as well as common calls to backend foundations, particularly graph-store.
18
18
19−The goal is to demonstrate the ease with which React can be used for the frontend of Urbit applications. While these tools are publicly available there isn’t a single source of concrete examples demonstrating their implementation. A common result is that developers spend a lot of time reading through Landscape code to reverse engineer the calls they want to make.
19+The goal is to demonstrate the ease with which React can be used for the frontend of Urbit applications. While these tools are publicly available there isn’t a single source of concrete examples demonstrating their implementation. A common result is that developers spend a lot of time reading through Landscape code to reverse engineer the calls they want to make.
20
20
21Surfacing the contact points between @urbit/http-api and Hoon reveals the simple mechanics of creating frontend applications that leverage Urbit’s abilities. Work on this proposal has already proved helpful by exposing bugs in @urbit/http-api when removed from its context in Landscape. Fixing these bugs has helped streamline the process of interacting with Hoon directly from React.
21Surfacing the contact points between @urbit/http-api and Hoon reveals the simple mechanics of creating frontend applications that leverage Urbit’s abilities. Work on this proposal has already proved helpful by exposing bugs in @urbit/http-api when removed from its context in Landscape. Fixing these bugs has helped streamline the process of interacting with Hoon directly from React.
22
22
@@ -28,19 +28,17 @@ This guide is robust enough for a JavaScript beginner and of course more advance
28
28
29## Milestones
29## Milestones
30
30
31−
32### First Example App: Groups and Channels
31### First Example App: Groups and Channels
32+
331 stars
331 stars
34Covering Subscriptions, Pokes, Threads, and Scries to create groups/channels, manage members, and send messages. Delivered as a merged PR into the urbit.org documentation.
34Covering Subscriptions, Pokes, Threads, and Scries to create groups/channels, manage members, and send messages. Delivered as a merged PR into the urbit.org documentation.
35
35
36−
37### Second Example App: Advanced Functions
36### Second Example App: Advanced Functions
37+
381 stars
381 stars
39Notebooks, Collections, and advanced functions not covered in the first app such as parsing mentions and code snippets from channels. Delivered as a merged PR into the urbit.org documentation.
39Notebooks, Collections, and advanced functions not covered in the first app such as parsing mentions and code snippets from channels. Delivered as a merged PR into the urbit.org documentation.
40
40
41−
42### Breakout Lessons
41### Breakout Lessons
42+
431 stars
431 stars
44React topics for more complex apps i.e. Context Provider and advanced Hooks. Adding examples Tlon would like to see documented. Delivered as a merged PR into the urbit.org documentation.
44React topics for more complex apps i.e. Context Provider and advanced Hooks. Adding examples Tlon would like to see documented. Delivered as a merged PR into the urbit.org documentation.
45−
46−
content/grants/urbit-ship-and-star-hosting-and-troubleshooting-docs.md+3−5
@@ -2,7 +2,7 @@
2title = "Urbit Ship and Star Hosting and Troubleshooting Docs"
2title = "Urbit Ship and Star Hosting and Troubleshooting Docs"
3date = 2020-08-19
3date = 2020-08-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6grant_category = ["Documentation"]
6grant_category = ["Documentation"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -25,14 +25,12 @@ All of this will be done with an eye towards maintainability of the docs along w
25
25
26## Milestones
26## Milestones
27
27
28−
29### Add Ship Hosting To Official Urbit Docs
28### Add Ship Hosting To Official Urbit Docs
29+
301 stars
301 stars
31The docs for running your Urbit ship in the cloud with best practices: (https://zalberico.com/essay/2020/06/06/urbit-on-the-cloud.html) will be added to the core Urbit.org documentation for users
31The docs for running your Urbit ship in the cloud with best practices: (https://zalberico.com/essay/2020/06/06/urbit-on-the-cloud.html) will be added to the core Urbit.org documentation for users
32
32
33−
34### Star Hosting/Troubleshooting Docs
33### Star Hosting/Troubleshooting Docs
34+
351 stars
351 stars
36Write up docs about the best way to host a star and ways to debug common issues/workflows. End result should be a document that explains how to go from star ownership to hosting and supporting planets
36Write up docs about the best way to host a star and ways to debug common issues/workflows. End result should be a document that explains how to go from star ownership to hosting and supporting planets
37−
38−
content/grants/verifying-urbit-id-on-keybase.md+14−15
@@ -2,8 +2,8 @@
2title = "Verifying Urbit ID on Keybase"
2title = "Verifying Urbit ID on Keybase"
3date = 2020-02-19
3date = 2020-02-19
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Create a Gall app that links Urbit identities with Keybase."
9description = "Create a Gall app that links Urbit identities with Keybase."
@@ -15,43 +15,46 @@ canceled = true
15link = ""
15link = ""
16+++
16+++
17
17
18−Keybase is a service to aggregate multiple web2 identities and offers secure p2p messaging and file storage. Keybase assumes each ID service has multiple users.
18+Keybase is a service to aggregate multiple web2 identities and offers secure p2p messaging and file storage. Keybase assumes each ID service has multiple users.
19−In the Urbit paradigm, each Uribt ID is a self-sovereign host (personal server). Each Urbit ID is one service and one user.
19+In the Urbit paradigm, each Uribt ID is a self-sovereign host (personal server). Each Urbit ID is one service and one user.
20
20
21### Bounty Description
21### Bounty Description
22
22
23−Create a Gall app and that creates a Urbit ID based identity service and hosts an identity proof of the Urbit ID. Keybase offers a guide for creating these proofs and can be found at keybase guide for adding new services.
23+Create a Gall app and that creates a Urbit ID based identity service and hosts an identity proof of the Urbit ID. Keybase offers a guide for creating these proofs and can be found at keybase guide for adding new services.
24
24
25##### Gall application:
25##### Gall application:
26
26
27- Create an identity service for a Urbit ID
27- Create an identity service for a Urbit ID
28− - Check that the config is valid
28+- Check that the config is valid
29- Keybase needs to check the proof periodically on the Identity Service
29- Keybase needs to check the proof periodically on the Identity Service
30- Link on the Identity Service to the corresponding verified Keybase profile
30- Link on the Identity Service to the corresponding verified Keybase profile
31- Use Urbit ID sigil as a badge (badge: a small SVG image)
31- Use Urbit ID sigil as a badge (badge: a small SVG image)
32
32
33-Suggested prefilled fields:
33-Suggested prefilled fields:
34+
34- 'display_name': 'Urbit'
35- 'display_name': 'Urbit'
35- 'Username': 'ship-name'
36- 'Username': 'ship-name'
36- Logo 32px black&white sigil and 16px black&white sigil
37- Logo 32px black&white sigil and 16px black&white sigil
37- 'Description': 'A clean-slate OS and network for the 21st century'
38- 'Description': 'A clean-slate OS and network for the 21st century'
38
39
39##### User interface:
40##### User interface:
41+
40- Create valid `validate_proof_config.json` using form fields
42- Create valid `validate_proof_config.json` using form fields
41- Binary authorization
43- Binary authorization
42− - I am ship-name on urbit [yes or no]
44+- I am ship-name on urbit [yes or no]
43
45
44### Resources:
46### Resources:
47+
45- [Proof Creation](https://keybase.io/docs/proof_integration_guide#2-2-proof-creation)
48- [Proof Creation](https://keybase.io/docs/proof_integration_guide#2-2-proof-creation)
46- [Proof Checking](https://keybase.io/docs/proof_integration_guide#2-3-proof-checking)
49- [Proof Checking](https://keybase.io/docs/proof_integration_guide#2-3-proof-checking)
47- [Linking](https://keybase.io/docs/proof_integration_guide#3-linking-user-profiles)
50- [Linking](https://keybase.io/docs/proof_integration_guide#3-linking-user-profiles)
48
51
49−
50### Prerequisites:
52### Prerequisites:
53+
51- Map your Urbit ID with a DNS domain
54- Map your Urbit ID with a DNS domain
52- Load an SSL certificate using acme
55- Load an SSL certificate using acme
53− - `:acme &path /top-level-domain/second-level-domain/optional-subdomain`
56+- `:acme &path /top-level-domain/second-level-domain/optional-subdomain`
54− - Example: `https://zod.urbit.org` --> `:acme &path /org/urbit/zod`
57+- Example: `https://zod.urbit.org` --> `:acme &path /org/urbit/zod`
55
58
56### Contribution Guidelines:
59### Contribution Guidelines:
57
60
@@ -63,13 +66,9 @@ Create a Gall app and that creates a Urbit ID based identity service and hosts a
63
66
64- You have 90 days from the time of approval to complete this bounty.
67- You have 90 days from the time of approval to complete this bounty.
65
68
66−
67−
68## Milestones
69## Milestones
69
70
70−
71### PR is merged
71### PR is merged
72+
722 stars
732 stars
73Your work is accepted, and your PR is merged.
74Your work is accepted, and your PR is merged.
74−
75−
content/grants/video-content-manager.md+10−11
@@ -2,7 +2,7 @@
2title = "Video Content Manager"
2title = "Video Content Manager"
3date = 2021-02-10
3date = 2021-02-10
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6grant_category = ["Community"]
6grant_category = ["Community"]
7[extra]
7[extra]
8image = ""
8image = ""
@@ -24,14 +24,15 @@ A wealth of Urbit-centric content has been produced in the past several months,
24- Organize content by type on YouTube, and possibly the Media page as well.
24- Organize content by type on YouTube, and possibly the Media page as well.
25- Regularly search for Urbit-related video content and rebroadcast it from Urbit channels (with explicit permission from creators/owners).
25- Regularly search for Urbit-related video content and rebroadcast it from Urbit channels (with explicit permission from creators/owners).
26- Upload audio-only content and add Urbit-related images as instructed by Tlon Design team.
26- Upload audio-only content and add Urbit-related images as instructed by Tlon Design team.
27−- Keep Tlon Comms team updated when new video content is uploaded, so they can signal-boost.
27+- Keep Tlon Comms team updated when new video content is uploaded, so they can signal-boost.
28−- Coordinate (or even produce) video content creation from the community.
28+- Coordinate (or even produce) video content creation from the community.
29−- Use Youtube as a social network to promote Urbit; link Urbit videos in the comments of video content elsewhere on YT that talks about decentralized web/web3.0, data ownership, platform failures etc.
29+- Use Youtube as a social network to promote Urbit; link Urbit videos in the comments of video content elsewhere on YT that talks about decentralized web/web3.0, data ownership, platform failures etc.
30
30
31## Requirements
31## Requirements
32+
32- Good familiarity with video recording and editing software.
33- Good familiarity with video recording and editing software.
33−- Previous record of participation in/knowledge of Urbit Community is a plus.
34+- Previous record of participation in/knowledge of Urbit Community is a plus.
34−- Scrupulous about checking permissions/ownership of content.
35+- Scrupulous about checking permissions/ownership of content.
35
36
36## Resources
37## Resources
37
38
@@ -41,19 +42,17 @@ A wealth of Urbit-centric content has been produced in the past several months,
41
42
42## Milestones
43## Milestones
43
44
44−
45### Bring channels up-to-date
45### Bring channels up-to-date
46+
461 stars
471 stars
47Wrangle content from around the web (with creators' permission) and upload it to both channels. Provide organizational structure to content—on YouTube that's creating channels/playlists, on urbit.org it's up to you.
48Wrangle content from around the web (with creators' permission) and upload it to both channels. Provide organizational structure to content—on YouTube that's creating channels/playlists, on urbit.org it's up to you.
48
49
49−
50### Ongoing maintenance
50### Ongoing maintenance
51+
511 stars
521 stars
52In the three months following the first month of work, keep an eye out for additional content and upload it as needed.
53In the three months following the first month of work, keep an eye out for additional content and upload it as needed.
53
54
54−
55### Optional: Content creation/facilitation
55### Optional: Content creation/facilitation
56+
561 stars
571 stars
57Either create or directly facilitate the creation of new video/audio content (and, of course, upload it).
58Either create or directly facilitate the creation of new video/audio content (and, of course, upload it).
58−
59−
content/grants/volt-lightning-on-urbit.md+135−87
@@ -2,8 +2,8 @@
2title = "volt: Lightning on Urbit"
2title = "volt: Lightning on Urbit"
3date = 2021-04-02
3date = 2021-04-02
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "An Urbit-native Lightning client and integration with `lnd` on 'provider' ships."
9description = "An Urbit-native Lightning client and integration with `lnd` on 'provider' ships."
@@ -14,6 +14,7 @@ link = ""
14+++
14+++
15
15
16## Introduction
16## Introduction
17+
17With the coming integration of the Bitcoin wallet, Urbit ships can now send money between each other and associate payments with other ships (and soon applications/access rights). This building block will let us feel out the possibilities of inter-ship payments, but it's a time-buying measure at most: as BTC's price increases, fees will also rise, making Bitcoin impractical for payments less than around $500.
18With the coming integration of the Bitcoin wallet, Urbit ships can now send money between each other and associate payments with other ships (and soon applications/access rights). This building block will let us feel out the possibilities of inter-ship payments, but it's a time-buying measure at most: as BTC's price increases, fees will also rise, making Bitcoin impractical for payments less than around $500.
18
19
19However, the Lightning Network, built on top of Bitcoin, is rapidly advancing in functionality. It presents a unique, non-custodial solution to the high fees problem, although usability is still an issue. Urbit is perfectly positioned to take advantage of Lightning's strong points while drastically improving its useability.
20However, the Lightning Network, built on top of Bitcoin, is rapidly advancing in functionality. It presents a unique, non-custodial solution to the high fees problem, although usability is still an issue. Urbit is perfectly positioned to take advantage of Lightning's strong points while drastically improving its useability.
@@ -21,12 +22,15 @@ However, the Lightning Network, built on top of Bitcoin, is rapidly advancing in
21Once Lightning is integrated into Urbit, and maintained over time, Urbit will be a complete solution for building applications and receiving money for them through native payment rails.
22Once Lightning is integrated into Urbit, and maintained over time, Urbit will be a complete solution for building applications and receiving money for them through native payment rails.
22
23
23## Lightning Primer
24## Lightning Primer
24−The implementer is not expected to understand Lightning prior, but will have to do significant work to get up to speed on the protocol. What follows is a quick overview of what that entails.
25
25
26+The implementer is not expected to understand Lightning prior, but will have to do significant work to get up to speed on the protocol. What follows is a quick overview of what that entails.
27+
26−Lightning is a p2p network of nodes, which maintain "channels" between each other. Payments can then be routed from one peer to another by finding a path of channels with sufficient liquidity.
28+Lightning is a p2p network of nodes, which maintain "channels" between each other. Payments can then be routed from one peer to another by finding a path of channels with sufficient liquidity.
27
29
28### channels
30### channels
31+
29A channel consists of:
32A channel consists of:
33+
301. an on-chain Bitcoin transaction allocating funds to one side of the channel.
341. an on-chain Bitcoin transaction allocating funds to one side of the channel.
312. subsequent signed off-chain transactions re-allocating those initial funds, that can be posted to the blockchain in the event of unresponsiveness or malfeasance of the other party.
352. subsequent signed off-chain transactions re-allocating those initial funds, that can be posted to the blockchain in the event of unresponsiveness or malfeasance of the other party.
32
36
@@ -35,198 +39,242 @@ Peers open channels between each other in order to make payments in the network.
35Each channel maintains a set of commitment transactions over time, which are signed IOUs that can be enforced on-chain if necessary. These must be maintained and backed up in order to secure the channel.
39Each channel maintains a set of commitment transactions over time, which are signed IOUs that can be enforced on-chain if necessary. These must be maintained and backed up in order to secure the channel.
36
40
37### routing/payments
41### routing/payments
42+
38Lightning payments follow a set sequence:
43Lightning payments follow a set sequence:
44+
39−1. payee creates an invoice
45+1. payee creates an invoice
46+
40− - optionally with route hints ("take this path to reach me, because maybe I'm not publicly listed")
47+- optionally with route hints ("take this path to reach me, because maybe I'm not publicly listed")
41− - contains the hash of a secret (the "preimage")
48+- contains the hash of a secret (the "preimage")
49+
422. payee sends invoice to payer
502. payee sends invoice to payer
433. payer uses its channel graph to construct a route to payee that it thinks will work, using route hints if provided
513. payer uses its channel graph to construct a route to payee that it thinks will work, using route hints if provided
444. payer tries to send payment along that route. If it fails, payer updates its channel graph and retries
524. payer tries to send payment along that route. If it fails, payer updates its channel graph and retries
455. all hops along the route update their commitments to the new state
535. all hops along the route update their commitments to the new state
46
54
47### HTLCs
55### HTLCs
56+
48When we say "sending payments" above, what we really mean is each hop constructing a commitment to pay the next hop if the next hop provides it the secret to the hash from the invoice in step 1.
57When we say "sending payments" above, what we really mean is each hop constructing a commitment to pay the next hop if the next hop provides it the secret to the hash from the invoice in step 1.
49
58
50−The contracts implementing this are called "hashed timelock contracts", or HTLCs. For more background, [this resource is recommended](https://github.com/lnbook/lnbook/blob/develop/routing.asciidoc). The basic concept is that once the final destination receives payment, it sends the secret to the prior hop, who uses it to get paid from the hop prior, and so on back to the original payer.
59+The contracts implementing this are called "hashed timelock contracts", or HTLCs. For more background, [this resource is recommended](https://github.com/lnbook/lnbook/blob/develop/routing.asciidoc). The basic concept is that once the final destination receives payment, it sends the secret to the prior hop, who uses it to get paid from the hop prior, and so on back to the original payer.
51
60
52### interceptors
61### interceptors
62+
53Because Lightning uses onion routing, every hop along a payment path must use onion routing. In order to avoid implementing this for the last (inside Urbit) hop, we can use the [HTLC Interceptor](https://api.lightning.community/#htlcinterceptor) feature in the `lnd` RPC. This allows an `lnd` node to intercept an incoming payment request and inject its data into a new context, from which it can be handled.
63Because Lightning uses onion routing, every hop along a payment path must use onion routing. In order to avoid implementing this for the last (inside Urbit) hop, we can use the [HTLC Interceptor](https://api.lightning.community/#htlcinterceptor) feature in the `lnd` RPC. This allows an `lnd` node to intercept an incoming payment request and inject its data into a new context, from which it can be handled.
54
64
55### additional resources
65### additional resources
66+
56−Additional background will be provided to the implementer by the Foundation as needed, and we can also arrange meetings with Lightning Labs for help as the project progresses. [Mastering the Lightning Network](https://github.com/lnbook/lnbook) is another good place to get up to speed.
67+Additional background will be provided to the implementer by the Foundation as needed, and we can also arrange meetings with Lightning Labs for help as the project progresses. [Mastering the Lightning Network](https://github.com/lnbook/lnbook) is another good place to get up to speed.
57
68
58## Lightning in Urbit
69## Lightning in Urbit
70+
59−To speed and simplify implementation, we can use Urbit networking to provide full Lightning features without needing a full Lightning node (BOLT) implementation. In effect, we bridge "outside" Lightning to "inside Urbit", "interior" Lightning.
71+To speed and simplify implementation, we can use Urbit networking to provide full Lightning features without needing a full Lightning node (BOLT) implementation. In effect, we bridge "outside" Lightning to "inside Urbit", "interior" Lightning.
60
72
61Throughout the architecture, we refer to "interior" nodes: Urbit nodes running a Lightning implementation that do not network with the outside Lightning world.
73Throughout the architecture, we refer to "interior" nodes: Urbit nodes running a Lightning implementation that do not network with the outside Lightning world.
62
74
63### wins of this approach
75### wins of this approach
64
76
65−#### non-custodial *and* easy to use *and* powerful
77+#### non-custodial _and_ easy to use _and_ powerful
78+
66−Current Lightning implementations force users to pick 2 of 3: non-custodial, easy, rich/powerful. Wallets like Breez are non-custodial and easy to use, but can only do payments. Sphinx chat is more powerful, but you are forced to choose between ease and custody--if you want control over your money, you need to configure your own Lightning node.
79+Current Lightning implementations force users to pick 2 of 3: non-custodial, easy, rich/powerful. Wallets like Breez are non-custodial and easy to use, but can only do payments. Sphinx chat is more powerful, but you are forced to choose between ease and custody--if you want control over your money, you need to configure your own Lightning node.
67
80
68Lightning on Urbit is able to achieve all 3 of these properties. The key is that we implement Lightning features inside an Urbit environment, which gives full access to Urbit's programmable ids and OS. We also can use Urbit's networking to link interior ships to providers running `lnd` and connecting to the outside Lightning network. As a result, `volt` will enable much richer Lightning experiences, across a full range of applications.
81Lightning on Urbit is able to achieve all 3 of these properties. The key is that we implement Lightning features inside an Urbit environment, which gives full access to Urbit's programmable ids and OS. We also can use Urbit's networking to link interior ships to providers running `lnd` and connecting to the outside Lightning network. As a result, `volt` will enable much richer Lightning experiences, across a full range of applications.
69
82
70#### leverages existing Urbit features
83#### leverages existing Urbit features
84+
71−Lightning has some complex networking to implement, but because Urbit already has secure routing to named destinations in Ames, we can use that. This lets the work focus on implementing payment channels in Urbit.
85+Lightning has some complex networking to implement, but because Urbit already has secure routing to named destinations in Ames, we can use that. This lets the work focus on implementing payment channels in Urbit.
72
86
73#### clear upgrade paths
87#### clear upgrade paths
88+
74The initial architecture does make one tradeoff: interior nodes are always one hop away from their providers, and so the provider knows how much money nodes are sending and receiving. There are two ways to handle that, one immediately possible, and the other doable after an upgrade:
89The initial architecture does make one tradeoff: interior nodes are always one hop away from their providers, and so the provider knows how much money nodes are sending and receiving. There are two ways to handle that, one immediately possible, and the other doable after an upgrade:
90+
75−1. (ok, doable now) Nodes can upgrade to running their own providers. A busy node can configure its own `lnd` provider and connect to the Lightning network directly, while maintaining all of `volt`'s benefits in terms of integration of payments with Urbit. This is similar to the upgrade path that Sphinx chat provides, but still with non-custodial properties for users who don't take this path.
91+1. (ok, doable now) Nodes can upgrade to running their own providers. A busy node can configure its own `lnd` provider and connect to the Lightning network directly, while maintaining all of `volt`'s benefits in terms of integration of payments with Urbit. This is similar to the upgrade path that Sphinx chat provides, but still with non-custodial properties for users who don't take this path.
76−2. (better, doable in the future) We can implement Lightning's onion routing (not networking) in Urbit, allowing multi-hop paths within the Urbit network, with private payments *even for nodes not running lnd*.
92+2. (better, doable in the future) We can implement Lightning's onion routing (not networking) in Urbit, allowing multi-hop paths within the Urbit network, with private payments _even for nodes not running lnd_.
77
93
78### blockers
94### blockers
95+
79Private key/hot wallet management inside Urbit. This is needed to sign commitment transactions. We can use dummy versions of this in development, and then figure out the best way to handle it when the rest is in place. We can't use cold wallet or external wallet signing, because commitment transactions need to be signed on demand, without manual user interaction.
96Private key/hot wallet management inside Urbit. This is needed to sign commitment transactions. We can use dummy versions of this in development, and then figure out the best way to handle it when the rest is in place. We can't use cold wallet or external wallet signing, because commitment transactions need to be signed on demand, without manual user interaction.
80
97
81## architecture
98## architecture
99+
82`volt` consists of a “dumb” provider that bridges between `lnd` RPC calls and Urbit, and the “volt” agent that runs the Lightning protocol between interior Urbits.
100`volt` consists of a “dumb” provider that bridges between `lnd` RPC calls and Urbit, and the “volt” agent that runs the Lightning protocol between interior Urbits.
83
101
84### system diagram
102### system diagram
103+
85![system](https://s3.timlucmiptev.space/timluc/timluc-miptev/volt_arch.png)
104![system](https://s3.timlucmiptev.space/timluc/timluc-miptev/volt_arch.png)
86
105
87### payment flows diagram
106### payment flows diagram
107+
88![payments](https://s3.timlucmiptev.space/timluc/timluc-miptev/volt_payment_flow.png)
108![payments](https://s3.timlucmiptev.space/timluc/timluc-miptev/volt_payment_flow.png)
89
109
90### RFCs implemented
110### RFCs implemented
111+
91We implement everything related to channels, HTLCs, and invoices. We leave out all the Lightning networking and routing elements.
112We implement everything related to channels, HTLCs, and invoices. We leave out all the Lightning networking and routing elements.
92[RFCs located here](https://github.com/lightningnetwork/lightning-rfc/blob/master/00-introduction.md)
113[RFCs located here](https://github.com/lightningnetwork/lightning-rfc/blob/master/00-introduction.md)
114+
93−* RFC 02: channel opening, closing, HTLCs
115+- RFC 02: channel opening, closing, HTLCs
94−* RFC 03: commitment transactions
116+- RFC 03: commitment transactions
95−* RFC 05: on-chain transaction handling
117+- RFC 05: on-chain transaction handling
96−* RFC 11: invoices
118+- RFC 11: invoices
97
119
98### volt-provider lib
120### volt-provider lib
121+
99Bridge between `lnd` or similar Lightning server running on the same machine as a Urbit. This could be implemented as a separate agent or as a library that `volt` uses. My recommendation would be to implement first as the latter, and split out to an agent if other agents could potentially be using it.
122Bridge between `lnd` or similar Lightning server running on the same machine as a Urbit. This could be implemented as a separate agent or as a library that `volt` uses. My recommendation would be to implement first as the latter, and split out to an agent if other agents could potentially be using it.
123+
100−* Communicates with lnd over rpc
124+- Communicates with lnd over rpc
101−* passes HTLCs in and out
125+- passes HTLCs in and out
102−* accepts Hoon commands to open/close channels with outside nodes
126+- accepts Hoon commands to open/close channels with outside nodes
103
127
104#### heartbeat
128#### heartbeat
129+
105−* checks for connectivity with lnd every N seconds
130+- checks for connectivity with lnd every N seconds
106−* updates local agent and subscribers with status
131+- updates local agent and subscribers with status
107
132
108#### incoming payments
133#### incoming payments
134+
109−* intercepts the HTLC
135+- intercepts the HTLC
110−* injects the HTLC and metadata (next hop) into `volt`, where it's handled
136+- injects the HTLC and metadata (next hop) into `volt`, where it's handled
111−* receives a pre-image back and sends it back to the Lightning network (which RPC call?)
137+- receives a pre-image back and sends it back to the Lightning network (which RPC call?)
112
138
113#### outgoing payments
139#### outgoing payments
140+
114−* receives outgoing-payment request from itself
141+- receives outgoing-payment request from itself
115−* finds an outgoing route, if one exists
142+- finds an outgoing route, if one exists
116−* constructs an HTLC with the interior node
143+- constructs an HTLC with the interior node
117−* sends the outgoing payment using RPC `SendPaymentV2` with params:
144+- sends the outgoing payment using RPC `SendPaymentV2` with params:
118 - invoice
145 - invoice
119 - route hints
146 - route hints
120 - fee
147 - fee
121−* when the preimage is received, inject back into `volt` to settle the HTLC
148+- when the preimage is received, inject back into `volt` to settle the HTLC
122
149
123### volt
150### volt
151+
124Manager for interior Lightning in Urbit. `volt` handles everything related to channel management, HTLC creation and updating, and payment recording between ships.
152Manager for interior Lightning in Urbit. `volt` handles everything related to channel management, HTLC creation and updating, and payment recording between ships.
153+
125−* connects to provider
154+- connects to provider
126−* provides Lightning pubkey to provider
155+- provides Lightning pubkey to provider
127−* maintains pubkey->Urbit ship mappings
156+- maintains pubkey->Urbit ship mappings
128−* maintains channel and commitment data
157+- maintains channel and commitment data
129−* maintains HTLCs
158+- maintains HTLCs
130
159
131#### channels
160#### channels
161+
132−* open/close channels between provider nodes and others
162+- open/close channels between provider nodes and others
133−* monitor for fraud
163+- monitor for fraud
134−* serialize and encrypt commitments for backup
164+- serialize and encrypt commitments for backup
135−*note on backup*: commitments are critical for maintaining a channel's security, so we need functionality to back up that state to other Urbit ships whenever it changes, to avoid issues on breaches etc.
165+ _note on backup_: commitments are critical for maintaining a channel's security, so we need functionality to back up that state to other Urbit ships whenever it changes, to avoid issues on breaches etc.
136
166
137#### receive payment
167#### receive payment
168+
138−* build invoice (with routing hints)
169+- build invoice (with routing hints)
139−* send invoice to payer (can be interior or exterior)
170+- send invoice to payer (can be interior or exterior)
140−* accept incoming HTLC from provider
171+- accept incoming HTLC from provider
141−* settle the HTLC if it's for us, fail otherwise
172+- settle the HTLC if it's for us, fail otherwise
142−* update channel commitments
173+- update channel commitments
143−* update payment history, optionally with ship metadata
174+- update payment history, optionally with ship metadata
144
175
145#### send payment
176#### send payment
177+
146−* parse invoice from payee
178+- parse invoice from payee
147−* make sure that either
179+- make sure that either
148 - our node is our provider
180 - our node is our provider
149 - we have enough capacity to our provider
181 - we have enough capacity to our provider
150−* make a new HTLC commitment with provider (if remote provider)
182+- make a new HTLC commitment with provider (if remote provider)
151−* send payment request to provider
183+- send payment request to provider
152−* get result from provider and settle the HTLC
184+- get result from provider and settle the HTLC
153
185
154## user stories
186## user stories
187+
155### provider
188### provider
189+
156−As a provider, I can
190+As a provider, I can
191+
157−* open/close channels with outside lightning nodes through the `lnd` RPC
192+- open/close channels with outside lightning nodes through the `lnd` RPC
158−* accept Urbit ships as clients and open/close channels with them
193+- accept Urbit ships as clients and open/close channels with them
159−* intercept incoming HTLC payments for interior Lightning on my ship to handle
194+- intercept incoming HTLC payments for interior Lightning on my ship to handle
160−* receive settled HTLCs from the interior and inject them back into lnd to settle my exterior
195+- receive settled HTLCs from the interior and inject them back into lnd to settle my exterior
161
196
162### Urbit ship
197### Urbit ship
198+
163As an Urbit ship I can
199As an Urbit ship I can
200+
164−* select a provider and connect to it
201+- select a provider and connect to it
165−* open/close channels with my provider
202+- open/close channels with my provider
166−* receive payments from Urbit users
203+- receive payments from Urbit users
167−* make payments to other Urbit ships
204+- make payments to other Urbit ships
168−* make and receive payments with outside Lightning nodes
205+- make and receive payments with outside Lightning nodes
169−* view my transaction history
206+- view my transaction history
170
207
171## weaknesses and future upgrades
208## weaknesses and future upgrades
209+
172### weaknesses
210### weaknesses
211+
173As designed, the provider will see incoming and outgoing transaction flow. The best solution for that is to run your own local Lightning node. Some of upgrades below would address this flaw.
212As designed, the provider will see incoming and outgoing transaction flow. The best solution for that is to run your own local Lightning node. Some of upgrades below would address this flaw.
174
213
175### upgrades
214### upgrades
215+
176#### multi-provider support
216#### multi-provider support
217+
177Allowing a ship to maintain channels with multiple providers would stop one provider from knowing all your transactions. This isn't super-complicated; it's just extra Hoon work that should probably be started soon after v1 is complete.
218Allowing a ship to maintain channels with multiple providers would stop one provider from knowing all your transactions. This isn't super-complicated; it's just extra Hoon work that should probably be started soon after v1 is complete.
178
219
179#### Urbit-native onion routing
220#### Urbit-native onion routing
221+
180−It would be great for privacy if Urbit nodes could construct paths with multiple hops from the interior that could reach the exterior. The reverse is already doable (exterior payments reach multi-hop interior Urbit nodes).
222+It would be great for privacy if Urbit nodes could construct paths with multiple hops from the interior that could reach the exterior. The reverse is already doable (exterior payments reach multi-hop interior Urbit nodes).
181
223
182The multi-hops going out can’t be done until lnd implements ability to forward onion blobs to the wider network and inject the received preimage back in the RPC. This would also require us to be able to build onion routing (not terribly hard, but definitely adds scope).
224The multi-hops going out can’t be done until lnd implements ability to forward onion blobs to the wider network and inject the received preimage back in the RPC. This would also require us to be able to build onion routing (not terribly hard, but definitely adds scope).
183
225
184#### submarine swaps
226#### submarine swaps
227+
185It is possible to re-balance channel liquidity (shifting more of the balance to one side of the channel or the other) by combining a Lightning payment with an on-chain transaction. This is outside the scope of this project, but could potentially be extremely valuable for merchants running businesses on Urbit.
228It is possible to re-balance channel liquidity (shifting more of the balance to one side of the channel or the other) by combining a Lightning payment with an on-chain transaction. This is outside the scope of this project, but could potentially be extremely valuable for merchants running businesses on Urbit.
186
229
187## Resources
230## Resources
231+
188−* The libraries and full node interface provided by the `btc-wallet` project will be useful for parsing formats like `bech32` and for querying the state of the blockchain to monitor for cheating.
232+- The libraries and full node interface provided by the `btc-wallet` project will be useful for parsing formats like `bech32` and for querying the state of the blockchain to monitor for cheating.
189−* [Urbit Bitcoin Wallet](https://github.com/timlucmiptev/btc-agents)
233+- [Urbit Bitcoin Wallet](https://github.com/timlucmiptev/btc-agents)
190−* [Lightning RFC](https://github.com/lightningnetwork/lightning-rfc/blob/master/00-introduction.md)
234+- [Lightning RFC](https://github.com/lightningnetwork/lightning-rfc/blob/master/00-introduction.md)
191−* [lnd RPC API](https://api.lightning.community/)
235+- [lnd RPC API](https://api.lightning.community/)
192
236
193## contributor requirements
237## contributor requirements
238+
194−* 4+ years of experience as a backend developer
239+- 4+ years of experience as a backend developer
195−* Full-time availablity is ideal
240+- Full-time availablity is ideal
196−* Some familiarity with Hoon a strong positive
241+- Some familiarity with Hoon a strong positive
197−* Some programming familiarity with Bitcoin a strong positive
242+- Some programming familiarity with Bitcoin a strong positive
198−* Attend regular (weekly or bi-weekly) checkin meetings with an urbit.org director to provide status updates
243+- Attend regular (weekly or bi-weekly) checkin meetings with an urbit.org director to provide status updates
199
244
200### working process
245### working process
201−* The contributor will work with the Foundation coordinator to on-board fully to Lightning and Bitcoin within Urbit.
202−* After initial onboarding, the contributor will do a weekly check-in call with the coordinator, more frequently if needed/desired.
203−* The contributor will fork [this Github repo](https://github.com/urbit/volt) and submit PRs to it to get feedback.
204
246
205−## Milestones
247+- The contributor will work with the Foundation coordinator to on-board fully to Lightning and Bitcoin within Urbit.
248+- After initial onboarding, the contributor will do a weekly check-in call with the coordinator, more frequently if needed/desired.
249+- The contributor will fork [this Github repo](https://github.com/urbit/volt) and submit PRs to it to get feedback.
206
250
251+## Milestones
207
252
208### transaction/invoice RFCs
253### transaction/invoice RFCs
254+
2092 stars
2552 stars
210−* Implement RFCs 2, 3 and 11 from BOLT.
211−* Create the libs and types that further stages will depend on
212
256
257+- Implement RFCs 2, 3 and 11 from BOLT.
258+- Create the libs and types that further stages will depend on
213
259
214### on-chain transaction RFC
260### on-chain transaction RFC
261+
2152 stars
2622 stars
216−* implement RFC 5, on-chain transaction handling
217−* test that channels can be opened and closed in the manner described there
218
263
264+- implement RFC 5, on-chain transaction handling
265+- test that channels can be opened and closed in the manner described there
219
266
220### provider libraries
267### provider libraries
268+
2211 stars
2691 stars
222−* implement the `volt` provider that will talk to `lnd`
223−* create any configuration files needed to start `lnd` locally
224
270
271+- implement the `volt` provider that will talk to `lnd`
272+- create any configuration files needed to start `lnd` locally
225
273
226### `volt` agent and cleanup
274### `volt` agent and cleanup
275+
2272 stars
2762 stars
228−* create the Gall agent to manage transactions
229−* connect it to the provider libs
230−* use the RFC libs to wire up all on-chain transactions
231
277
232−
278+- create the Gall agent to manage transactions
279+- connect it to the provider libs
280+- use the RFC libs to wire up all on-chain transactions
content/grants/web-scraper.md+3−5
@@ -2,8 +2,8 @@
2title = "Web Scraper"
2title = "Web Scraper"
3date = 2020-02-07
3date = 2020-02-07
4[taxonomies]
4[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
6−grant_category = ["App Dev: Arvo"]
6+grant_category = ["App Dev", "Arvo"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "It is often useful for archival purposes to pull down an entire website, however many sites have a complex network of pages that would be difficult to download one at a time."
9description = "It is often useful for archival purposes to pull down an entire website, however many sites have a complex network of pages that would be difficult to download one at a time."
@@ -37,9 +37,7 @@ Do not begin work until your request to claim this bounty is accepted. We will a
37
37
38## Milestones
38## Milestones
39
39
40−
41### PR is merged
40### PR is merged
41+
421 stars
421 stars
43Your pull request is merged.
43Your pull request is merged.
44−
45−
content/grants/webrtc-gall-agent-and-external-app.md+15−11
@@ -2,8 +2,8 @@
2title = "WebRTC Gall Agent and external app"
2title = "WebRTC Gall Agent and external app"
3date = 2021-01-08
3date = 2021-01-08
4[taxonomies]
4[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
6−grant_category = ["App Dev: Other"]
6+grant_category = ["App Dev"]
7[extra]
7[extra]
8image = ""
8image = ""
9description = "Add WebRTC support to Urbit, including call/stream setup and teardown messaging and ICE/STUN/TURN advertisement and authentication."
9description = "Add WebRTC support to Urbit, including call/stream setup and teardown messaging and ICE/STUN/TURN advertisement and authentication."
@@ -27,15 +27,19 @@ This creates a natural synergy with URbit, as Urbit provides a hierarchical peer
27## Deliverables
27## Deliverables
28
28
29### WebRTC Gall Agent
29### WebRTC Gall Agent
30+
30This will serve as the _signalling_ channel for Urbit WebRTC applications. WebRTC requires an out-of-band channel (in standard usage usually implemented as an HTTP REST API) which can receive connectivity information from peers and distribute it to peers.
31This will serve as the _signalling_ channel for Urbit WebRTC applications. WebRTC requires an out-of-band channel (in standard usage usually implemented as an HTTP REST API) which can receive connectivity information from peers and distribute it to peers.
31
32
32### WebRTC calling app
33### WebRTC calling app
34+
33This would be an external (probably in-browser) app which would provide the initial end-user interface for
35This would be an external (probably in-browser) app which would provide the initial end-user interface for
34− - making two-way media calls
35− - making n-way media conference calls
36− - streaming media from one peer to many
37
36
37+- making two-way media calls
38+- making n-way media conference calls
39+- streaming media from one peer to many
40+
38−### ICE/STUN/Turn advertising
41+### ICE/STUN/Turn advertising
42+
39A separate Gall agent would initially allow stars to advertise ICE and STUN servers for use by sponsored planets and their moons. WebRTC depends on ICE and STUN to allow NATed and firewalled peers to negotiate peer-to-peer connections.
43A separate Gall agent would initially allow stars to advertise ICE and STUN servers for use by sponsored planets and their moons. WebRTC depends on ICE and STUN to allow NATed and firewalled peers to negotiate peer-to-peer connections.
40
44
41The last milestone would be to add TURN advertising with authentication to this agent. TURN servers provide relay services for peers which cannot directly connect, thus they are much more expensive, especially in terms of bandwidth, than ICE and and STUN. This should permit stars to specify which planets are authorized to use the TURN server, and, in the planet instantiation of the agent, seamlessly offer this information to WebRTC and other applications using the agent.
45The last milestone would be to add TURN advertising with authentication to this agent. TURN servers provide relay services for peers which cannot directly connect, thus they are much more expensive, especially in terms of bandwidth, than ICE and and STUN. This should permit stars to specify which planets are authorized to use the TURN server, and, in the planet instantiation of the agent, seamlessly offer this information to WebRTC and other applications using the agent.
@@ -44,6 +48,7 @@ The last milestone would be to add TURN advertising with authentication to this
44
48
45The proposer would eventually like to see media streas themselves propagated via Urbit. To achieve this, however,
49The proposer would eventually like to see media streas themselves propagated via Urbit. To achieve this, however,
46it would be necessary to:
50it would be necessary to:
51+
47- Create a performant method (likely a vane) for passing network messages which are not retained in the event log
52- Create a performant method (likely a vane) for passing network messages which are not retained in the event log
48- Significantly improve Urbit's NAT traversal and firewall hole-punching abilities to match the state of the art.
53- Significantly improve Urbit's NAT traversal and firewall hole-punching abilities to match the state of the art.
49 (this has been discussed with, among others, ~ritfed-tabrg and ~wolref-podlex).
54 (this has been discussed with, among others, ~ritfed-tabrg and ~wolref-podlex).
@@ -53,25 +58,24 @@ it would be necessary to:
53Edward Amsden ~ritpub-sipsyl is a vertan software developer and principal of Black River Software. He has spent the last 5+ years working on industrial IoT solutions in Haskell as a contractor for Plow Technologies.
58Edward Amsden ~ritpub-sipsyl is a vertan software developer and principal of Black River Software. He has spent the last 5+ years working on industrial IoT solutions in Haskell as a contractor for Plow Technologies.
54
59
55## References
60## References
61+
56[Mozilla Developer Network WebRTC walkthrough](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling)
62[Mozilla Developer Network WebRTC walkthrough](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling)
57[Dealing with connectivity](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity)
63[Dealing with connectivity](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity)
58
64
59## Milestones
65## Milestones
60
66
61−
62### Gall agents (WebRTC, ICE/STUN)
67### Gall agents (WebRTC, ICE/STUN)
68+
632 stars
692 stars
64A Gall agent which handles exchanging SDP messages for WebRTC applications
70A Gall agent which handles exchanging SDP messages for WebRTC applications
65Another Gall agent which handles advertising ICE and STUN servers from stars to planets
71Another Gall agent which handles advertising ICE and STUN servers from stars to planets
66
72
67−
68### Standalone WebRTC-via-Urbit app
73### Standalone WebRTC-via-Urbit app
74+
694 stars
754 stars
70Urbit app running in browser and hosted/interfaced via Eyre which provides the three categories of calling functionality described in the body of the proposal
76Urbit app running in browser and hosted/interfaced via Eyre which provides the three categories of calling functionality described in the body of the proposal
71
77
72−
73### Authenticated TURN advertising
78### Authenticated TURN advertising
79+
742 stars
802 stars
75Extension of the ICE/STUN Gall agent to allow stars to advertise an authenticated TURN server to some or all of their sponsored planets. Extension of the WebRTC application to use TURN servers.
81Extension of the ICE/STUN Gall agent to allow stars to advertise an authenticated TURN server to some or all of their sponsored planets. Extension of the WebRTC application to use TURN servers.
76−
77−
content/updates/2018-2-17-update.md+13−13
@@ -4,7 +4,7 @@ date = 2018-02-17
4description = "A short update from the Tlon team for the week of ~2018.2.17."
4description = "A short update from the Tlon team for the week of ~2018.2.17."
5aliases = ["/posts/2018-2-17-update/"]
5aliases = ["/posts/2018-2-17-update/"]
6[taxonomies]
6[taxonomies]
7−post_type = ["gifts"]
7+grant_type = ["Gift"]
8[extra]
8[extra]
9ship = "~tonlur-sarret"
9ship = "~tonlur-sarret"
10author = ""
10author = ""
@@ -12,25 +12,25 @@ author = ""
12
12
13Here's what we've all been up to this week:
13Here's what we've all been up to this week:
14
14
15−*Curtis* `~sorreg-namtyv` this week, on behalf of `urbit.org,` [awarded Winter 2018 star grants](https://fora.urbit.org/posts/~2018.2.13..20.22.22..bddb~) to Urbit's top recent contributors. The winners this term were:
15+_Curtis_ `~sorreg-namtyv` this week, on behalf of `urbit.org,` [awarded Winter 2018 star grants](https://fora.urbit.org/posts/~2018.2.13..20.22.22..bddb~) to Urbit's top recent contributors. The winners this term were:
16
16
17−- *Gold*, _64 stars_: Joe Bryan `~master-morzod`
17+- _Gold_, _64 stars_: Joe Bryan `~master-morzod`
18−- *Silver*, _32 stars_: Joshua Reagan `~taglux-nidsep`
18+- _Silver_, _32 stars_: Joshua Reagan `~taglux-nidsep`
19−- *Silver*, _32 stars_: Mikolaj `~ponmep-litsem`
19+- _Silver_, _32 stars_: Mikolaj `~ponmep-litsem`
20−- *Bronze*, _16 stars_: Assaf Berg `~rophex-hashes`
20+- _Bronze_, _16 stars_: Assaf Berg `~rophex-hashes`
21−- *Bronze*, _16 stars_: Matt Levan `~mastyr-bottec`
21+- _Bronze_, _16 stars_: Matt Levan `~mastyr-bottec`
22−- *Bronze*, _16 stars_: Anthony Arroyo `~poldec-tonteg`
22+- _Bronze_, _16 stars_: Anthony Arroyo `~poldec-tonteg`
23
23
24Thank you all again for helping bring Urbit to life!
24Thank you all again for helping bring Urbit to life!
25
25
26−*Galen* `~ravmel-ropdyl`, *Jimmy* `~haptyl-wanwes`, and *Chris* `~sigtus-hossyn` have been progressing further on the new Urbit frontend.
26+_Galen_ `~ravmel-ropdyl`, _Jimmy_ `~haptyl-wanwes`, and _Chris_ `~sigtus-hossyn` have been progressing further on the new Urbit frontend.
27
27
28−*Anton* `~pittyp-datfyn` has been working hard on making Urbit-flavored markdown, and subsequently, Fora, a lot less slow than it currently is.
28+_Anton_ `~pittyp-datfyn` has been working hard on making Urbit-flavored markdown, and subsequently, Fora, a lot less slow than it currently is.
29
29
30−*Mark* `~palfun-foslup` submitted an [`urbit/arvo` pull request](https://github.com/urbit/arvo/pull/610) that implements permissions for Urbit's Clay filesystem, which Ted merged this week. Among other things, this will play a pivotal role in the new _Collections_ app actively being worked on, so that an Urbit user can store private notes, create invite-only fora and blogs, and collect a private archive of typed documents, all while maintaining referential transparency in the global immutable namespace.
30+_Mark_ `~palfun-foslup` submitted an [`urbit/arvo` pull request](https://github.com/urbit/arvo/pull/610) that implements permissions for Urbit's Clay filesystem, which Ted merged this week. Among other things, this will play a pivotal role in the new _Collections_ app actively being worked on, so that an Urbit user can store private notes, create invite-only fora and blogs, and collect a private archive of typed documents, all while maintaining referential transparency in the global immutable namespace.
31
31
32−*Ted* `~rovnys-ricfer` and *Keaton* `~tonlur-sarret` have been working on a design for the data structures and control flow for the next version of Ford, Urbit's build system. We'll post to Fora once we've revised it some more.
32+_Ted_ `~rovnys-ricfer` and _Keaton_ `~tonlur-sarret` have been working on a design for the data structures and control flow for the next version of Ford, Urbit's build system. We'll post to Fora once we've revised it some more.
33
33
34−*Joshua* `~taglux-nidsep` rejoined [Mars Talk this week](https://www.youtube.com/watch?v=--hvpMqIeSA) as host with Ted and Keaton for Episode 21. We decided to take a break from deep technical talk to chat about the proposed _Nock 4K_ spec (a cosmic event in the Urbit universe), Josh's dissertation, Vere parallelism, and Urbit as a personal command center to call out to Earth blockchains.
34+_Joshua_ `~taglux-nidsep` rejoined [Mars Talk this week](https://www.youtube.com/watch?v=--hvpMqIeSA) as host with Ted and Keaton for Episode 21. We decided to take a break from deep technical talk to chat about the proposed _Nock 4K_ spec (a cosmic event in the Urbit universe), Josh's dissertation, Vere parallelism, and Urbit as a personal command center to call out to Earth blockchains.
35
35
36Have a great weekend, everyone!
36Have a great weekend, everyone!
pages/grants.js+131−51
@@ -13,6 +13,7 @@ import {
13 formatDate,
13 formatDate,
14 getGrantsCategories,
14 getGrantsCategories,
15 getGrantsTypes,
15 getGrantsTypes,
16+ getPostBySlug,
16} from "../lib/lib";
17} from "../lib/lib";
17
18
18function addTag(array, tag) {
19function addTag(array, tag) {
@@ -57,27 +58,92 @@ function toggleAll(currentArray, fullSet) {
57 }
58 }
58}
59}
59
60
60−export default function Grants({ posts, categories, types }) {
61+export default function Grants({ posts, categories, types, featuredGrants }) {
61 const [activeTags, setTags] = useState([]);
62 const [activeTags, setTags] = useState([]);
62 const [activeTypes, setTypes] = useState(types);
63 const [activeTypes, setTypes] = useState(types);
63 const [tab, setTab] = useState(0);
64 const [tab, setTab] = useState(0);
64
65
66+ const filteredPosts = posts.reduce((acc, post) => {
67+ // Posts are returned if they match both the selected category and selected tags, or if the user has no category filters set.
68+ const itemDidPass =
69+ (post.taxonomies.grant_category.some((r) => activeTags.includes(r)) ||
70+ activeTags.length === 0) &&
71+ post.taxonomies.grant_type.some((r) => activeTypes.includes(r));
72+ // Return the item if the above check has passed
73+ if (itemDidPass === true) {
74+ return [...acc, post];
75+ }
76+ return acc;
77+ }, []);
78+
65 return (
79 return (
66 <Container>
80 <Container>
67 <SingleColumn>
81 <SingleColumn>
68 <Header />
82 <Header />
83+ {
84+ // Heading and introduction
85+ }
69 <section className="layout-wide">
86 <section className="layout-wide">
70− <div className="measure">
87+ <div className="measure pb-16">
71 <h2 className="pb-16">Urbit Grants</h2>
88 <h2 className="pb-16">Urbit Grants</h2>
72− <p className="">
89+ <p className="mb-8">
73 Urbit is a community project. While anyone can contribute, we help
90 Urbit is a community project. While anyone can contribute, we help
74 focus development and reward exceptional contribution through our
91 focus development and reward exceptional contribution through our
75 grants program.
92 grants program.
76 </p>
93 </p>
94+ <p>
95+ Contributors of all types have access to a wide variety of
96+ resources while working on projects, including a supportive team
97+ at urbit.org, Tlon developers, and community mentors.
98+ </p>
99+ </div>
100+ <div className="p-8 bg-wall flex flex-col w-full rounded-lg space-y-4">
101+ <p>
102+ <i>
103+ “I paid off my student loans through the Urbit grants program,
104+ and had fun doing it!”
105+ </i>
106+ </p>
107+ <p>
108+ — Urbit Community Member <pre>~radbur-sivmus</pre>
109+ </p>
110+ </div>
111+ </section>
112+ {
113+ // Featured Grants
114+ }
115+ <section className="layout-wide">
116+ <div className="measure pb-16">
117+ <h2 className="pb-16">Featured Grants</h2>
118+ <p className="mb-8">
119+ These grants should give you a general idea of what kind of work
120+ we reward:
121+ </p>
122+ </div>
123+ <div className="flex flex-col md:flex-row md:space-x-4 md:space-y-0 space-y-4 space-x-0">
124+ {featuredGrants.map((grant) => {
125+ return (
126+ <Link href={grant.slug}>
127+ <div className="p-8 bg-washedGreen rounded-lg w-full md:w-1/3 cursor-pointer">
128+ <h4 className="pb-4">{grant.title}</h4>
129+ <p className="text-green pb-4">
130+ {grant.extra.reward} star
131+ {grant.extra.reward > 1 ? "s" : ""}{" "}
132+ {grant.extra.completed ? "awarded" : "pending"}
133+ </p>
134+ <p>{grant.extra.description}</p>
135+ </div>
136+ </Link>
137+ );
138+ })}
77 </div>
139 </div>
78 </section>
140 </section>
141+ {
142+ // Find a Grant
143+ }
79 <section className="layout-wide">
144 <section className="layout-wide">
145+ <h2 className="pb-8">Find A Grant</h2>
80− <div className="flex items-center measure pb-12">
146+ <div className="flex items-center measure pb-8">
81 <button
147 <button
82 onClick={() => {
148 onClick={() => {
83 setTab(0);
149 setTab(0);
@@ -89,10 +155,13 @@ export default function Grants({ posts, categories, types }) {
89 >
155 >
90 All
156 All
91 </button>
157 </button>
158+ {
159+ // NB Gavin: These should be auto-generated from the markdown metadata
160+ }
92 <button
161 <button
93 onClick={() => {
162 onClick={() => {
94 setTab(1);
163 setTab(1);
95− setTypes(["propsals"]);
164+ setTypes(["Proposal"]);
96 }}
165 }}
97 className={`tab-button-sm mr-4 ${
166 className={`tab-button-sm mr-4 ${
98 tab === 1 ? "text-black" : "text-gray"
167 tab === 1 ? "text-black" : "text-gray"
@@ -103,7 +172,7 @@ export default function Grants({ posts, categories, types }) {
103 <button
172 <button
104 onClick={() => {
173 onClick={() => {
105 setTab(2);
174 setTab(2);
106− setTypes(["bounties"]);
175+ setTypes(["Bounty"]);
107 }}
176 }}
108 className={`tab-button-sm mr-4 ${
177 className={`tab-button-sm mr-4 ${
109 tab === 2 ? "text-black" : "text-gray"
178 tab === 2 ? "text-black" : "text-gray"
@@ -114,7 +183,7 @@ export default function Grants({ posts, categories, types }) {
114 <button
183 <button
115 onClick={() => {
184 onClick={() => {
116 setTab(3);
185 setTab(3);
117− setTypes(["apprenticeships"]);
186+ setTypes(["Apprenticeship"]);
118 }}
187 }}
119 className={`tab-button-sm mr-4 ${
188 className={`tab-button-sm mr-4 ${
120 tab === 3 ? "text-black" : "text-gray"
189 tab === 3 ? "text-black" : "text-gray"
@@ -125,7 +194,7 @@ export default function Grants({ posts, categories, types }) {
125 <button
194 <button
126 onClick={() => {
195 onClick={() => {
127 setTab(4);
196 setTab(4);
128− setTypes(["gifts"]);
197+ setTypes(["Gift"]);
129 }}
198 }}
130 className={`tab-button-sm ${
199 className={`tab-button-sm ${
131 tab === 4 ? "text-black" : "text-gray"
200 tab === 4 ? "text-black" : "text-gray"
@@ -153,50 +222,52 @@ export default function Grants({ posts, categories, types }) {
153 })}
222 })}
154 </div>
223 </div>
155
224
156− {posts
225+ {
157− .reduce((acc, post) => {
226+ // <div className="pb-8">
158− // Posts are returned if they match both the selected category and selected tags, or if the user has no category filters set.
227+ // <TabCarousel index={tab}>
159− const itemDidPass =
228+ // <p>All {filteredPosts.length} Urbit grants</p>
160− (post.taxonomies.grant_category.some((r) =>
229+ // <p>{filteredPosts.length} proposals from community members to work on their own projects</p>
161− activeTags.includes(r)
230+ // <p>{filteredPosts.length} bounties for specific work needed by the Urbit Foundation</p>
162− ) ||
231+ // <p>{filteredPosts.length} apprenticeships for projects undertaken with a mentor</p>
163− activeTags.length === 0) &&
232+ // <p>{filteredPosts.length} gifts given post facto for exceptional contributions</p>
164− post.taxonomies.grant_type.some((r) => activeTypes.includes(r));
233+ // </TabCarousel>
165− // Return the item if the above check has passed
234+ // </div>
166− if (itemDidPass === true) {
167− return [...acc, post];
168− }
235+ }
169− return acc;
236+
170− }, [])
171− .map((post) => {
237+ {filteredPosts.map((post) => {
172− return (
238+ return (
173− <div
239+ <div
174− key={post.slug}
240+ key={post.slug}
175− className="mb-4 cursor-pointer bg-wall rounded-lg"
241+ className="mb-4 cursor-pointer bg-wall rounded-lg"
176− >
242+ >
177− <Link href={`/grants/${post.slug}`}>
243+ <Link href={`/grants/${post.slug}`}>
178− <div className="p-8">
244+ <div className="p-8">
179− <h3 className="type-ui mb-4">{post.title}</h3>
245+ <h3 className="type-ui mb-4">{post.title}</h3>
180− <p className="mb-4">{post.extra.description}</p>
246+ <p className="mb-4">{post.extra.description}</p>
181− <div className="flex w-full items-center justify-between">
247+ <div className="flex w-full items-center justify-between">
182− <p className="text-gray">
248+ <p className="text-gray">
183− <strong>Reward: </strong>
249+ <strong>Reward: </strong>
184− {post.extra.reward} star
250+ {post.extra.reward} star
185− {post.extra.reward > 1 ? "s" : ""}
251+ {post.extra.reward > 1 ? "s" : ""}
186− </p>
252+ </p>
187− <div className="flex">
253+ <div className="flex">
188− {post.taxonomies.grant_category.map((category) => (
254+ {post.taxonomies.grant_type.map((category) => (
189− <div className="bg-gray text-wall badge-sm m-1">
255+ <div className="bg-black text-wall badge-sm m-1">
190− {category}
256+ {category}
191− </div>
257+ </div>
192− ))}
258+ ))}
259+ {post.taxonomies.grant_category.map((category) => (
260+ <div className="bg-gray text-wall badge-sm m-1">
261+ {category}
193− </div>
262+ </div>
263+ ))}
194 </div>
264 </div>
195 </div>
265 </div>
196− </Link>
266+ </div>
197− </div>
267+ </Link>
268+ </div>
198− );
269+ );
199− })}
270+ })}
200 </section>
271 </section>
201 </SingleColumn>
272 </SingleColumn>
202 <Footer />
273 <Footer />
@@ -212,7 +283,16 @@ export async function getStaticProps() {
212 "grants"
283 "grants"
213 );
284 );
214
285
286+ // The layout expects exactly 3
287+ const featuredGrants = [
288+ "bitcoin-full-node-provider-and-wallet",
289+ "webrtc-gall-agent-and-external-app",
290+ "urbian-a-customized-linux-distribution-for-urbit-appliances",
291+ ].map((slug) =>
292+ getPostBySlug(slug, ["title", "slug", "date", "extra"], "grants")
293+ );
294+
215 return {
295 return {
216− props: { posts: posts, categories, types },
296+ props: { posts: posts, categories, types, featuredGrants },
217 };
297 };
218}
298}
pages/index.js+7−7
@@ -39,7 +39,7 @@ export default function Home({ posts, events, openGrantsCount }) {
39 <h2 className="p-0 m-0 pb-2">Introducing</h2>
39 <h2 className="p-0 m-0 pb-2">Introducing</h2>
40 <h2 className="text-green p-0 m-0">Port</h2>
40 <h2 className="text-green p-0 m-0">Port</h2>
41 </div>
41 </div>
42− <h3 className="pb-8">The Urbit client, now in beta.</h3>
42+ <h4 className="pb-8">The Urbit client, now in beta.</h4>
43 <p className="pb-24">
43 <p className="pb-24">
44 Getting into Urbit is now as simple as installing an app on your
44 Getting into Urbit is now as simple as installing an app on your
45 computer.
45 computer.
@@ -70,19 +70,19 @@ export default function Home({ posts, events, openGrantsCount }) {
70 <div className="flex flex-col md:flex-row w-full items-center bg-washedGreen px-8 py-8 rounded-xl">
70 <div className="flex flex-col md:flex-row w-full items-center bg-washedGreen px-8 py-8 rounded-xl">
71 <div className="flex items-center flex-col p-4 w-full">
71 <div className="flex items-center flex-col p-4 w-full">
72 <h2 className="text-green">200+</h2>
72 <h2 className="text-green">200+</h2>
73− <h3 className="text-green text-center pt-2">
73+ <h4 className="text-green text-center pt-2">
74 Urbit stars awarded
74 Urbit stars awarded
75− </h3>
75+ </h4>
76 </div>
76 </div>
77 <div className="h-0 w-0 md:h-24 md:w-4 bg-lightGreen" />
77 <div className="h-0 w-0 md:h-24 md:w-4 bg-lightGreen" />
78 <div className="flex items-center flex-col p-4 w-full">
78 <div className="flex items-center flex-col p-4 w-full">
79 <h2 className="text-green">1M+</h2>
79 <h2 className="text-green">1M+</h2>
80− <h3 className="text-green text-center pt-2">USD Rewarded</h3>
80+ <h4 className="text-green text-center pt-2">USD Rewarded</h4>
81 </div>
81 </div>
82 <div className="h-0 w-0 md:h-24 md:w-4 bg-lightGreen" />
82 <div className="h-0 w-0 md:h-24 md:w-4 bg-lightGreen" />
83 <div className="flex items-center flex-col p-4 w-full">
83 <div className="flex items-center flex-col p-4 w-full">
84 <h2 className="text-green">90+</h2>
84 <h2 className="text-green">90+</h2>
85− <h3 className="text-green text-center pt-2">Grants completed</h3>
85+ <h4 className="text-green text-center pt-2">Grants completed</h4>
86 </div>
86 </div>
87 </div>
87 </div>
88 <div className="measure py-12">
88 <div className="measure py-12">
@@ -104,10 +104,10 @@ export default function Home({ posts, events, openGrantsCount }) {
104 <section className="layout-narrow">
104 <section className="layout-narrow">
105 <div className="measure">
105 <div className="measure">
106 <h2 className="pb-12">Build on Urbit</h2>
106 <h2 className="pb-12">Build on Urbit</h2>
107− <h3 className="pb-12">
107+ <h4 className="pb-12">
108 Urbit is a personal OS designed from scratch to run peer-to-peer
108 Urbit is a personal OS designed from scratch to run peer-to-peer
109 applications.
109 applications.
110− </h3>
110+ </h4>
111 <p className="pb-12">
111 <p className="pb-12">
112 It solves the hard problems of implementing a peer-to-peer network
112 It solves the hard problems of implementing a peer-to-peer network
113 (including identity, NAT traversal, and exactly-once delivery) in
113 (including identity, NAT traversal, and exactly-once delivery) in
styles/globals.css+3−3
@@ -41,7 +41,7 @@ h2,
41
41
42h3,
42h3,
43.type-h3 {
43.type-h3 {
44− @apply text-lg md:text-xl lg:text-2xl font-semibold;
44+ @apply text-xl md:text-2xl lg:text-3xl font-bold;
45}
45}
46
46
47h4,
47h4,
@@ -76,11 +76,11 @@ button {
76}
76}
77
77
78.button-sm {
78.button-sm {
79− @apply flex px-4 py-1 rounded type-ui;
79+ @apply flex px-4 py-1 rounded-lg type-ui;
80}
80}
81
81
82.button-lg {
82.button-lg {
83− @apply flex px-4 lg:px-6 py-2 rounded-lg h-12 md:h-16 flex-center type-ui;
83+ @apply flex px-4 lg:px-6 py-2 rounded-xl h-12 md:h-16 flex-center type-ui;
84}
84}
85
85
86.badge-sm {
86.badge-sm {