on master help sign in
batch edit grants categories and types, add featured grants
commitb9b839df3288a2d381e5d2bee541624079cef775 authorGavin Atkinson <gvnatknsn@protonmail.com> dateWed 23 Jun 2021, 16:05 (5 years ago) parent692aea3
110 files changed+1322−1280
components/SingleColumn.js+7−7 content/blog/gifts-q3-2020.md+12−7 content/blog/urbit-grants-and-mid-2019-gifts.md+3−4 content/grants/-smol-future-sustained-knowledge-sharing-and-marketing.md+32−30 content/grants/a-book-about-urbit.md+12−15 content/grants/a-collaborative-web-mapping-system-for-urbit.md+33−42 content/grants/analytics-script.md+6−8 content/grants/antechamber.md+13−13 content/grants/art-by-urbit.md+3−7 content/grants/bart-train-tracker-landscape-tile.md+8−10 content/grants/bitcoin-full-node-provider-and-wallet.md+39−32 content/grants/bitcoin-key-derivation.md+17−15 content/grants/bitcoin-node-json-rpc-api-part-1.md+21−18 content/grants/bitcoin-node-json-rpc-api-part-2.md+21−18 content/grants/bitcoin-node-json-rpc-api-part-3.md+20−18 content/grants/bitcoin-node-json-rpc-api-part-4.md+21−18 content/grants/bitcoin-wallet-on-bridge.md+10−10 content/grants/boston-t-train-tracker-landscape-tile.md+8−12 content/grants/calendar-ui.md+8−9 content/grants/calendar.md+9−11 content/grants/comprehensive-local-server-and-mum-explanation-video.md+5−4 content/grants/content-saver.md+4−7 content/grants/cross-platform-desktop-urbit-app.md+21−13 content/grants/cta-train-tracker-landscape-tile.md+11−11 content/grants/display-eth-data.md+4−7 content/grants/docker-image-for-cloud-container-orchestration.md+9−8 content/grants/educational-guide-todomvc-urbit-edition.md+21−23 content/grants/escape.md+6−8 content/grants/ethereum-abi-parser.md+4−6 content/grants/gall-api-documentation.md+14−17 content/grants/go-airlock-library.md+4−7 content/grants/graph-store-documentation-guide.md+47−35 content/grants/haskell-airlock-library.md+3−7 content/grants/hoon-001-learner-efficiency-and-early-learner-resources.md+10−15 content/grants/host-three-college-university-urbit-meetups-1.md+6−7 content/grants/host-three-college-university-urbit-meetups-2.md+6−7 content/grants/host-three-college-university-urbit-meetups-3.md+7−7 content/grants/host-three-virtual-urbit-meetups.md+5−7 content/grants/host-two-urbit-meetups-1.md+7−8 content/grants/host-two-urbit-meetups-10.md+7−8 content/grants/host-two-urbit-meetups-11.md+6−7 content/grants/host-two-urbit-meetups-2.md+7−8 content/grants/host-two-urbit-meetups-3.md+7−8 content/grants/host-two-urbit-meetups-4.md+7−8 content/grants/host-two-urbit-meetups-5.md+7−8 content/grants/host-two-urbit-meetups-6.md+7−8 content/grants/host-two-urbit-meetups-7.md+7−8 content/grants/host-two-urbit-meetups-8.md+7−8 content/grants/host-two-urbit-meetups-9.md+7−8 content/grants/links-in-urbit-reference-docs.md+2−4 content/grants/llelogram.md+16−19 content/grants/matrices-in-hoon.md+9−10 content/grants/matrixriotim-bridge-bot.md+8−7 content/grants/minimal-urbit-os.md+6−7 content/grants/network-explorer-data-pipeline-http-api.md+21−19 content/grants/open-street-maps-data-importation.md+6−9 content/grants/overhaul-the-urbitorg-website.md+7−9 content/grants/ragnarok-online-on-urbit.md+5−8 content/grants/search-in-groups.md+6−7 content/grants/staff-the-urbit-help-desk-1.md+15−14 content/grants/staff-the-urbit-help-desk-2.md+15−14 content/grants/staff-the-urbit-helpdesk-east.md+5−9 content/grants/staff-the-urbit-helpdesk-west.md+5−6 content/grants/the-complete-guide-to-gall-and-landscape.md+32−26 content/grants/thread-documentation.md+34−26 content/grants/tor-nodes-relay-search-tile.md+5−9 content/grants/translate-key-parts-of-urbitorg-into-german.md+2−4 content/grants/translate-key-parts-of-urbitorg-into-korean.md+2−5 content/grants/translate-key-parts-of-urbitorg-into-norwegian.md+2−4 content/grants/translate-key-parts-of-urbitorg-into-spanish.md+2−4 content/grants/try-urbit-website.md+5−7 content/grants/typescript-airlock-library.md+3−6 content/grants/ua-collaborative-text-editor.md+9−7 content/grants/ua-filesharer.md+12−10 content/grants/ua-heads-up-poker.md+13−10 content/grants/ua-invoice-system.md+12−9 content/grants/ua-marketplace.md+3−5 content/grants/ucal-google-and-outlook-integration.md+24−26 content/grants/udon-syntax-highlighter.md+6−8 content/grants/unit-tests-for-json-parsing.md+9−11 content/grants/unit-tests-for-pure-algorithms.md+18−21 content/grants/unit-tests-for-sha-functions.md+10−12 content/grants/unit-tests-for-zuse-cryptographic-functions.md+10−12 content/grants/up-to-date-hoon-reference-card.md+5−7 content/grants/urbian-a-customized-linux-distribution-for-urbit-appliances.md+7−8 content/grants/urbit-api-for-elixir.md+5−7 content/grants/urbit-community-concierge-east-coast-2q2021.md+2−4 content/grants/urbit-community-concierge-east-coast.md+4−5 content/grants/urbit-community-concierge-west-coast-2q2021.md+2−4 content/grants/urbit-community-concierge-west-coast.md+4−5 content/grants/urbit-event-series.md+5−6 content/grants/urbit-explainer-video.md+3−5 content/grants/urbit-http-api-for-emacs-elisp.md+5−7 content/grants/urbit-http-api-for-kotlin.md+5−8 content/grants/urbit-http-api-for-rust.md+5−9 content/grants/urbit-http-interface-java-edition.md+8−14 content/grants/urbit-http-library-for-ruby.md+5−7 content/grants/urbit-lfs-filehosting.md+10−13 content/grants/urbit-online-meetup.md+2−4 content/grants/urbit-react-cookbook.md+6−8 content/grants/urbit-ship-and-star-hosting-and-troubleshooting-docs.md+3−5 content/grants/verifying-urbit-id-on-keybase.md+14−15 content/grants/video-content-manager.md+10−11 content/grants/volt-lightning-on-urbit.md+135−87 content/grants/web-scraper.md+3−5 content/grants/webrtc-gall-agent-and-external-app.md+15−11 content/updates/2018-2-17-update.md+13−13 pages/grants.js+131−51 pages/index.js+7−7 styles/globals.css+3−3
components/SingleColumn.js+7−7
@@ -1,8 +1,8 @@
11// Provides a limited-width column with all children center-aligned along the vertical axis
2−export default function SingleColumn({children}) {
3− return (
4− <div className='flex flex-col w-full items-center max-w-screen-xl'>
5− {children}
6− </div>
7− )
8− }
2+export default function SingleColumn({ children }) {
3+ return (
4+ <div className="flex flex-col w-full items-center max-w-screen-2xl">
5+ {children}
6+ </div>
7+ );
8+}
content/blog/gifts-q3-2020.md+12−7
@@ -3,7 +3,7 @@ title = "Gifts Q3 2020"
33date = 2020-09-23
44description = "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."
55[taxonomies]
6−post_type = ["gifts"]
6+grant_type = ["Gift"]
77[extra]
88author = "Josh Lehman"
99ship = "~wolref-podlex"
@@ -16,14 +16,15 @@ image ="https://media.urbit.org/site/posts/essays/gifts.png"
1616
1717<br>
1818
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.
2020
2121I'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.
2222
2323## 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.
2524
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.
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+
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.
2728
2829Tlon 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.
2930
@@ -32,9 +33,10 @@ Currently, the majority of available address space is owned by Tlon and urbit.or
3233Gifts 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.
3334
3435## Recipients
36+
3537Gifts 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.
3638
37−Gifts are being awarded using the following criteria:
39+Gifts are being awarded using the following criteria:
3840
3941**Bronze**: one star for continuous contributions over the last six months in at least one of the above areas.
4042
@@ -45,21 +47,24 @@ Gifts are being awarded using the following criteria:
4547Without further ado, here are the recipients:
4648
4749### Gold
50+
4851[`~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.
4952
5053### Silver
54+
5155- [`~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.
5256- [`~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.
5357- [`~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.
5458- [`~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.
5660
5761### Bronze
62+
5863- [`~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.
5964- [`~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.
6065- [`~nartes-fasrum`](https://twitter.com/nartesfasrum): `~nartes` evangelizes Urbit on Twitter by creating artwork, and maintains the popular food-centric group “Urbytes.”
6166- [`~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.
6368- `~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.
6469- [`~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.
6570- [`~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
44description = "Announcing an upcoming Urbit grants program and star gifts for Mid-2019."
55aliases = ["/posts/essays/urbit-grants-and-mid-2019-gifts", "/posts/urbit-grants-and-mid-2019-gifts"]
66[taxonomies]
7−post_type = ["gifts"]
7+grant_type = ["Gift"]
88[extra]
99author = "Galen Wolfe-Pauly + Alex Matzner"
1010ship = "~ravmel-ropdyl + ~mignyt-mogseb"
@@ -30,15 +30,14 @@ That is, our winners from the past nine months:
3030- John `~dirwex-dosrev` [@jfranklin9000](https://github.com/jfranklin9000)
3131- Assaf `~rophex-hashes` [@asssaf](https://github.com/asssaf)
3232
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.
3434
3535Thanks 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!
3636
3737## Coming soon: Our new grant program
3838
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:
4040
4141Making 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.
4242
4343Please [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 @@
22title = "-=[smol future]=- Sustained Knowledge Sharing and Marketing"
33date = 2021-01-15
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -14,79 +14,81 @@ completed = false
1414link = ""
1515+++
1616
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*
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_
1919
2020## 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.
2221
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.
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+
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.
2425
2526## 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)).
2727
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.
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+
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.
2931
3032## What
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.
33+
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.
3235
3336## Who
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).
37+
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).
3539
3640Let's do this and change the world.
3741
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)
3943
4044## Milestones
4145
42−
4346### Initial Documentation: Beginner's Guide
47+
44481 stars
4549Publish 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.
4650
47−
4851### Initial Marketing: Outreach + Messaging
52+
49531 stars
5054Research and outreach to engage existing Raspberry Pi users and key hardware manufacturers. Introduce the Urbit narrative into new communities, including memes/vibes.
5155
52−
5356### 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.
5657
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.
5760
5861### 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.
6162
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.
6265
6366### 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.
6667
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.
6770
6871### 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.
7172
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.
7275
7376### 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.
7677
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.
7780
7881### 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.
8182
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.
8285
8386### 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.
8687
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.
8790
8891### 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.
9192
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 @@
22title = "A book about Urbit"
33date = 2020-07-23
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -18,7 +18,7 @@ I'm writing a book-length history of Urbit. I'll also write, in an Urbit-centric
1818
19191. Preface. A short story about the year 2050. Introduction to the concept of Urbit.
20202. 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.
22224. Social history of computers
23235. Social history of computers, continued
24246. 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
2929
3030I'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.
3131
32−
3332## Milestones
3433
35−
3634### First Chapter
35+
37361 stars
3837Ch1. Actually completed 10/21, not 10/29
3938
40−
4139### Second Chapter
40+
42411 stars
4342Ch2
4443
45−
4644### Third Chapter
45+
47461 stars
4847Ch3
4948
50−
5149### Fourth Chapter
50+
52511 stars
5352Ch4
5453
55−
5654### Fifth Chapter
55+
57561 stars
5857Ch5
5958
60−
6159### Sixth Chapter
60+
62611 stars
6362Ch6
6463
65−
6664### Seventh Chapter
65+
67661 stars
6867Ch7
6968
70−
7169### Eighth Chapter
70+
72711 stars
7372Ch8
7473
75−
7674### Ninth Chapter
75+
77761 stars
7877Ch9
7978
80−
8179### Tenth Chapter
80+
82813 stars
8382Ch10. 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 @@
22title = "A Collaborative Web Mapping System for Urbit"
33date = 2020-09-03
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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
1414link = ""
1515+++
1616
17−A Collaborative Web Mapping System for Urbit
18−==================
17+# A Collaborative Web Mapping System for Urbit
1918
2019##### Goal
2120
22−
2321Allow small scale spatial data to be stored and retrieved in Urbit, for use in landscape and external applications, and shared across ships.
2422
2523##### Background/Motivation
2624
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.
2926
3027##### Overview
3128
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
3230
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).
3632
3733#### Stage 1 - A spatial store, spatial types, simple demo app
3834
39−
4035##### Spatial Document Store and Tools
4136
42− * 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]
44− * 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.
46− * Implement a test suite based around GeoJSON specification and the above generator.
47−
37+- A storage system for the GeoJSON[^1] format and following the GeoJSON feature model.
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]
39+- Implement spatial types/structures - geometry, position, point, polygon, linestring, multipoint, multipolygon, geometrycollection upon which can be built the geojson geometry and feature model.
40+- Implement a generator which can read a GeoJSON document in to the store, and can write a constructed document out of the store.
41+- Implement a test suite based around GeoJSON specification and the above generator.
42+
4843##### Hook, View and Landscape App
4944
50− * 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.
52− * 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.
45+- Implement the hook and view components of store-hook-view pattern atop the spatial data store.
46+- In this stage the system will only allow data to be viewed/edited on the local ship.
47+- Integrating spatial information with Landscape apps (which can render vector features using available javascript libraries/clients such as Openlayers and Leaflet).
48+- Overall, somewhat like 'urlayers' hackathon project (github.com/gusmacaulay/urlayers), but with a sane data store and following the store-hook-view pattern.
5449
5550#### Stage 2 - A Portal Store and Collaboration System
5651
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.
5857
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−
6358##### Hook/View/App
6459
65−* A hook/view/landscape app which allows for displaying and interacting with Portals;
66− * 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.
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.
60+- A hook/view/landscape app which allows for displaying and interacting with Portals;
61+ - Editing of individual Portals
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.
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.
6964
7065##### Footnotes
7166
72−[^1]: 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
67+[^1]:
68+ The very readable spec for geojson can be found here http://geojson.org. An overview of GeoJSON summarizing
69+ it's advantages and limitations can be found here https://macwright.com/2015/03/23/geojson-second-bite.html
7470
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.
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.
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.
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.
7873
7974##### About Me
8075
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).
82−
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).
8377
8478~lomped-firser
8579
86−
8780## Milestones
8881
82+### Stage 1
8983
90−### Stage 1
91842 stars
9285A spatial store, spatial types, simple demo landscape app
9386
94−
9587### Stage 2
88+
96892 stars
9790A Portal Store and Collaboration System
98−
99−
content/grants/analytics-script.md+6−8
@@ -2,8 +2,8 @@
22title = "Analytics Script"
33date = 2021-05-12
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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
2323
2424### Output
2525
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.
2727
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.
2929
3030### Inputs
3131
@@ -35,7 +35,7 @@ The generator should accept a few parameters:
3535- `from` (required): absolute date (`@da`) from which data should be pulled.
3636- `to` (optional): absolute date (`@da`) up until which point data should be pulled. Default is the current time.
3737- `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`.
3939
4040## Requirements & Resources
4141
@@ -45,9 +45,7 @@ The generator should accept a few parameters:
4545
4646## Milestones
4747
48−
4948### Work is complete
49+
50501 stars
5151The 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 @@
22title = "Antechamber"
33date = 2020-11-17
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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 = ""
1919
2020Galaxy 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).
2121
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.
2323
2424This 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:
2525
@@ -40,7 +40,7 @@ Bridge makes use of the [azimuth-js](https://github.com/urbit/azimuth-js) librar
4040
4141- [`removeClaim`](https://github.com/urbit/azimuth/blob/27ab0845779f7beba2376a82b0320c3efb39e03e/contracts/Claims.sol#L104): remove the specified claim.
4242- [`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)._
4444
4545With the above operations defined, your next task will be to extend Bridge to satisfy the following user stories:
4646
@@ -48,7 +48,7 @@ With the above operations defined, your next task will be to extend Bridge to sa
4848
4949(All stories are from the perspective of a point owner, and can be read: "As a point owner, ...")
5050
51−- I can manage Claims by navigating to *ID -> Advanced -> Manage Claims*
51+- I can manage Claims by navigating to _ID -> Advanced -> Manage Claims_
5252- 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))
5353- I can remove an existing claim
5454- 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
6060
6161### Part 2: Create the `senate-group-hook`
6262
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.
6464
6565#### User Stories
6666
@@ -72,16 +72,18 @@ All stories that refer to a "group admin" below refer to a group admin that is r
7272- As a group admin, all galaxies can also be invited to the group
7373
7474#### Implementation Notes
75+
7576- `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).
7677- 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.
7778- There should be a way to monitor only claim events that originate from galaxies
7879
7980## Deliverables
81+
8082Your solution to this bounty should include pull requests against these repositories:
8183
82−* [azimuth-js](https://github.com/urbit/azimuth-js)
83−* [bridge](https://github.com/urbit/bridge/)
84−* [antechamber](https://github.com/urbit/antechamber): The `senate-delegate-hook`-related files should go here.
84+- [azimuth-js](https://github.com/urbit/azimuth-js)
85+- [bridge](https://github.com/urbit/bridge/)
86+- [antechamber](https://github.com/urbit/antechamber): The `senate-delegate-hook`-related files should go here.
8587
8688## Expectations
8789
@@ -91,14 +93,12 @@ The director will ensure that you have access to the necessary resources to comp
9193
9294## Milestones
9395
94−
9596### Part 1: Extend Bridge to Support Claims
97+
96982 stars
9799Pull requests to azimuth-js and bridge, as specified above, have been merged.
98100
99−
100101### Part 2: Create the senate-group-hook
102+
1011032 stars
102104Pull requests against the antechamber repo mentioned above have been merged.
103−
104−
content/grants/art-by-urbit.md+3−7
@@ -2,7 +2,7 @@
22title = "Art by Urbit"
33date = 2020-08-27
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -20,13 +20,9 @@ For those already homesteading Urbit, part of the regular digest will be a pair
2020
2121I'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.
2222
23−
24−
2523## Milestones
2624
27−
2825### 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.
3126
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 @@
22title = "BART Train Tracker Landscape Tile"
33date = 2020-03-05
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
2121
2222We 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:
2323
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.
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.
2626- The open-source BART map linked below.
2727- 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).
2929
3030Resources:
3131
@@ -33,18 +33,16 @@ Resources:
3333- [BART API Developer License Agreement](https://www.bart.gov/schedules/developers/developer-license-agreement)
3434
3535### Contribution Guidelines:
36+
3637- Do not begin work until your request to claim this bounty is accepted.
3738- Submit your work as a pull request to the [urbit/urbit repo](https://github.com/urbit/urbit/pulls)
3839- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
3940- 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−
41+- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
4242
4343## Milestones
4444
45−
4645### Your PR is merged
46+
47473 stars
4848Your code is accepted and merged.
49−
50−
content/grants/bitcoin-full-node-provider-and-wallet.md+39−32
@@ -2,8 +2,8 @@
22title = "Bitcoin Full Node Provider and Wallet"
33date = 2020-09-23
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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 = ""
1515+++
1616
1717## Introduction
18+
1819Creation 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.
1920
2021This 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.
2122
2223## Background
24+
2325Starting 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.
2426
2527The 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.
2628
2729### Resources
28−* [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)
30−* [Original Bitcoin Wallet work](https://github.com/urbit/urbit/tree/mp/bitcoin)
30+
31+- [Bitcoin RPC API Pull Request](https://github.com/urbit/urbit/pull/1892)
32+- [Bitcoin RPC API Documentation](https://developer.bitcoin.org/reference/rpc/index.html)
33+- [Original Bitcoin Wallet work](https://github.com/urbit/urbit/tree/mp/bitcoin)
3134
3235## Overview
36+
3337The 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.
3438
3539In 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/
3943From 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.
4044
4145### Project Requirements
42−* Ships can send payment in Bitcoin to other ships.
43−* Ships can send payment in Bitcoin to addresses.
44−* Ships can connect to full nodes that they run on their own.
45−* Ships can connect to full nodes operated by other ships.
46−* Private keys are never entrusted to any other entity.
47−* Ships can view the transaction history for any Bitcoin account they own.
48−* Ships can view the balance of any Bitcoin account they own.
46+
47+- Ships can send payment in Bitcoin to other ships.
48+- Ships can send payment in Bitcoin to addresses.
49+- Ships can connect to full nodes that they run on their own.
50+- Ships can connect to full nodes operated by other ships.
51+- Private keys are never entrusted to any other entity.
52+- Ships can view the transaction history for any Bitcoin account they own.
53+- Ships can view the balance of any Bitcoin account they own.
4954
5055### User Stories
56+
5157The bridge to the Bitcoin network should satisfy the following stories.
52−* 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.
54−* 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.
56−* 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).
58+
59+- As a ship, I can connect to a full node that I control, becoming a host.
60+- As a ship, I can connect to a full node via another ship, becoming a client.
61+- As a host, I can control which other ships can access my full node.
62+- As a host or client, I can check the balance of my Bitcoin addresses.
63+- As a host or client, I can broadcast a signed transaction to the Bitcoin network.
64+- As a host or client, I can obtain a list of transactions for my Bitcoin account(s).
5865
5966The wallet should satisfy these stories:
60−* 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.
62−* As a ship, I can construct an unsigned transaction.
63−* 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.
65−* 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.
67−* As a payee, I can tell when I have received payment.
67+
68+- As a ship, I can see my overall balance for an account.
69+- As a ship, I can see all transactions for a specific account.
70+- As a ship, I can construct an unsigned transaction.
71+- As a ship, I can send Bitcoin to other ships, becoming a payer.
72+- As a payer, I can tell when my payment has succeeded.
73+- As a ship, I can receive bitcoin from other ships, becoming a payee.
74+- As a payee, I can provide a unique address for each transaction.
75+- As a payee, I can tell when I have received payment.
6876
6977### Proposed Architecture
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.
78+
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.
7180
7281### Expectations
82+
7383You 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.
7484
7585The 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.
7686
7787The 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.
7888
79−
8089## Milestones
8190
82−
8391### Implement the full node bridge/provider
92+
84933 stars
8594Create a set of gall agents to interface with a Bitcoin full node, access to which can be provided to other ships.
8695
87−
8896### Implement the wallet
97+
89983 stars
9099Create 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 @@
22title = "Bitcoin Key Derivation"
33date = 2020-10-02
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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 = ""
1515+++
1616
1717## Overview
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.
18+
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.
1920
2021Interacting 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.
2122
2223## User Stories
24+
2325This bounty should provide extensions to Bridge that satisfy the following user stories:
2426
25−* As an user, I can obtain my Bitcoin extended public key (xpub).
26−* As an user, I can copy my xpub to the clipboard.
27−* As an user, I can sign a constructed transaction.
28−* As an user, I can copy a signed transaction to the clipboard.
27+- As an user, I can obtain my Bitcoin extended public key (xpub).
28+- As an user, I can copy my xpub to the clipboard.
29+- As an user, I can sign a constructed transaction.
30+- As an user, I can copy a signed transaction to the clipboard.
2931
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.
3133
3234While 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.
3335
3436## Deliverables
37+
3538Your solution to this bounty should include pull requests against these repositories:
3639
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.
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.
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.
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.
3942
4043Design mockups will be provided to the worker upon claiming this bounty.
4144
4245## Expectations
46+
4347You 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.
4448
4549The 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
4852
4953### Resources
5054
51−* [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)
55+- [Urbit HD Wallet design](https://github.com/urbit/fora-posts/blob/master/proposals/posts/~2018.11.8..19.31.59..ba77~.md)
56+- [BIP-32 re: extended public keys](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#Extended_keys)
5357
5458## Milestones
5559
56−
5760### Work is Complete
61+
58622 stars
5963Pull 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 @@
22title = "Bitcoin Node JSON RPC API (Part 1)"
33date = 2019-11-15
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part one."
@@ -15,34 +15,37 @@ link = ""
1515+++
1616
1717#### Background
18+
1819To 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.
1920
2021Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
2122
2223#### Bounty Description
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).
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”:
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).
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.
24+
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+
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”:
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).
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.
2730
2831#### Resources
29−* [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/)
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).
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)
33−* [JSON RPC API standards](https://www.jsonrpc.org/specification)
32+
33+- [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
34+- [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
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).
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)
37+- [JSON RPC API standards](https://www.jsonrpc.org/specification)
3438
3539#### 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.
4040
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.
4245
46+## Milestones
4347
4448### Your PR is merged
49+
45501 stars
4651Your 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 @@
22title = "Bitcoin Node JSON RPC API (Part 2)"
33date = 2019-10-01
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part two."
@@ -15,34 +15,37 @@ link = ""
1515+++
1616
1717#### Background
18+
1819To 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.
1920
2021Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
2122
2223#### Bounty Description
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).
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”**:
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).
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.
24+
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+
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”**:
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).
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.
2730
2831#### Resources
29−* [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/)
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).
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)
33−* [JSON RPC API standards](https://www.jsonrpc.org/specification)
32+
33+- [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
34+- [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
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).
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)
37+- [JSON RPC API standards](https://www.jsonrpc.org/specification)
3438
3539#### 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.
4040
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.
4245
46+## Milestones
4347
4448### Your PR is merged
49+
45501 stars
4651Your 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 @@
22title = "Bitcoin Node JSON RPC API (Part 3)"
33date = 2019-10-01
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part three."
@@ -15,35 +15,37 @@ link = ""
1515+++
1616
1717#### Background
18+
1819To 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.
1920
2021Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
2122
2223#### Bounty Description
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).
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"**
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).
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.
24+
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+
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"**
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).
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.
2730
2831#### Resources
29−* [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/)
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).
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)
33−* [JSON RPC API standards](https://www.jsonrpc.org/specification)
32+
33+- [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
34+- [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
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).
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)
37+- [JSON RPC API standards](https://www.jsonrpc.org/specification)
3438
3539#### 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.
4040
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.
4145
4246## Milestones
4347
44−
4548### Your PR is merged
49+
46501 stars
4751Your 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 @@
22title = "Bitcoin Node JSON RPC API (Part 4)"
33date = 2019-10-01
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "Write a Remote Procedure Call library for a Bitcoin Gall app -- part four."
@@ -15,34 +15,37 @@ link = ""
1515+++
1616
1717#### Background
18+
1819To 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.
1920
2021Bitcoin Core is the reference implementation for Bitcoin nodes, which can be run as _bitcoind_ or _bitcoin-qt_.
2122
2223#### Bounty Description
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).
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"**.
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).
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.
24+
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+
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"**.
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).
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.
2730
2831#### Resources
29−* [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/)
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).
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)
33−* [JSON RPC API standards](https://www.jsonrpc.org/specification)
32+
33+- [Store/Hook proposal for userspace architecture](https://docs.google.com/document/d/1hS_UuResG1S4j49_H-aSshoTOROKBnGoJAaRgOipf54/edit?usp=sharing)
34+- [Urbit Gall App documentation](https://urbit.org/docs/learn/arvo/gall/)
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).
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)
37+- [JSON RPC API standards](https://www.jsonrpc.org/specification)
3438
3539#### 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.
4040
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.
4245
46+## Milestones
4347
4448### Your PR is merged
49+
45502 stars
4651Your 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 @@
22title = "Bitcoin Wallet on Bridge"
33date = 2019-12-09
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Azimuth"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Azimuth"]
77[extra]
88image = ""
99description = "Add Bitcoin support to the Bridge interface. "
@@ -17,19 +17,20 @@ link = ""
1717
1818### Background
1919
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.
2121
2222### Bounty Description
2323
2424Create 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.
2525
2626A completed wallet should:
27+
2728- Use the bitcoinjs-lib library for generating transactions and interfacing with Bitcoin
2829- Display Bitcoin balance (display as individual UTXOs)
2930- Generate new addresses to receive Bitcoin
3031- Support transaction signing and ability to broadcast to a full node specified by the node’s domain name
3132- 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.
3334- When logged in with a BIP 39 mnemonic, use that as-is.
3435- Then, proceed as per BIP32
3536
@@ -44,16 +45,15 @@ A completed wallet should:
4445- [BIP 39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)
4546
4647### Contribution Guidelines
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.
48+
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.
4850- Bounty claimant should have a good working knowledge of React and Bitcoin transactions.
4951- 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.
5153
5254## Milestones
5355
54−
5556### Pull request is accepted
56−1 stars
57−Your pull request containing all of the relevant code has been merged.
5857
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 @@
22title = "Boston T Train Tracker Landscape Tile"
33date = 2020-03-24
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "Create a landscape tile that tracks the Boston T train."
@@ -21,8 +21,8 @@ Create a backend for importing MBTA (Massachusetts Bay Transportation Authority)
2121
2222We 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:
2323
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.
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.
2626- A link to the official MBTA L Train map linked below, or an open-source workaround.
2727- A place (possibly a scrolling feed?) for MBTA alerts, using the ‘Alerts’ API stream.
2828- 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
3636## Contribution Guidelines:
3737
3838- 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).
40−- Please read the Developer License Agreement carefully and obey their guidelines for application naming and presentation of API data.
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.
4141- Submit your work as a pull request to the [urbit/urbit](https://github.com/urbit/urbit/pulls) repo
4242- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
4343- 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.
45−
46−
44+- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
4745
4846## Milestones
4947
50−
5148### Your PR is merged
49+
52503 stars
5351Your code is accepted and merged.
54−
55−
content/grants/calendar-ui.md+8−9
@@ -2,8 +2,8 @@
22title = "Calendar UI"
33date = 2020-07-16
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
2525The 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.
2626
2727The first stage is the development of working prototypes of the screens that the calendar will initially support. These include:
28− - 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 form to create new events with fields for the required properties per RFC 5545.
28+
29+- a monthly view with clickable dates to daily views;
30+- a daily view that lists the events in chronological order with a short description
31+- a form to create new events with fields for the required properties per RFC 5545.
3132
3233The 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.
3334The 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
4041
4142## Milestones
4243
43−
4444### Functional pages
45+
45461 stars
4647Build the necessary pages that will allow Landscape to interact with a Calendar Gall app
4748
48−
4949### Working integration with Gall app
50+
50511 stars
5152Fully 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 @@
22title = "Calendar"
33date = 2020-05-19
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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 &
2222
2323## Deliverables
2424
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.
2626
2727## Team
2828
@@ -36,7 +36,7 @@ Raghu Nimmagadda (~sovmep-ripsum), is a software engineer with a fair amount of
3636
3737The 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.
3838
39−So, why base anything on iCalendar at all? Two reasons:
39+So, why base anything on iCalendar at all? Two reasons:
4040
41411. 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.
42422. 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
8888END:VCALENDAR
8989```
9090
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.
9292
9393## Milestones
9494
95−
9695### VEVENT Parser
96+
97971 stars
9898A generator that can parse `.ics` files from the dojo containing VEVENTs into hoon data structures. This milestone will NOT support top-level calendar properties.
9999
100−
101100### Calendar Gall Agent
101+
1021021 stars
103103Creation of a gall agent that can be used to persist and read events from `.ics` files into a "calendar" on the running ship.
104104
105−
106105### Gall Agent Enrichment
106+
1071071 stars
108108Extend 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.
109109
110−
111110### Pubsub/Channel Support
111+
1121122 stars
113113Extend 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 @@
22title = "Comprehensive local, server and mum explanation video"
33date = 2021-01-31
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -17,12 +17,15 @@ link = ""
1717# Scope
1818
1919## First video
20+
2021Create 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.
2122
2223## Second Video
24+
2325Instruct 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.
2426
2527## Third Video
28+
2629Explain 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.
2730
2831# Additional Info
@@ -33,9 +36,7 @@ Granted star would be used to onboard friends, family and people from the easype
3336
3437## Milestones
3538
36−
3739### Record, edit and upload all videos
40+
38411 stars
3942Upload all three videos to Youtube, post links in proposal updates.
40−
41−
content/grants/content-saver.md+4−7
@@ -2,8 +2,8 @@
22title = "Content Saver"
33date = 2020-03-20
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
2222If 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)
2323The file should strip the content out of HTML and save it into the Markdown format.
2424
25−### Resources:
25+### Resources:
2626
2727- [The Instapaper API](https://www.instapaper.com/api)
2828- [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
3434- Submit your code as a PR to the [urbit](github.com/urbit/urbit] repository.
3535- You have 90 days from the time of approval to complete this bounty.
3636
37−
3837## Milestones
3938
40−
4139### PR is merged
40+
42412 stars
4342Your code is accepted and merged.
44−
45−
content/grants/cross-platform-desktop-urbit-app.md+21−13
@@ -2,8 +2,8 @@
22title = "Cross-Platform Desktop Urbit App"
33date = 2021-02-23
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "A native app that makes running Urbit near friction-less for everyone."
@@ -17,69 +17,77 @@ link = ""
1717# Taisho, A native cross-platform desktop Urbit app
1818
1919## Introduction
20+
2021Urbit 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.
2122
2223## Features
24+
2325The main feature of Taisho is that it runs Urbit for you, offering a simple interface without need for explanation to get running.
2426
2527- Ease of install, simply download and run
2628- Boots and runs new and existing planets, moons and comets (maybe stars in the future)
2729- **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
2830- **Azimuth integration**: operates locally for greater security
29− - generate arvo keyfile for booting planets
30− - handles keyfiles for user making first time booting less complicated
31− - ensures keyfiles get deleted after use
31+ - generate arvo keyfile for booting planets
32+ - handles keyfiles for user making first time booting less complicated
33+ - ensures keyfiles get deleted after use
3234
3335## Potential Future Paths Unlocked
36+
3437- **Plugin/Marketplace system**: would open pathways for easy transitions to hosting, planet buying, downloading and managing Urbit apps/plugins
3538- **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.
3639- **Education**: operations being run could be exposed through the UI so that people could learn what's going on behind the scenes in context.
3740
3841## App Architecture
42+
3943The 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.
4044
4145### Electron
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.
46+
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.
4348
4449### Front-end
50+
4551The 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.
4652
4753## Current Progress
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.
54+
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.
4956
5057## Star Usage
58+
5159If 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.
5260
5361## Final Thoughts
62+
5463People 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.
5564
5665---
5766
5867## About Me
68+
5969My 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.
6070
6171You 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.
6272
6373## Milestones
6474
75+### Ability to run basic ship features
6576
66−### Ability to run basic ship features
67771 stars
6878Includes 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.
6979
70−
7180### (Timeboxed) Proof of Concept for Windows
81+
72821 stars
7383To 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.
7484
75−
7685### Urbit Client Beta Release
86+
77874 stars
7888Significant 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.
7989
80−
8190### Azimuth Integration and Official Release
91+
82924 stars
8393Integrating 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 @@
22title = "CTA Train Tracker Landscape Tile"
33date = 2020-03-18
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "Build an app to track the schedule of the Chicago Transit Authority."
@@ -19,32 +19,32 @@ link = ""
1919
2020Create 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.
2121
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.
2323
2424The tile interface should encompass:
2525
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.
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.
2828- A link to the official CTA L Train map linked below, or an open-source workaround.
2929- A place (possibly a scrolling feed?) for CTA alerts, using the ‘Customer Alerts’ API.
3030- A place for CTA station elevator closure status information.
3131
3232### Resources
33+
3334- [CTA Developer Center](https://www.transitchicago.com/developers/)
3435- [CTA Branding Guide for Open API Apps](https://www.transitchicago.com/developers/branding/)
3536- [CTA Developer License Agreement](https://www.transitchicago.com/developers/terms/C)
3637
3738### Contribution Guidelines
39+
3840- 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.
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).
41−- Please read the Developer License Agreement and Branding Guide carefully and obey their guidelines for application naming and presentation of API data.
41+- Please note that this bounty is for the CTA Train API and not for the CTA Bus API.
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).
43+- Please read the Developer License Agreement and Branding Guide carefully and obey their guidelines for application naming and presentation of API data.
4244
4345## Milestones
4446
45−
4647### Your PR is merged
48+
47493 stars
4850Your code is accepted and merged.
49−
50−
content/grants/display-eth-data.md+4−7
@@ -2,8 +2,8 @@
22title = "Display ETH Data"
33date = 2020-01-31
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
2626- Set up with just contract address, retrieving ABI from etherscan.io API.
2727- Stores lists of events and relevant details per contract and config, and make them available to the user interface.
2828
29−##### User interface
29+##### User interface
3030
3131- Allows adding/removing watched contracts per the above app interface.
3232- 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
4545- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
4646- You have 90 days from the time of approval to complete this bounty.
4747
48−
4948## Milestones
5049
51−
5250### Work is finished
51+
53521 stars
5453Your work has been finished and accepted.
55−
56−
content/grants/docker-image-for-cloud-container-orchestration.md+9−8
@@ -2,7 +2,7 @@
22title = "Docker image for cloud container orchestration"
33date = 2020-12-21
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Dev Tool"]
77[extra]
88image = ""
@@ -17,30 +17,31 @@ link = ""
1717Many 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.
1818
1919# Deliverables
20+
2021- 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 keyfile
22+ - With a volume-mountable path for a ship
23+ - With a volume-mountable path for a keyfile
2324- CI integration to release the docker image as a GitHub artifact when version releases of Urbit are cut
2425- CI integration to publish the image on Docker Hub when version releases of Urbit are cut
2526- Documentation:
2627 - Reference for volume mounts and controlling the behavior of Urbit in a container
27− * Volume mount points for keyfiles or existing ships
28− * Ports to publish for Landscape and external API access.
28+ - Volume mount points for keyfiles or existing ships
29+ - Ports to publish for Landscape and external API access.
2930 - Quickstarts for deploying an Urbit ship to
3031 - Amazon ECS
3132 - Azure Container Instances
3233
3334# Team
35+
3436Edward 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
3537
3638## Milestones
3739
38−
3940### Merged PR: Nix docker integration
41+
40421 stars
43+
4144- Nix code to generate an Urbit docker image
4245- CI integration to release docker images on GitHub
4346- CI integration to publish docker images on Docker Hub
4447- Documentation
45−
46−
content/grants/educational-guide-todomvc-urbit-edition.md+21−23
@@ -2,7 +2,7 @@
22title = "Educational Guide: TodoMVC, Urbit Edition"
33date = 2021-01-05
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -24,7 +24,7 @@ Urbit.
2424The application we'll demonstrate is the classic [TodoMVC](http://todomvc.com/examples/react/#/) app, which many
2525developers will be immediately familiar with. Even if a newcomer isn't familiar
2626with 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.
2828
2929The classic TodoMVC example is a simple, functional and aesthetically pleasing
3030web-based todo list. What it lacks, however, is any form of persistence or
@@ -46,12 +46,12 @@ For reference, see the
4646application, which is a standalone application served from the `/~debug` URI.
4747
4848Our 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
5050file, whether it's a single-page application or not. With very little
5151imagination, it becomes easy to see how one could serve their personal blog at
5252`/~blog`, or a static "About Me" page at `/~about`.
5353
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
5555require a basic understanding of Hoon, Clay, Gall, and the development
5656environment more generally. We'll break this guide into two sections: one
5757focused 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
7171to use some basic generators.
7272
7373This 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, ..._:
7575
7676- I can install the Urbit binary.
7777- I can boot a fake ship for development.
@@ -91,11 +91,11 @@ it is or how it works.
9191
9292To start, let's talk a bit about what a pier is and its relation to the unix
9393filesystem, 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`
9595are doing (at a high level).
9696
9797That 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),
9999the concept of runes, and provide links to places where you can learn more about
100100all of these things.
101101
@@ -120,7 +120,7 @@ conversion from one to the other would be an informative bonus lesson.
120120By the end of this lesson:
121121
122122- I understand what Gall is at a high level.
123−- I know what an *agent* is.
123+- I know what an _agent_ is.
124124- I know how to start a gall agent.
125125- I can serve a static file (or directory of files) from a URI on my ship.
126126
@@ -210,7 +210,7 @@ By the end of this lesson:
210210
211211Urbit makes heavy use of [Command Query Responsibility
212212Segregation](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
214214simultaneously. This is contrasted with the more common Create Read Update
215215Delete (CRUD) model, in which our client is performing more direct manipulation
216216of 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:
2302301. Client queries for all todos to load into the page.
2312312. Client sets up a subscription to receive any new todos that are created as
232232 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,_
234234 since these responsibilities are separated.
2352354. After the new todo is created by the server, it emits an event which is
236236 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
254254building distributed systems. In a distributed system, each agent is interacting
255255with many others through message passing. Imagine a chat application, in which
256256many 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
258258any messages sent to you by other agents. In Urbit's approach, messages sent by
259259other 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.
261261
262262After explaining the rationale behind the approach, we'll want to demonstrate
263263how to extend `on-watch` to expose our todos, how to publish events to
@@ -286,14 +286,14 @@ By the end of this section:
286286- I understand how to set up a subscription on a foreign ship.
287287- I understand how to tear down subscriptions.
288288- I understand how to store and represent data belonging to multiple ships.
289−- I understand how to upgrade my application's state.
290−
289+- I understand how to upgrade my application's state.
291290
292291## Deliverables
292+
293293Your solution to this bounty should include:
294294
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.
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.
297297
298298## Expectations
299299
@@ -303,29 +303,27 @@ The director will ensure that you have access to the necessary resources to comp
303303
304304## Milestones
305305
306−
307306### Part 1: Serving Static Content
307+
3083082 stars
309309Sample code and guide are completed and ready for merge against urbit/docs.
310310
311−
312311### Part 2: Data Modeling
312+
3133131 stars
314314Sample code and guide are completed and ready for merge against urbit/docs.
315315
316−
317316### Part 3: Taking Action
317+
3183181 stars
319319Sample code and guide are completed and ready for merge against urbit/docs.
320320
321−
322321### Part 4: Client Integration
322+
3233233 stars
324324Sample code and guide are completed and ready for merge against urbit/docs.
325325
326−
327326### Part 5: Collaboration
327+
3283283 stars
329329Sample code and guide are completed and ready for merge against urbit/docs.
330−
331−
content/grants/escape.md+6−8
@@ -2,8 +2,8 @@
22title = "Escape"
33date = 2019-12-04
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "A reputation agent for Stars."
@@ -15,11 +15,11 @@ canceled = true
1515link = ""
1616+++
1717
18−"How much *Escape* does `~marzod` have?"
18+"How much _Escape_ does `~marzod` have?"
1919
2020When 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.
2121
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.
2323
2424This 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%)`)
2525
@@ -33,14 +33,12 @@ With this is mind the Beta library (`/lib/beta.hoon`) can be used with any app t
3333
3434## Milestones
3535
36−
3736### Gall Agent and Beta Reputation Library
37+
38382 stars
3939Delivery 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.
4040
41−
4241### Escape UI
42+
43432 stars
4444Delivery 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 @@
22title = "Ethereum ABI Parser"
33date = 2020-03-10
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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.
3838- [ABI Spec](https://solidity.readthedocs.io/en/v0.5.3/abi-spec.html)
3939
4040### Contribution Guidelines:
41+
4142- Do not begin work until your request to claim this bounty is accepted.
4243- Email your work to grants@urbit.org.
4344- Submit your work as a pull request on to the [urbit/urbit github repository](https://github.com/urbit/urbit).
4445- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
4546- You have 90 days from the time of approval to complete this bounty.
4647
47−
4848## Milestones
4949
50−
5150### PR is merged
51+
52522 stars
5353Your code is accepted and merged.
54−
55−
content/grants/gall-api-documentation.md+14−17
@@ -2,7 +2,7 @@
22title = "Gall API documentation"
33date = 2019-07-22
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -20,35 +20,32 @@ Gall is the Arvo kernel module that controls userspace applications. Understandi
2020
2121#### Bounty Description
2222
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.
2424
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`.
2626
2727#### Resources
2828
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.
31−* Familiarize yourself with the style of [reference documentation](https://urbit.org/docs/reference/).
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.
31+- Familiarize yourself with the style of [reference documentation](https://urbit.org/docs/reference/).
3232
3333#### Contribution Guidelines
3434
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.
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.
39−* Expect to receive requests for changes to your document.
40−
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.
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.
39+- Expect to receive requests for changes to your document.
4140
4241## Milestones
4342
44−
4543### First draft is submitted
46−0 stars
47−Your first draft is submitted as a pull request to the Docs repository.
4844
45+0 stars
46+Your first draft is submitted as a pull request to the Docs repository.
4947
5048### Final draft is merged
49+
51501 stars
5251Your edits are satisfactory, and your PR is merged to master.
53−
54−
content/grants/go-airlock-library.md+4−7
@@ -2,7 +2,7 @@
22title = "Go Airlock Library"
33date = 2020-06-25
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -14,7 +14,7 @@ completed = true
1414link = ""
1515+++
1616
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.
1818
1919Additionally, 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.
2020
@@ -24,22 +24,19 @@ Additionally, write a one-page explanation for the design choices for this libra
2424- https://github.com/baudtack/urlock-py
2525- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
2626
27−
2827###Contribution Guidelines:
2928
3029-Do not begin work until your request to claim this bounty is accepted.
30+
3131- 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.
3232- Your library should be uploaded and available in a format compatible with the package manager you feel most comfortable maintaining.
3333- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
3434- You have 90 days from the time of approval to complete this bounty.
3535- 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.
3636
37−
3837## Milestones
3938
40−
4139### Work is finished
40+
42413 stars
4342You 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 @@
22title = "Graph Store Documentation Guide"
33date = 2021-02-13
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -15,6 +15,7 @@ link = ""
1515+++
1616
1717## Overview
18+
1819Motivation: `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.
1920
2021This 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
2223Every aspect of `graph-store` will be covered: designing schemas, interacting with them inside the CLI or from Urbit apps, and accessing them from frontends.
2324
2425## Scope & Intended Audience
26+
2527### Scope
28+
2629The 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.
2730
2831We 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.
2932
3033### Audience 1: Developers Learning `graph-store`
34+
3135The 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)
3236
3337### Audience 2: Developers Working on Social Applications
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.
38+
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.
3540
3641## Sections
42+
3743### Explainer
3844
3945This 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`.
4046
4147Includes explanations of:
42−* full walkthrough of `graph-store` and `post` sur files
43−* how the indexes work
44−* how validation marks are used in the code to enforce schemas
45−* scry examples
46−* how mutations to `graph-store` happen
47−* how the frontend queries, receives updates from, and sends messages to the backend
48−* where JSON parsing is used and for what
49−* key differences in schema design for Chat vs Publish
50−* what would be needed to extend Chat and Publish in various ways
48+
49+- full walkthrough of `graph-store` and `post` sur files
50+- how the indexes work
51+- how validation marks are used in the code to enforce schemas
52+- scry examples
53+- how mutations to `graph-store` happen
54+- how the frontend queries, receives updates from, and sends messages to the backend
55+- where JSON parsing is used and for what
56+- key differences in schema design for Chat vs Publish
57+- what would be needed to extend Chat and Publish in various ways
5158
5259### Tutorial
53−* implementation of a simplified chan-style imageboard
54−* demonstrates threading and basic pagination
55−* simple `graph-store` reference embedding
60+
61+- implementation of a simplified chan-style imageboard
62+- demonstrates threading and basic pagination
63+- simple `graph-store` reference embedding
5664
5765### Cookbooks
58−* common social data patterns, and how to do each one
59−* how to make a schema
60−* poking from the frontend
61−* updating graph nodes
62−* deleting & archiving graphs
63−* querying data from any graph
64−* embedding references to other graph content
65−* simple algorithms to rank results, a la HN/Reddit
66+
67+- common social data patterns, and how to do each one
68+- how to make a schema
69+- poking from the frontend
70+- updating graph nodes
71+- deleting & archiving graphs
72+- querying data from any graph
73+- embedding references to other graph content
74+- simple algorithms to rank results, a la HN/Reddit
6675
6776### Reference
77+
6878Update https://urbit.org/docs/tutorials/hoon/graph/ to be more useful:
69−* links to relevant source files
70−* exact scrys available, with examples
79+
80+- links to relevant source files
81+- exact scrys available, with examples
7182
7283## User Stories
84+
7385As a developer without prior `graph-store` knowledge, I can:
74−* 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
86+
87+- Build a mental model of all aspects of the system with detailed explanations of actual production code
88+- Develop intuitions for how applications are built with it by designing and building my own social application
7689
7790As 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
8291
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
8496
97+## Milestones
8598
8699### Explainer
100+
871011 stars
88102Full written explainer posted online
89103
90−
91104### Tutorial
105+
921061 stars
93107Full written tutorial with tested code samples
94108
95−
96109### Cookbooks & Reference, Finalization
110+
971112 stars
98112Full written cookbook document, updated reference, and finalization of the content
99−
100−
content/grants/haskell-airlock-library.md+3−7
@@ -2,7 +2,7 @@
22title = "Haskell Airlock Library"
33date = 2020-06-25
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -14,7 +14,7 @@ completed = true
1414link = ""
1515+++
1616
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.
1818
1919Additionally, 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.
2020
@@ -24,7 +24,6 @@ Additionally, write a one-page explanation for the design choices for this libra
2424- https://github.com/baudtack/urlock-py
2525- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
2626
27−
2827### Contribution Guidelines:
2928
3029- 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
3433- You have 90 days from the time of approval to complete this bounty.
3534- 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.
3635
37−
3836## Milestones
3937
40−
4138### Your work is finished
39+
42403 stars
4341You 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 @@
22title = "Hoon 001: Learner efficiency and early-learner resources"
33date = 2020-02-10
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -24,27 +24,26 @@ The problem:
2424
2525We 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.
2626
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:
2828
2929Extensive 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.
3030Sheer 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.
3131It 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.
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.
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.
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.
3535
3636Our solution:
3737
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:
3939
4040An appropriately high-level introduction to coding generally, and to Hoon specifically, focusing on the broadest concepts, which a learner should focus on understanding first
4141Definitions 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
4242Visualization using color, white space and annotations to convey program flow and highlighting key points.
4343Pacing 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
4444Linear 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.
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−
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.
4847
4948Proposed work product/deliverable:
5049
@@ -65,17 +64,13 @@ Two of the types of Hoon programs
6564The naked generator
6665The say generator
6766Some 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
69−
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
7068
7169Expected hours: 125
7270
73−
7471## Milestones
7572
76−
7773### Full Project
74+
78753 stars
7976Full 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 @@
22title = "Host Three College/University Urbit Meetups (1)"
33date = 2020-03-02
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,11 +16,12 @@ link = ""
1616
1717### Background
1818
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.
2020
2121### Bounty Description
2222
2323This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
24+
2425- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
2526- 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.
2627- 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
2930- You must host at least three meetups.
3031
3132Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
33+
3234- Nock (Virtual Machines)
3335- Kelvin versioning
3436- Deterministic computing
@@ -49,12 +51,9 @@ Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best pra
4951- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
5052- You have 100 days from the time of approval to complete this bounty.
5153
52−
5354## Milestones
5455
55−
5656### 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.
5957
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 @@
22title = "Host Three College/University Urbit Meetups (2)"
33date = 2020-03-03
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,11 +16,12 @@ link = ""
1616
1717### Background
1818
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.
2020
2121### Bounty Description
2222
2323This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
24+
2425- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
2526- 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.
2627- 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
2930- You must host at least three meetups.
3031
3132Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
33+
3234- Nock (Virtual Machines)
3335- Kelvin versioning
3436- Deterministic computing
@@ -49,12 +51,9 @@ Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best pra
4951- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
5052- You have 100 days from the time of approval to complete this bounty.
5153
52−
5354## Milestones
5455
55−
5656### 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.
5957
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 @@
22title = "Host Three College/University Urbit Meetups (3)"
33date = 2020-03-03
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "Hold a meetup and presentation about Urbit."
@@ -16,11 +16,12 @@ link = ""
1616
1717### Background
1818
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.
2020
2121### Bounty Description
2222
2323This bounty is to host an Urbit meetup at your college/university. The meetup should meet the following criteria:
24+
2425- The meetup must be open to all students and faculty, and there must be a public web link for joining (like meetup.com)
2526- 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.
2627- 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
2930- You must host at least three meetups.
3031
3132Presentations don't have to be technical, but consider some of these topics to choose from for technical talks:
33+
3234- Nock (Virtual Machines)
3335- Kelvin versioning
3436- Deterministic computing
@@ -51,9 +53,7 @@ Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best pra
5153
5254## Milestones
5355
54−
5556### 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.
5857
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 @@
22title = "Host Three Virtual Urbit Meetups"
33date = 2020-03-27
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323It'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:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3636
3737#### Contribution Guidelines
3838
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.
4040- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4141- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
4242- You have 100 days from the time of approval to complete this bounty.
4343
4444## Milestones
4545
46−
4746### The third meetup is help
47+
48481 stars
4949The 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 @@
22title = "Host Two Urbit Meetups (1)"
33date = 2019-11-19
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (10)"
33date = 2019-11-26
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is help
47+
47480 stars
4849The second meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is help
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (11)"
33date = 2021-02-07
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -23,7 +23,7 @@ Urbit needs champions! The Urbit Foundation is looking for community members to
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (2)"
33date = 2019-11-19
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (3)"
33date = 2019-11-19
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The first meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (4)"
33date = 2019-11-19
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (5)"
33date = 2019-11-19
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (6)"
33date = 2019-11-21
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check it out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (7)"
33date = 2019-11-21
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (8)"
33date = 2019-11-22
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@urbit.org.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is held
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is held
52+
52531 stars
5354The 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 @@
22title = "Host Two Urbit Meetups (9)"
33date = 2019-11-26
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,14 +16,14 @@ link = ""
1616
1717#### Background
1818
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.
2020
2121#### Bounty Description
2222
2323This bounty is to host an Urbit meetup in your city. The meetup should meet the following criteria:
2424
2525- 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.
2727- The presentation or talk must be recorded and posted publicly online.
2828- You must promote the event vigorously; social media, a website, etc. Email support@urbit.org if you want a signal boost.
2929- 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
3535Check out our [guide](https://urbit.org/community/hosting-a-meetup/) to best practices for Urbit meetups.
3636
3737#### Contribution Guidelines
38−- Do not begin work until your request to claim this bounty is accepted.
38+
39+- Do not begin work until your request to claim this bounty is accepted.
3940- When applying to work on the bounty, tell us a little about yourself and mention which city you'd be hosting the meetups in.
4041- Proof of the meetups happening will be determined by the recordings of the presentations. Email links to these recordings to grants@tlon.io.
4142- You have 100 days from the time of approval to complete this bounty.
4243
4344## Milestones
4445
45−
4646### The first meetup is help
47+
47480 stars
4849The first meetup is held, and a recording of that meetup's talk or presentation is sent to grants@urbit.org.
4950
50−
5151### The second meetup is help
52+
52531 stars
5354The 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 @@
22title = "Links in Urbit Reference Docs"
33date = 2020-06-16
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -22,9 +22,7 @@ Consider, for contrast, a [random Python doc page](https://docs.python.org/3/lib
2222
2323## Milestones
2424
25−
2625### Links added to Reference documentation
26+
27271 stars
2828Concepts that refer to pages with documentation have links to said documentation.
29−
30−
content/grants/llelogram.md+16−19
@@ -2,8 +2,8 @@
22title = "Llelogram"
33date = 2020-07-29
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "Towards creating a political-econometric of federal legislation people can read as easily as a stock ticker: Llelogram"
@@ -15,42 +15,39 @@ canceled = true
1515link = ""
1616+++
1717
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\*
1919
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.
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.
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.
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.
2323
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!
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.
2725
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!
2827
2928## Milestones
3029
31−
3230### 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.
3531
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.
3634
3735### Compiling the tables
36+
38371 stars
3938Having 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
4039
41−
4240### Interpret the stimulus package
41+
43421 stars
4443Given 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
4544
46−
4745### 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.
5046
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.
5149
5250### 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.
5551
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 @@
22title = "Matrices in Hoon"
33date = 2020-02-21
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -21,16 +21,18 @@ Hoon currently does not have vector or array types.
2121### Bounty Description
2222
2323You must:
24+
2425- Define a Hoon data structure for n-dimensional arrays
2526- Spec out Hoon type signatures for basic array functions, with an informal but coherent plan for jetting
2627- Implement basic array functions
2728- Write corresponding jets
28−
29+
2930You approach could follow one of many paradigms, but below are some good ideas:
30−- BLAS-style matrix math
31+
32+- BLAS-style matrix math
3133- Tensorflow
3234- Futhark
33−
35+
3436Any paradigm is acceptable as long as it results in code whose performance is at least close to on-par with NumPy.
3537
3638### Resources
@@ -42,16 +44,13 @@ Any paradigm is acceptable as long as it results in code whose performance is at
4244
4345### Contribution Guidelines
4446
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.
4648- 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.
48−
49+- You have 180 days from the time of approval to complete this bounty.
4950
5051## Milestones
5152
52−
5353### Your PR is merged
54+
54555 stars
5556Your PR is accepted and merged.
56−
57−
content/grants/matrixriotim-bridge-bot.md+8−7
@@ -2,7 +2,7 @@
22title = "Matrix(Riot.im) bridge/bot"
33date = 2020-11-05
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,24 +16,25 @@ link = ""
1616+++
1717
1818## How
19+
1920Looking 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+
2022## Why
23+
2124I'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.
2425
26+## Stars
2527
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.
2629
2730## Milestones
2831
29−
3032### Working base client
33+
31341 stars
3235At 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.
3336
34−
3537### Web Client
38+
36391 stars
3740A 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 @@
22title = "Minimal Urbit OS"
33date = 2021-01-20
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -21,6 +21,7 @@ It will be designed and built with the larger goal of identifying and isolating
2121This 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.
2222
2323Possible environments:
24+
2425- local server
2526- single cloud server
2627- planet hosting provider
@@ -33,24 +34,22 @@ Qualifications: I recently installed Gentoo on a 20 year old ThinkPad for fun.
3334
3435## Milestones
3536
36−
3737### Proof of concept
38+
38391 stars
3940A minimal VM that supports booting and running a comet for several hours with a small amount of manual setup
4041
41−
4242### System architecture plan
43+
43441 stars
4445A 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.
4546
46−
4747### Usable OS image
48+
48492 stars
4950A reasonably stable and complete OS image that testers can use for hosting their planets
5051
51−
5252### Documentation and fixes
53+
53542 stars
5455Documentation 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 @@
22title = "Network Explorer: Data Pipeline & HTTP API"
33date = 2021-03-12
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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:
6666
6767Some notes about the above diagram:
6868
69−* The data model should be *agnostic to any particular PKI storage
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
69+- The data model should be _agnostic to any particular PKI storage
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
7272 a time-ordered traversal of `pki_event` (kind of like Arvo!). This means that
7373 many fields listed on the `node` table could instead be derived from analysis
7474 of the `pki_event` table. The implementer will be responsible for determining
7575 which fields should be represented on the `node` directly and which should be
7676 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
7878 Azimuth and `radar` only checks for activity from ships with keys that have
7979 been set on Azimuth. There will likely be a future in which we'll have a way
8080 to provide data about these ship types though.
@@ -107,9 +107,11 @@ could be either REST or GraphQL.
107107Produce the details for a single node.
108108
109109**Parameters**
110+
110111- `urbit_id`: `@p`
111112
112113**Returns**
114+
113115- `urbit_id`: `@p`
114116- `node_type`: `#{galaxy,star,planet,moon,comet}`
115117- `status`: `#{locked,unlocked,spawned,activated,online}`
@@ -130,6 +132,7 @@ Produce the details for a single node.
130132Produce a list of nodes, optionally with parameters. Absence of parameters queries all nodes.
131133
132134**Parameters**
135+
133136- `q`: `string` (optional: query term to search for)
134137- `node_types`: `[node_type]` (optional: produce just events for specific node types)
135138- `limit`: `int` (number of results to return)
@@ -143,11 +146,12 @@ An array of `node` in ascending order by `point`.
143146Produce the stream of PKI events for a specific Urbit ID, or globally in descending order of `time`.
144147
145148**Parameters**
149+
146150- `urbit_id`: `@p` (optional: unspecified implies global)
147151- `since`: `timestamp` (optional: unspecified implies all events)
148152- `node_types`: `[node_type]` (optional: produce just events for specific node types)
149153- `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\*\*
151155
152156**Returns**
153157An array of `pki_event` in descending order of `time`.
@@ -157,6 +161,7 @@ An array of `pki_event` in descending order of `time`.
157161Produce the network activity of a node or nodes.
158162
159163**Parameters**
164+
160165- `urbit_id`: `@p` (optional: specific ship to pull activity for)
161166- `since`: `timestamp` (optional: activity since provided time)
162167- `until`: `timestamp` (optional: activity up until the provided time)
@@ -170,6 +175,7 @@ are provided, queries activity within a range.
170175
171176**Returns**
172177Array of:
178+
173179- `urbit_id`: `@p`
174180- `date`: `date` (no time)
175181- `active`: `boolean` (active or inactive)
@@ -179,11 +185,11 @@ Array of:
179185That which is not explicitly specified here is up to the choice of the
180186implementer.
181187
182−* **Database**: PostgreSQL
183−* **Ethereum Interaction**: Infura
184−* **HTTP API methodology**: GraphQL or REST
185−* **ORM**: None. Implementer should be sufficiently familiar with SQL.
186−* **API Hosting**: The API will be hosted on `api.network.urbit.org` or
188+- **Database**: PostgreSQL
189+- **Ethereum Interaction**: Infura
190+- **HTTP API methodology**: GraphQL or REST
191+- **ORM**: None. Implementer should be sufficiently familiar with SQL.
192+- **API Hosting**: The API will be hosted on `api.network.urbit.org` or
187193 `network.urbit.org/api`.
188194
189195## Requirements
@@ -203,27 +209,23 @@ implementer.
203209
204210## Milestones
205211
206−
207212### Data ETL
213+
2082142 stars
209215The database has been designed and data from both sources is ingested
210216(extracted, transformed and loaded) on a regular schedule. Analysis can be
211217performed at the database layer.
212218
213−
214−
215219### HTTP API
220+
2162212 stars
217222An HTTP API is written per the above specification and deployed to
218223`https://api.network.urbit.org`.
219224
220−
221−
222225### UI Integration
226+
2232271 stars
224228The Network Explorer UI will be a separate proposal, but integration with an
225229interface inevitably surfaces oversights in the original design. An additional
226230star will be awarded for providing ongoing maintenance as-needed during
227231front-end integration.
228−
229−
content/grants/open-street-maps-data-importation.md+6−9
@@ -2,7 +2,7 @@
22title = "Open Street Maps Data Importation"
33date = 2020-07-09
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -19,9 +19,9 @@ Create a mapping tool which allows Open Street Maps data to be imported into Urb
1919
2020This grant should involve 2 major steps:
2121
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.
2323
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.
2525
2626Additionally, 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.
2727
@@ -36,18 +36,15 @@ Additionally, write a one-page explanation for your design choices in the readme
3636
3737- Do not begin work until your request to claim this bounty is accepted.
3838- 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.
40−- License: Make sure to read the above link carefully and credit OSM for the relevant data on any user-facing interface.
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.
4141- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
4242- You have 90 days from the time of approval to complete this bounty.
4343- Successful completion of this bounty may result in an invitation to complete other API bounties.
4444
45−
4645## Milestones
4746
48−
4947### You are finished
48+
50492 stars
5150Your work has been approved.
52−
53−
content/grants/overhaul-the-urbitorg-website.md+7−9
@@ -2,7 +2,7 @@
22title = "Overhaul the urbit.org website"
33date = 2021-02-19
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Design"]
77[extra]
88image = ""
@@ -29,7 +29,7 @@ This bounty is concerned only with the first part.
2929
3030## Phases
3131
32−We'll break the project into two phases—**design** and **implementation**.
32+We'll break the project into two phases—**design** and **implementation**.
3333
3434### Design
3535
@@ -39,18 +39,18 @@ Reworking urbit.org is a substantial undertaking and requires thoughtful plannin
39392. An **information architecture** that maps the flow of content such that the stories can be fulfilled.
40403. A set of **wireframes** that capture the navigational elements and content requirements in terms of the information architecture.
4141
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.
4343
4444### Implementation
4545
4646The path to implementation is necessarily dependent on the outcomes of the design phase, but we can make the following assumptions:
4747
4848- 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.
5050
5151## Other Requirements
5252
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).
5454- Frequent communication with a group of stakeholders on the project
5555
5656## Resources
@@ -60,14 +60,12 @@ The path to implementation is necessarily dependent on the outcomes of the desig
6060
6161## Milestones
6262
63−
6463### Designs are complete
64+
65652 stars
6666Completion of the contents of the Design section above.
6767
68−
6968### Implementation is complete
69+
70704 stars
7171Completion of the contents of the Implementation section above.
72−
73−
content/grants/ragnarok-online-on-urbit.md+5−8
@@ -2,8 +2,8 @@
22title = "Ragnarok Online on Urbit"
33date = 2019-08-30
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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 = ""
1717
1818# Ragnarok Online on Urbit
1919
20−
2120This 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.
2221
2322RO 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:
3635
3736## Milestones
3837
38+### Gall app
3939
40−### Gall app
41401 stars
4241A 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
4342
44−
4543### Frontend UI
44+
46451 stars
4746Character 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.
4847
49−
5048### Working connection to RO server
49+
51501 stars
5251A 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 @@
22title = "Search in groups"
33date = 2021-02-25
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "Implement a basic text search in groups channels"
@@ -14,7 +14,8 @@ completed = false
1414link = ""
1515+++
1616
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+
1819> Even the sort of thing that could be thrown together in an afternoon would be 1000x better than nothing.
1920
2021and 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
2829
2930## Milestones
3031
31−
3232### search generator done
33+
33341 stars
3435↑
3536
36−
3737### shoe app done
38+
38391 stars
3940↑
40−
41−
content/grants/staff-the-urbit-help-desk-1.md+15−14
@@ -2,7 +2,7 @@
22title = "Staff the Urbit Help Desk (1)"
33date = 2020-02-19
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,25 +16,28 @@ link = ""
1616
1717### Background
1818
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.
2020
2121### Bounty Description
2222
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−- Help users boot ships
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+
25+- Help users boot ships
2526- Recommend relevant resources
2627- Troubleshoot errors users encounter using Urbit
2728- Observe and document bugs
2829- File issues to the relevant Github repo
2930
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.
3132
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.
3334
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.
3536
3637### Resources
38+
3739Chatrooms to Monitor:
40+
3841- [Urbit.live Telegram](https://t.me/UrbitLiveGroup)
3942- [Urbit Discord](https://discord.gg/Mae2bk7)
4043- `~dopzod/urbit-help`
@@ -45,17 +48,15 @@ Repos to file issues:
4548- [Urbit Issues on Github](https://github.com/urbit/urbit/issues)
4649
4750### 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
5251
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
5356
5457## Milestones
5558
56−
5759### You have been staffing a help desk for 30 days
60+
58611 stars
5962You have been responsive daily for 30 days.
60−
61−
content/grants/staff-the-urbit-help-desk-2.md+15−14
@@ -2,7 +2,7 @@
22title = "Staff the Urbit Help Desk (2)"
33date = 2020-02-21
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -16,25 +16,28 @@ link = ""
1616
1717### Background
1818
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.
2020
2121### Bounty Description
2222
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−- Help users boot ships
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+
25+- Help users boot ships
2526- Recommend relevant resources
2627- Troubleshoot errors users encounter using Urbit
2728- Observe and document bugs
2829- File issues to the relevant Github repo
2930
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.
3132
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.
3334
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.
3536
3637### Resources
38+
3739Chatrooms to Monitor:
40+
3841- [Urbit.live Telegram](https://t.me/UrbitLiveGroup)
3942- [Urbit Discord](https://discord.gg/Mae2bk7)
4043- `~dopzod/urbit-help`
@@ -45,17 +48,15 @@ Repos to file issues:
4548- [Urbit Issues on Github](https://github.com/urbit/urbit/issues)
4649
4750### 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
5251
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
5356
5457## Milestones
5558
56−
5759### You have been staffing a help desk for 30 days
60+
58611 stars
5962You have been responsive daily for 30 days.
60−
61−
content/grants/staff-the-urbit-helpdesk-east.md+5−9
@@ -2,7 +2,7 @@
22title = "Staff the Urbit Helpdesk, East"
33date = 2021-01-25
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -23,6 +23,7 @@ Urbit is pretty novel, and newcomers are often confused by the many new concepts
2323You 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.
2424
2525You’re expected to:
26+
2627- Help users boot ships
2728- Recommend relevant resources
2829- Troubleshoot errors users encounter using Urbit
@@ -42,19 +43,14 @@ It will help if you identify yourself periodically as a support resource so that
4243
4344### Contribution Guidelines
4445
45−- 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
46+- Do not begin work until your request to claim this bounty is accepted.
47+- Claimant will be online and responsive, 4 hours daily, for 30 days
4748- It may be requested that staffers modify their hours to improve coverage of issues.
4849- Estimated work: 2 - 4 hours per day
4950
50−
51−
52−
5351## Milestones
5452
55−
5653### Work Complete
54+
57551 stars
5856You've spent the last month helping out newcomers.
59−
60−
content/grants/staff-the-urbit-helpdesk-west.md+5−6
@@ -2,7 +2,7 @@
22title = "Staff the Urbit Helpdesk, West"
33date = 2020-12-03
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -23,6 +23,7 @@ Urbit is pretty novel, and newcomers are often confused by the many new concepts
2323You 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.
2424
2525You’re expected to:
26+
2627- Help users boot ships
2728- Recommend relevant resources
2829- Troubleshoot errors users encounter using Urbit
@@ -42,16 +43,14 @@ It will help if you identify yourself periodically as a support resource so that
4243
4344### Contribution Guidelines
4445
45−- 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
46+- Do not begin work until your request to claim this bounty is accepted.
47+- Claimant will be online and responsive, 4 hours daily, for 30 days
4748- It may be requested that staffers modify their hours to improve coverage of issues.
4849- Estimated work: 2 - 4 hours per day
4950
5051## Milestones
5152
52−
5353### Work Complete
54+
54551 stars
5556You'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 @@
22title = "The Complete Guide to Gall and Landscape"
33date = 2020-06-22
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -17,61 +17,67 @@ link = ""
1717# Gall Guide Deliverables
1818
1919## PoC and Prior Work
20+
2021The 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)
2122
2223My ["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.
2324
2425## Overview and Goals
2526
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.
2728
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.
2930
3031The 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.
3132
3233## Table of Contents
3334
3435### Basic Backend
35−* Workflow Setup(2 hours)
36−* The 10 Arms of Gaal: App Structure(4 hours)
37−* App Lifecycle and State(5 hours)
38−* Importing Code and Static Resources(5 hours)
39−* Poke and Watch(6 hours)
36+
37+- Workflow Setup(2 hours)
38+- The 10 Arms of Gaal: App Structure(4 hours)
39+- App Lifecycle and State(5 hours)
40+- Importing Code and Static Resources(5 hours)
41+- Poke and Watch(6 hours)
4042
4143(From this point onward in the course, all lessons will be in the context of building up a full-featured application)
42−* Communicating with the Outside World (HTTP)(2 hours)
43−* Setting up Data Structures(3 hours)
44+
45+- Communicating with the Outside World (HTTP)(2 hours)
46+- Setting up Data Structures(3 hours)
4447
4548### Frontend
46−* Landscape: GUI for Gall](3 hours)
47−* Walkthrough: Landscape Skeleton](4 hours)
48−* Communicating with Landscape (Subscriptions)](3 hours)
49−* Everything about React for Landscape](6 hours)
49+
50+- Landscape: GUI for Gall](3 hours)
51+- Walkthrough: Landscape Skeleton](4 hours)
52+- Communicating with Landscape (Subscriptions)](3 hours)
53+- Everything about React for Landscape](6 hours)
5054
5155### More Backend
52−* Calling the OS (Arvo)](3 hours)
53−* Communicating with Other Ships](3 hours)
54−* Store/Hook/View](4 hours)
56+
57+- Calling the OS (Arvo)](3 hours)
58+- Communicating with Other Ships](3 hours)
59+- Store/Hook/View](4 hours)
5560
5661### Appendix
57−* Troubleshooting & FAQ](1 hour)
58−* Types Used in Gall Apps](2 hours)
59−* Common Hoon Idioms Used in Gall](1 hour)
62+
63+- Troubleshooting & FAQ](1 hour)
64+- Types Used in Gall Apps](2 hours)
65+- Common Hoon Idioms Used in Gall](1 hour)
6066
6167## 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.
6368
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.
6570
71+## Milestones
6672
6773### Written Guide
74+
68751 stars
6976Full written guide (table of contents in proposal) posted online.
7077
71−
7278### Videos Courses & Full Sample Application
79+
73801 stars
74−* Videos made for the course
75−* Full sample application finished and polished with extensive commenting, integrated into the lessons
7681
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 @@
22title = "Thread Documentation"
33date = 2021-02-18
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -15,61 +15,69 @@ link = ""
1515+++
1616
1717# Thread Documentation Bounty
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.
18+
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.
1920
2021Fortunately, 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.
2122
2223This bounty is detailed for clarity, but the individual sections shouldn't take too long to write and don't need to be extremely long.
2324
2425## scope
25−* `ted` directory
26−* `spider` usage in Gall
27−* calling from the dojo with `-`
28−* the `bind`/`;<` chaining model
29−* how `spider` manages its threads
26+
27+- `ted` directory
28+- `spider` usage in Gall
29+- calling from the dojo with `-`
30+- the `bind`/`;<` chaining model
31+- how `spider` manages its threads
3032
3133### not in scope
32−* aqua
34+
35+- aqua
3336
3437## sections
38+
3539### tutorial
36−* Walk through building a thread that composes multiple threads
37−* Will be all from the Dojo using `-`, no Gall
38−* Should include the following calls
40+
41+- Walk through building a thread that composes multiple threads
42+- Will be all from the Dojo using `-`, no Gall
43+- Should include the following calls
3944 - setting a timeout
4045 - pass cards to Arvo/Gall
4146 - HTTP call
4247 - read a file from Clay
4348
4449### explainer
45−* 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
47−* explain how `spider` sends `strand-input` to threads and how it determines which threads to send to.
50+
51+- use `lib/strand.hoon` code to explain `bind` and the `%wait` etc. objects
52+- explain how all threads MUST take `strand-input` as an argument
53+- explain how `spider` sends `strand-input` to threads and how it determines which threads to send to.
4854
4955### how-to
50−* Call out to outside web services, chaining calls in the manner of promises/async in other languages
51−* make system calls to Arvo
52−* receive/handle responses from Arvo
53−* use `spider` to integrate with Gall
54−* use `retry` and `backoff` for calls that may fail
56+
57+- Call out to outside web services, chaining calls in the manner of promises/async in other languages
58+- make system calls to Arvo
59+- receive/handle responses from Arvo
60+- use `spider` to integrate with Gall
61+- use `retry` and `backoff` for calls that may fail
5562
5663### reference
64+
5765This 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
5866
5967## user stories
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.
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.
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
63−* as a Gall app developer or maintainer, I should be able to integrate threads into my Gall apps
68+
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.
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.
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
72+- as a Gall app developer or maintainer, I should be able to integrate threads into my Gall apps
6473
6574## resources available
75+
6676`~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.
6777
6878## Milestones
6979
70−
7180### Complete the bounty
81+
72821 stars
7383Everything in "sections" is done.
74−
75−
content/grants/tor-nodes-relay-search-tile.md+5−9
@@ -2,8 +2,8 @@
22title = "Tor Nodes Relay Search Tile"
33date = 2020-03-31
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "An Urbit-native Tor search-tool."
@@ -19,7 +19,7 @@ link = ""
1919
2020Create 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.
2121
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.
2323
2424### Resources
2525
@@ -33,15 +33,11 @@ We would like to create an Urbit-native Tor node relay search tool which replica
3333- Submit your work as a pull request to the [urbit/urbit](https://github.com/urbit/urbit) repo
3434- When applying to work on the bounty, tell us a little about yourself and some projects you’ve worked on in the past.
3535- 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.
37−
38−
36+- Successful completion of this bounty may result in an invitation to complete other API integration bounties.
3937
4038## Milestones
4139
42−
4340### Your PR is merged
41+
44423 stars
4543Your code is accepted and merged.
46−
47−
content/grants/translate-key-parts-of-urbitorg-into-german.md+2−4
@@ -2,7 +2,7 @@
22title = "Translate key parts of Urbit.org into German"
33date = 2021-01-19
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -22,9 +22,7 @@ I am a native German speaker with a long history of speaking and writing English
2222
2323## Milestones
2424
25−
2625### Translation of Key Website Content
26+
27271 stars
2828Introduction, 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 @@
22title = "Translate key parts of Urbit.org into Korean"
33date = 2021-01-30
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -20,12 +20,9 @@ I am a native English speaker with a high level of competence in written Korean.
2020
2121At 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.
2222
23−
2423## Milestones
2524
26−
2725### Translation of Key Website Content
26+
28271 stars
2928Introduction, 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 @@
22title = "Translate key parts of Urbit.org into Norwegian"
33date = 2021-04-07
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -24,9 +24,7 @@ In addition to contributing with my translation work, I can also contribute to t
2424
2525## Milestones
2626
27−
2827### Translation of key site content
28+
29291 stars
3030Introduction, 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 @@
22title = "Translate key parts of Urbit.org into Spanish"
33date = 2021-03-20
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -22,9 +22,7 @@ I am a fluent speaker with 20+ years of experience with the language and have li
2222
2323## Milestones
2424
25−
2625### Translation of key site content
26+
27271 stars
2828Introduction, 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 @@
22title = "Try Urbit Website"
33date = 2021-02-14
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "A website where prospective Martians can experience the Landscape interface without any technical chops."
@@ -14,19 +14,17 @@ completed = false
1414link = ""
1515+++
1616
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.
1818
1919The 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.
2020
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.
2222
2323The 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.
2424
2525## Milestones
2626
27−
2827### Project complete
28+
29292 stars
3030Website and sever side scripts complete and deployed.
31−
32−
content/grants/typescript-airlock-library.md+3−6
@@ -2,7 +2,7 @@
22title = "Typescript Airlock Library"
33date = 2020-06-26
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -14,7 +14,7 @@ completed = true
1414link = ""
1515+++
1616
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.
1818
1919Additionally, 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.
2020
@@ -24,7 +24,6 @@ Additionally, write a one-page explanation for the design choices for this libra
2424- https://github.com/baudtack/urlock-py
2525- [UrlockPy as an example of an Airlock integration](https://github.com/urbit/docs/pull/892)
2626
27−
2827### Contribution Guidelines:
2928
3029- 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
3635
3736## Milestones
3837
39−
4038### Your work is finished
39+
41403 stars
4241You 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 @@
11+++
2−title = "Apprenticeship: Collaborative text editor and annotator"
2+title = "Collaborative text editor and annotator"
33date = 2021-05-27
44[taxonomies]
5−grant_type = ["apprenticeships"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Apprenticeship"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "A line-based editor for looking at text and code."
@@ -14,14 +14,16 @@ completed = false
1414work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0019&prefill_Grant+Name=Collaborative%20text%20editor%20and%20annotator"
1515+++
1616
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.
1818
1919Could 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.
2020
2121This project is a good introduction to social apps in Urbit, and could become the framework for a larger product if the apprenticeship prototype works.
2222
2323### User Stories
24+
2425As a user I can:
25−* create projects
26−* create text files within those projects
27−* invite other users to my project, with varying permissions
26+
27+- create projects
28+- create text files within those projects
29+- invite other users to my project, with varying permissions
content/grants/ua-filesharer.md+12−10
@@ -1,9 +1,9 @@
11+++
2−title = "Apprenticeship: Filesharer"
2+title = "Filesharer"
33date = 2021-05-27
44[taxonomies]
5−grant_type = ["apprenticeships"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Apprenticeship"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
1414work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0022&prefill_Grant+Name=Filesharer"
1515+++
1616
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.
1818
1919### User Stories
20+
2021As a user, I can:
21−* add custom marks to store new filetypes in Urbit
22−* choose a fileserver to connect to with LFS or S3 for larger binaries
23−* add files to my system, with metadata
24−* specify the users and groups that have access to my files
25−* view the files I have access to on other ships
26−* download files to my local machine
22+
23+- add custom marks to store new filetypes in Urbit
24+- choose a fileserver to connect to with LFS or S3 for larger binaries
25+- add files to my system, with metadata
26+- specify the users and groups that have access to my files
27+- view the files I have access to on other ships
28+- download files to my local machine
content/grants/ua-heads-up-poker.md+13−10
@@ -1,9 +1,9 @@
11+++
2−title = "Apprenticeship: Heads-up poker"
2+title = "Heads-up poker"
33date = 2021-05-27
44[taxonomies]
5−grant_type = ["apprenticeships"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Apprenticeship"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
1616
1717A 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.
1818
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.
2020
2121### User Stories
22+
2223As a gameserver admin I can:
23−* set up a server to handle shuffling/dealing
24−* take API calls from players who want to initiate a game.
24+
25+- set up a server to handle shuffling/dealing
26+- take API calls from players who want to initiate a game.
2527
2628As a player, I can:
27−* connect to another player with the app to initiate a game
28−* specify which gameserver I trust to handle card shuffling/dealing
29−* 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)
29+
30+- connect to another player with the app to initiate a game
31+- specify which gameserver I trust to handle card shuffling/dealing
32+- play iterated hands of poker
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 @@
11+++
2−title = "Apprenticeship: Invoice system"
2+title = "Invoice system"
33date = 2021-05-27
44[taxonomies]
5−grant_type = ["apprenticeships"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Apprenticeship"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
1919This 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.
2020
2121### User Stories
22+
2223As a user, I can:
23−* 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
25−* 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
24+
25+- specify on-Urbit payment methods from which I will make or receive payments
26+- request a specific payment amount from another user, specifying the method(s) that can be used for payment
27+- tell a user that you've made a payment, with reference to some receipt that they can verify.
28+- receive payments with app and time metadata
2729
2830As another application on a user's Urbit I can:
29−* generate invoices to be sent to other users
30−* query the invoice store to see which payments have been made for me
31+
32+- generate invoices to be sent to other users
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 @@
11+++
2−title = "Apprenticeship: Marketplace"
2+title = "Marketplace"
33date = 2021-05-27
44[taxonomies]
5−grant_type = ["apprenticeships"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Apprenticeship"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
2020
2121Simple versions of this can be implemented to learn userspace programming, and a particular good design could become its own product.
2222
23−
2423## User Stories
2524
2625As a user I can:
@@ -31,4 +30,3 @@ As a user I can:
3130- buy products
3231- sell products
3332- 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 @@
22title = "ucal Google and Outlook Integration"
33date = 2021-05-13
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
2222
2323This is a project intended primarily for developer use. Once it is completed, it will:
2424
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
27− - enable future integration with WebRTC for native Urbit video calls and ephemeral chats
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
27+- enable future integration with WebRTC for native Urbit video calls and ephemeral chats
2828
2929### End Product
3030
@@ -34,22 +34,22 @@ The step of "pushing" events to Google, Outlook and other ucal users should be i
3434
3535todo: find out which files the below goes into and where the ICS type is.
3636
37− - mar
37+- mar
3838 -- modify the grow arm to take an ICS Hoon type and convert to a valid ICS calendar file
39− - lib
39+- lib
4040 -- add a converter from ICS to
41− - ted
41+- ted
4242 -- take a user's authentication info
4343 -- pull Google or Outlook ICS file
4444 -- convert into Hoon format
4545 -- push Hoon calendar events to Google or Outlook
4646 -- push calendar events to other ucal users
47− - tests
47+- tests
4848 -- unit tests of outside ICS files parsing into Hoon format
4949 -- unit tests of Hoon calendar structures into ICS
5050 -- unit test producing "cards" representing calendar event updates
5151 -- thread testing of syncing
52− - possible external code
52+- possible external code
5353 -- handle situation when extra auth flows are needed with Google/MS.
5454 -- could require a webpage to be opened to generate an OAuth code or similar
5555
@@ -59,26 +59,24 @@ This code will not need to be merged into Urbit core.
5959
6060As a developer, I want to
6161
62− - input credentials for a Google or Outlook calendar
63− - retrieve ICS files associated with those credentials
64− - create/modify events
65− - push out created/modified events as updates to ucal or external users
62+- input credentials for a Google or Outlook calendar
63+- retrieve ICS files associated with those credentials
64+- create/modify events
65+- push out created/modified events as updates to ucal or external users
6666
6767### Resources and Workflow
68− - Improvements will be PRs to the https://github.com/taalhavras/ucal/ project
69− - Contributor will check in weekly with a Foundation director
70− - 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/
68+
69+- Improvements will be PRs to the https://github.com/taalhavras/ucal/ project
70+- Contributor will check in weekly with a Foundation director
71+- Current ucal contributors
72+- Example article on pulling ICS files from those services: https://www.digitaltrends.com/computing/how-to-sync-outlook-calendar-with-google-calendar/
7273
7374### Milestones
7475
75−1) Data conversion, sync and calendar updates
76+1. Data conversion, sync and calendar updates
7677 Estimate: 21 days - a month | Reward: 2 Stars
7778
78− - handle credential imput and auth flows
79− - handle syncing
80− - push updates to Google/Outlook calendars from CLI
81− - push updates to Urbit Calendar
82−
83−
84−
79+ - handle credential imput and auth flows
80+ - handle syncing
81+ - push updates to Google/Outlook calendars from CLI
82+ - push updates to Urbit Calendar
content/grants/udon-syntax-highlighter.md+6−8
@@ -2,7 +2,7 @@
22title = "Udon syntax highlighter"
33date = 2019-07-19
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Dev Tool"]
77[extra]
88image = ""
@@ -25,19 +25,17 @@ Write a CodeMirror language-mode file that results in correct syntax highlightin
2525
2626#### Resources
2727
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`.
30−* Familiarize yourself with the Udon compiler in the `cram.hoon` file under `/lib`.
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`.
30+- Familiarize yourself with the Udon compiler in the `cram.hoon` file under `/lib`.
3131
3232#### Contribution Guidelines
3333
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
3535
3636## Milestones
3737
38−
3938### The highlighter is complete
39+
40401 stars
4141The 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 @@
22title = "Unit tests for JSON parsing"
33date = 2019-11-15
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -28,22 +28,20 @@ Save the test files in the `/tests/sys/hoon` directory in Arvo. Use the same fra
2828
2929#### Resources
3030
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.
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.
3333
3434#### Contribution Guidelines
3535
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.
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.
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.
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.
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.
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.
4141
4242## Milestones
4343
44−
4544### Test files are merged
45+
46462 stars
4747Your test files are accepted and merged on GitHub.
48−
49−
content/grants/unit-tests-for-pure-algorithms.md+18−21
@@ -2,7 +2,7 @@
22title = "Unit tests for pure algorithms"
33date = 2019-07-25
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -24,38 +24,35 @@ Save the test files in the `/tests/sys/hoon` directory in Arvo. Use the same fra
2424
2525#### Resources
2626
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/).
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.
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/).
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.
3030
3131#### Contribution Guidelines
3232
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`).
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.
37−* You have 30 days from the time of approval to complete this bounty.
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`).
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.
37+- You have 30 days from the time of approval to complete this bounty.
3838
3939#### Resources
4040
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/).
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.
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/).
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.
4444
4545#### Contribution Guidelines
4646
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`).
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.
51−* You have 30 days from the time of approval to complete this bounty.
52−
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`).
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.
51+- You have 30 days from the time of approval to complete this bounty.
5352
5453## Milestones
5554
56−
5755### Test files are merged
56+
58571 stars
5958Your test files are accepted and merged on GitHub.
60−
61−
content/grants/unit-tests-for-sha-functions.md+10−12
@@ -2,7 +2,7 @@
22title = "Unit tests for SHA functions"
33date = 2019-07-25
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -28,23 +28,21 @@ Save the test file in the `/tests/sys/hoon` directory in Arvo. Use the same fram
2828
2929#### Resources
3030
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.
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.
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.
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.
3434
3535#### Contribution Guidelines
3636
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.
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.
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.
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.
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.
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.
4242
4343## Milestones
4444
45−
4645### Your test file is merged
46+
47471 stars
4848Your 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 @@
22title = "Unit tests for Zuse cryptographic functions"
33date = 2019-07-25
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Dev Tool"]
77[extra]
88image = ""
@@ -31,22 +31,20 @@ Save the test files in the `tests/sys/zuse/crypto` directory in Arvo. Use the sa
3131
3232#### Resources
3333
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).
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.
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).
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.
3737
3838#### Contribution Guidelines
3939
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.
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.
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.
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.
4444
4545## Milestones
4646
47−
4847### Your test file is merged
49−1 stars
50−Your test file for all the relevant functions is accepted and merged.
5148
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 @@
22title = "Up-to-date Hoon reference card"
33date = 2020-03-15
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -14,17 +14,15 @@ completed = true
1414link = ""
1515+++
1616
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.)
1818
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
2020
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.
2222
2323## Milestones
2424
25−
2625### Make card public
26+
27271 stars
2828Make 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 @@
22title = "Urbian: a customized Linux distribution for Urbit appliances"
33date = 2020-10-06
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Dev Tool"]
77[extra]
88image = "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
2222
2323![Bromeliaceae on a tree, Costa Rica (Atlantic area)](https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Bromeliaceae20020312.JPG/640px-Bromeliaceae20020312.JPG)
2424
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.”_
2626
2727I’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.
2828
@@ -39,9 +39,10 @@ This is a first attempt at building such a base.
3939This 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.
4040
4141It 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.
4343
4444Core functionality will be handled by a service which runs at boot:
45+
4546- 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).
4647- The script will configure the wifi device if a wifi file was found
4748- 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:
5354Outside 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.
5455
5556Armbian image to additionally include:
57+
5658- [RPi-Monitor](https://github.com/XavierBerger/RPi-Monitor) for real time monitoring
5759- nymea-networkmanager for [wifi configuration over bluetooth](https://berrylan.org)
5860
@@ -70,17 +72,14 @@ It has the potential to evolve into a system that makes it easier for users to s
7072
7173The development of this backend will support UX experiments with a frontend meant to create a user friendly, turnkey-style Urbit device.
7274
73−
7475## Milestones
7576
76−
7777### An Armbian userpatches overlay for Urbit
78+
78791 stars
7980Overlay with scripts and services integrated, used to create an image for installation to a device, which will setup Urbit upon being booted.
8081
81−
8282### Demo of image generation and boot
83+
83841 stars
8485Blog 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 @@
22title = "Urbit API for Elixir"
33date = 2021-02-11
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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
2020
2121## Milestones
2222
23−
2423### Basic HTTP Interface
24+
25251 stars
2626Enabling a basic interface to send/receive json to a running Urbit ship.
2727
28−
2928### Graph Store
29+
30301 stars
3131Enabling full interactivity with the graph-store HTTP endpoints.
3232
33−
3433### Other Gall Apps
34+
35351 stars
3636Reach 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 @@
22title = "Urbit Community Concierge - East Coast - 2Q2021"
33date = 2021-04-27
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -27,9 +27,7 @@ Applicants should:
2727
2828## Milestones
2929
30−
3130### Complete 240 hours of concierge service
31+
32321 stars
3333Complete 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 @@
22title = "Urbit Community Concierge - East Coast"
33date = 2021-02-10
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -17,7 +17,8 @@ link = ""
1717Provide 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.
1818
1919Applicants should:
20−- know the "big picture" of Urbit well.
20+
21+- know the "big picture" of Urbit well.
2122- be able to answer general questions about the structure and purpose of Urbit and Landscape.
2223- keep up with community and be able to recommend public groups, events, people to connect with, etc.
2324- have general information available (FAQ, Eth/gas prices, Urbit documentation, etc.)
@@ -26,9 +27,7 @@ Applicants should:
2627
2728## Milestones
2829
29−
3030### 80 hours of concierge service
31+
31321 stars
3233Provide 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 @@
22title = "Urbit Community Concierge - West Coast - 2Q2021"
33date = 2021-04-27
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -27,9 +27,7 @@ Applicants should:
2727
2828## Milestones
2929
30−
3130### Complete 240 hours concierge service
31+
32321 stars
3333Complete 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 @@
22title = "Urbit Community Concierge - West Coast"
33date = 2021-02-10
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -17,7 +17,8 @@ link = ""
1717Provide 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.
1818
1919Applicants should:
20−- know the "big picture" of Urbit well.
20+
21+- know the "big picture" of Urbit well.
2122- be able to answer general questions about the structure and purpose of Urbit and Landscape.
2223- keep up with community and be able to recommend public groups, events, people to connect with, etc.
2324- have general information available (FAQ, Eth/gas prices, Urbit documentation, etc.)
@@ -26,9 +27,7 @@ Applicants should:
2627
2728## Milestones
2829
29−
3030### 80 hours of concierge service
31+
31321 stars
3233Provide 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 @@
22title = "Urbit Event Series"
33date = 2020-10-11
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -27,6 +27,7 @@ Grant requested: one star
2727Additional required budget: None
2828
2929Deliverable: 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+
3031- Building apps using store/hook/view
3132- Graph store (Logan)
3233- Lib hook
@@ -72,19 +73,17 @@ Scope of work: Act as project manager for the event. Consult with Tlon, communit
7273
7374## Milestones
7475
75−
7676### Phase I: Developer calls
77+
77781 stars
7879An introductory series of 3-4 developer calls for the Urbit community. See Details for more information and scope of work.
7980
80−
8181### Phase II: Town Hall
82+
82832 stars
8384A 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.
8485
85−
8686### Phase III: UrbitCon
87+
87883 stars
8889A 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 @@
22title = "Urbit Explainer Video"
33date = 2020-09-13
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -20,15 +20,13 @@ Contrasting the original [Tlon-produced explainer](https://www.youtube.com/watch
2020
2121~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/).
2222
23−~rivpyl-sidfyl: I am experienced in video, audio and animation work.
23+~rivpyl-sidfyl: I am experienced in video, audio and animation work.
2424I'll try my best in translating and adapting our idea to the audiovisual medium.
2525Here's a short video [reel](https://streamable.com/lpzh4s) showcasing some of my recent work.
2626
2727## Milestones
2828
29−
3029### It's Done
30+
31312 stars
3232We 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 @@
22title = "Urbit HTTP API for Emacs (elisp)"
33date = 2021-01-18
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Dev Tool"]
77[extra]
88image = ""
@@ -16,23 +16,21 @@ link = ""
1616
1717I'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.
1818
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
2020
2121## Milestones
2222
23−
2423### Basic HTTP Interface
24+
25251 stars
2626Implementation of the HTTP interface to send JSON to/from an Urbit ship.
2727
28−
2928### Graph Store Interface
29+
30301 stars
3131Implementation of graph-store interface.
3232
33−
3433### Additional Agent Interfaces
34+
35351 stars
3636Implementation 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 @@
22title = "Urbit HTTP API for Kotlin"
33date = 2020-10-27
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "Write an urbit HTTP API (aka Airlock) for Kotlin."
@@ -16,22 +16,19 @@ link = ""
1616
1717This proposal project will produce urbit HTTP API in Kotlin language with [these requirements](https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit) in mind.
1818
19−
2019## Milestones
2120
22−
2321### HTTP interface
22+
24231 stars
2524HTTP interface for sending and receiving JSON from Kotlin programs
2625
27−
2826### graph-store interface
27+
29281 stars
3029graph-store interface for interacting with urbit's general purpose data storage model
3130
32−
3331### agents interfaces
32+
34331 stars
3534metadata-store and group-store agents interfaces
36−
37−
content/grants/urbit-http-api-for-rust.md+5−9
@@ -2,8 +2,8 @@
22title = "Urbit HTTP API for Rust"
33date = 2020-12-16
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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://
2828
29293. Additional Agent Interfaces - Interface to the group-store and metadata-store Gall agents
3030
31−
3231**Plan**
3332
3433While 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.
3534
3635From 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.
3736
38−
3937## Milestones
4038
41−
4239### Basic HTTP Interface
40+
43411 stars
4442Implementation of the HTTP Interface responsible for sending and receiving JSON to/from an Urbit ship
4543
46−
4744### Graph Store Interface
45+
48461 stars
4947Implementation of the interface to `graph-store`, which sits on top of the HTTP Interface
5048
51−
5249### Additional Agent Interfaces
50+
53511 stars
5452Implementation 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 @@
22title = "Urbit HTTP Interface — Java Edition"
33date = 2020-10-20
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Core Dev"]
77[extra]
88image = ""
@@ -20,19 +20,17 @@ This proposal seeks to create an API to interact with an Urbit ship over HTTP wr
2020
2121One 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.
2222
23−
2423## Outline
2524
2625This comprises three parts:
26+
27271. **Basic HTTP Interface** - Responsible for sending and receiving JSON to/from an Urbit ship
2828
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
3030
31313. **Additional Agent Interfaces** - Interface to the `group-store` and `metadata-store` Gall agents
3232
33−
34−In addition, we will seek to document the code throughout the evolution of the proposal, providing READMEs along the way.
35−
33+In addition, we will seek to document the code throughout the evolution of the proposal, providing READMEs along the way.
3634
3735## Plan
3836
@@ -41,29 +39,25 @@ In addition, we will seek to document the code throughout the evolution of the p
41393. Test it out with more experienced Urbit developers
42404. Finalize and write documentation
4341
44−
4542Qualifications:
4643
4744I'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.
4845
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.
50−
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.
5147
5248## Milestones
5349
54−
5550### Basic HTTP Interface
51+
56521 stars
5753Implementation of the HTTP Interface responsible for sending and receiving JSON to/from an Urbit ship
5854
59−
6055### Graph Store Interface
56+
61571 stars
6258Implementation of the interface to `graph-store`, which sits on top of the HTTP Interface
6359
64−
6560### Additional Agent Interfaces
61+
66621 stars
6763Implementation 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 @@
22title = "Urbit HTTP Library for Ruby"
33date = 2020-11-05
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Dev Tool"]
77[extra]
88image = ""
@@ -15,25 +15,23 @@ link = ""
1515+++
1616
1717Patterned per document:
18−https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit.
18+https://docs.google.com/document/d/1no5oos_NE8LrUWz7iG9SKZMTIzruZVevZQ75nD5OHmI/edit.
1919
2020I 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.
2121
2222## Milestones
2323
24−
2524### Basic HTTP Interface
25+
26261 stars
2727This involves building a mechanism for sending and receiving JSON to/from an Urbit ship.
2828
29−
3029### Graph Store Interface
30+
31311 stars
3232Using the basic HTTP interface referenced above, create an interface to graph-store.
3333
34−
3534### Additional Agent Interfaces
35+
36361 stars
3737Landscape 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 @@
22title = "Urbit LFS - filehosting"
33date = 2021-03-11
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "Share large files"
@@ -18,51 +18,48 @@ link = ""
1818
1919Allow 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.
2020
21−
2221## Design
2322
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.
2524
2625A provider can limit clients to %kids, specific groups, or manual lists of authorized ships. A client can subscribe to multiple providers.
2726
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.
2928
3029When the uploading is finished, the fileserver notifies the provider to update client storage usage.
3130
32−## Me
31+## Me
3332
3433I'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.
3534
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.
3736
3837## Milestones
3938
39+### Proof of concept
4040
41−### Proof of concept
42411 stars
4342Client – Proivder – Fileserver
4443
4544Client subscribes to a provider, and pokes to request an upload. Provider creates an upload url on the fileserver, and passes it to the client.
4645
47−
4846### Upload limits
47+
49481 stars
5049Provider tracks uploaded files per client and enforces filesize limits based on groups, %kids, list of ships. Clients store limits locally as well.
5150
5251Fileserver confirms upload to provider
5352
54−
5553### Handle Errors
54+
56551 stars
5756When any of the servers shutdown, a transaction is either canceled or can be resumed from a checkpoint.
5857
5958Provider can import/export the map from ship to uploaded files to prevent data loss.
6059
61−
6260### Permissions and demo UI
61+
63621 stars
6463The fileid gives permission to delete the file on the fileserver. Create and manage share-links using fileid. Provider can throttle file requests.
6564
6665Demo html/javascript UI for client to manage files.
67−
68−
content/grants/urbit-online-meetup.md+2−4
@@ -2,7 +2,7 @@
22title = "Urbit online meetup."
33date = 2020-06-08
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -22,9 +22,7 @@ Ultimately, it might be nice to move the community over to an Urbit group. The t
2222
2323## Milestones
2424
25−
2625### Urbit Lecture
26+
27271 stars
2828The Urbit lecture, given by me, as described.
29−
30−
content/grants/urbit-react-cookbook.md+6−8
@@ -2,8 +2,8 @@
22title = "Urbit React Cookbook"
33date = 2021-04-10
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "Provide concrete examples of React UI driven by @urbit/http-api to quickly start building on top of Urbit"
@@ -16,7 +16,7 @@ link = ""
1616
1717The 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.
1818
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.
2020
2121Surfacing 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.
2222
@@ -28,19 +28,17 @@ This guide is robust enough for a JavaScript beginner and of course more advance
2828
2929## Milestones
3030
31−
3231### First Example App: Groups and Channels
32+
33331 stars
3434Covering Subscriptions, Pokes, Threads, and Scries to create groups/channels, manage members, and send messages. Delivered as a merged PR into the urbit.org documentation.
3535
36−
3736### Second Example App: Advanced Functions
37+
38381 stars
3939Notebooks, 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.
4040
41−
4241### Breakout Lessons
42+
43431 stars
4444React 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 @@
22title = "Urbit Ship and Star Hosting and Troubleshooting Docs"
33date = 2020-08-19
44[taxonomies]
5−grant_type = ["proposals"]
5+grant_type = ["Proposal"]
66grant_category = ["Documentation"]
77[extra]
88image = ""
@@ -25,14 +25,12 @@ All of this will be done with an eye towards maintainability of the docs along w
2525
2626## Milestones
2727
28−
2928### Add Ship Hosting To Official Urbit Docs
29+
30301 stars
3131The 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
3232
33−
3433### Star Hosting/Troubleshooting Docs
34+
35351 stars
3636Write 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 @@
22title = "Verifying Urbit ID on Keybase"
33date = 2020-02-19
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "Create a Gall app that links Urbit identities with Keybase."
@@ -15,43 +15,46 @@ canceled = true
1515link = ""
1616+++
1717
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.
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.
2020
2121### Bounty Description
2222
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.
2424
2525##### Gall application:
2626
2727- Create an identity service for a Urbit ID
28− - Check that the config is valid
28+- Check that the config is valid
2929- Keybase needs to check the proof periodically on the Identity Service
3030- Link on the Identity Service to the corresponding verified Keybase profile
3131- Use Urbit ID sigil as a badge (badge: a small SVG image)
3232
3333-Suggested prefilled fields:
34+
3435- 'display_name': 'Urbit'
3536- 'Username': 'ship-name'
3637- Logo 32px black&white sigil and 16px black&white sigil
3738- 'Description': 'A clean-slate OS and network for the 21st century'
3839
3940##### User interface:
41+
4042- Create valid `validate_proof_config.json` using form fields
4143- Binary authorization
42− - I am ship-name on urbit [yes or no]
44+- I am ship-name on urbit [yes or no]
4345
4446### Resources:
47+
4548- [Proof Creation](https://keybase.io/docs/proof_integration_guide#2-2-proof-creation)
4649- [Proof Checking](https://keybase.io/docs/proof_integration_guide#2-3-proof-checking)
4750- [Linking](https://keybase.io/docs/proof_integration_guide#3-linking-user-profiles)
4851
49−
5052### Prerequisites:
53+
5154- Map your Urbit ID with a DNS domain
5255- Load an SSL certificate using acme
53− - `:acme &path /top-level-domain/second-level-domain/optional-subdomain`
54− - Example: `https://zod.urbit.org` --> `:acme &path /org/urbit/zod`
56+- `:acme &path /top-level-domain/second-level-domain/optional-subdomain`
57+- Example: `https://zod.urbit.org` --> `:acme &path /org/urbit/zod`
5558
5659### Contribution Guidelines:
5760
@@ -63,13 +66,9 @@ Create a Gall app and that creates a Urbit ID based identity service and hosts a
6366
6467- You have 90 days from the time of approval to complete this bounty.
6568
66−
67−
6869## Milestones
6970
70−
7171### PR is merged
72+
72732 stars
7374Your work is accepted, and your PR is merged.
74−
75−
content/grants/video-content-manager.md+10−11
@@ -2,7 +2,7 @@
22title = "Video Content Manager"
33date = 2021-02-10
44[taxonomies]
5−grant_type = ["bounties"]
5+grant_type = ["Bounty"]
66grant_category = ["Community"]
77[extra]
88image = ""
@@ -24,14 +24,15 @@ A wealth of Urbit-centric content has been produced in the past several months,
2424- Organize content by type on YouTube, and possibly the Media page as well.
2525- Regularly search for Urbit-related video content and rebroadcast it from Urbit channels (with explicit permission from creators/owners).
2626- 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.
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.
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.
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.
3030
3131## Requirements
32+
3233- Good familiarity with video recording and editing software.
33−- Previous record of participation in/knowledge of Urbit Community is a plus.
34−- Scrupulous about checking permissions/ownership of content.
34+- Previous record of participation in/knowledge of Urbit Community is a plus.
35+- Scrupulous about checking permissions/ownership of content.
3536
3637## Resources
3738
@@ -41,19 +42,17 @@ A wealth of Urbit-centric content has been produced in the past several months,
4142
4243## Milestones
4344
44−
4545### Bring channels up-to-date
46+
46471 stars
4748Wrangle 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.
4849
49−
5050### Ongoing maintenance
51+
51521 stars
5253In the three months following the first month of work, keep an eye out for additional content and upload it as needed.
5354
54−
5555### Optional: Content creation/facilitation
56+
56571 stars
5758Either 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 @@
22title = "volt: Lightning on Urbit"
33date = 2021-04-02
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "An Urbit-native Lightning client and integration with `lnd` on 'provider' ships."
@@ -14,6 +14,7 @@ link = ""
1414+++
1515
1616## Introduction
17+
1718With 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.
1819
1920However, 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
2122Once 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.
2223
2324## 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.
2525
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.
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+
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.
2729
2830### channels
31+
2932A channel consists of:
33+
30341. an on-chain Bitcoin transaction allocating funds to one side of the channel.
31352. 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.
3236
@@ -35,198 +39,242 @@ Peers open channels between each other in order to make payments in the network.
3539Each 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.
3640
3741### routing/payments
42+
3843Lightning payments follow a set sequence:
39−1. payee creates an invoice
40− - 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")
44+
45+1. payee creates an invoice
46+
47+- optionally with route hints ("take this path to reach me, because maybe I'm not publicly listed")
48+- contains the hash of a secret (the "preimage")
49+
42502. payee sends invoice to payer
43513. payer uses its channel graph to construct a route to payee that it thinks will work, using route hints if provided
44524. payer tries to send payment along that route. If it fails, payer updates its channel graph and retries
45535. all hops along the route update their commitments to the new state
4654
4755### HTLCs
56+
4857When 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.
4958
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.
5160
5261### interceptors
62+
5363Because 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.
5464
5565### additional resources
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.
66+
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.
5768
5869## Lightning in Urbit
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.
70+
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.
6072
6173Throughout the architecture, we refer to "interior" nodes: Urbit nodes running a Lightning implementation that do not network with the outside Lightning world.
6274
6375### wins of this approach
6476
65−#### non-custodial *and* easy to use *and* powerful
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.
77+#### non-custodial _and_ easy to use _and_ powerful
78+
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.
6780
6881Lightning 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.
6982
7083#### leverages existing Urbit features
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.
84+
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.
7286
7387#### clear upgrade paths
88+
7489The 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:
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.
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*.
90+
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.
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_.
7793
7894### blockers
95+
7996Private 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.
8097
8198## architecture
99+
82100`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.
83101
84102### system diagram
103+
85104![system](https://s3.timlucmiptev.space/timluc/timluc-miptev/volt_arch.png)
86105
87106### payment flows diagram
107+
88108![payments](https://s3.timlucmiptev.space/timluc/timluc-miptev/volt_payment_flow.png)
89109
90110### RFCs implemented
111+
91112We implement everything related to channels, HTLCs, and invoices. We leave out all the Lightning networking and routing elements.
92113[RFCs located here](https://github.com/lightningnetwork/lightning-rfc/blob/master/00-introduction.md)
93−* RFC 02: channel opening, closing, HTLCs
94−* RFC 03: commitment transactions
95−* RFC 05: on-chain transaction handling
96−* RFC 11: invoices
114+
115+- RFC 02: channel opening, closing, HTLCs
116+- RFC 03: commitment transactions
117+- RFC 05: on-chain transaction handling
118+- RFC 11: invoices
97119
98120### volt-provider lib
121+
99122Bridge 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.
100−* Communicates with lnd over rpc
101−* passes HTLCs in and out
102−* accepts Hoon commands to open/close channels with outside nodes
123+
124+- Communicates with lnd over rpc
125+- passes HTLCs in and out
126+- accepts Hoon commands to open/close channels with outside nodes
103127
104128#### heartbeat
105−* checks for connectivity with lnd every N seconds
106−* updates local agent and subscribers with status
129+
130+- checks for connectivity with lnd every N seconds
131+- updates local agent and subscribers with status
107132
108133#### incoming payments
109−* intercepts the HTLC
110−* 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?)
134+
135+- intercepts the HTLC
136+- injects the HTLC and metadata (next hop) into `volt`, where it's handled
137+- receives a pre-image back and sends it back to the Lightning network (which RPC call?)
112138
113139#### outgoing payments
114−* receives outgoing-payment request from itself
115−* finds an outgoing route, if one exists
116−* constructs an HTLC with the interior node
117−* sends the outgoing payment using RPC `SendPaymentV2` with params:
140+
141+- receives outgoing-payment request from itself
142+- finds an outgoing route, if one exists
143+- constructs an HTLC with the interior node
144+- sends the outgoing payment using RPC `SendPaymentV2` with params:
118145 - invoice
119146 - route hints
120147 - 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
122149
123150### volt
151+
124152Manager for interior Lightning in Urbit. `volt` handles everything related to channel management, HTLC creation and updating, and payment recording between ships.
125−* connects to provider
126−* provides Lightning pubkey to provider
127−* maintains pubkey->Urbit ship mappings
128−* maintains channel and commitment data
129−* maintains HTLCs
153+
154+- connects to provider
155+- provides Lightning pubkey to provider
156+- maintains pubkey->Urbit ship mappings
157+- maintains channel and commitment data
158+- maintains HTLCs
130159
131160#### channels
132−* open/close channels between provider nodes and others
133−* monitor for fraud
134−* 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.
161+
162+- open/close channels between provider nodes and others
163+- monitor for fraud
164+- serialize and encrypt commitments for backup
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.
136166
137167#### receive payment
138−* build invoice (with routing hints)
139−* send invoice to payer (can be interior or exterior)
140−* accept incoming HTLC from provider
141−* settle the HTLC if it's for us, fail otherwise
142−* update channel commitments
143−* update payment history, optionally with ship metadata
168+
169+- build invoice (with routing hints)
170+- send invoice to payer (can be interior or exterior)
171+- accept incoming HTLC from provider
172+- settle the HTLC if it's for us, fail otherwise
173+- update channel commitments
174+- update payment history, optionally with ship metadata
144175
145176#### send payment
146−* parse invoice from payee
147−* make sure that either
177+
178+- parse invoice from payee
179+- make sure that either
148180 - our node is our provider
149181 - we have enough capacity to our provider
150−* make a new HTLC commitment with provider (if remote provider)
151−* send payment request to provider
152−* get result from provider and settle the HTLC
182+- make a new HTLC commitment with provider (if remote provider)
183+- send payment request to provider
184+- get result from provider and settle the HTLC
153185
154186## user stories
187+
155188### provider
156−As a provider, I can
157−* open/close channels with outside lightning nodes through the `lnd` RPC
158−* accept Urbit ships as clients and open/close channels with them
159−* 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
189+
190+As a provider, I can
191+
192+- open/close channels with outside lightning nodes through the `lnd` RPC
193+- accept Urbit ships as clients and open/close channels with them
194+- intercept incoming HTLC payments for interior Lightning on my ship to handle
195+- receive settled HTLCs from the interior and inject them back into lnd to settle my exterior
161196
162197### Urbit ship
198+
163199As an Urbit ship I can
164−* select a provider and connect to it
165−* open/close channels with my provider
166−* receive payments from Urbit users
167−* make payments to other Urbit ships
168−* make and receive payments with outside Lightning nodes
169−* view my transaction history
200+
201+- select a provider and connect to it
202+- open/close channels with my provider
203+- receive payments from Urbit users
204+- make payments to other Urbit ships
205+- make and receive payments with outside Lightning nodes
206+- view my transaction history
170207
171208## weaknesses and future upgrades
209+
172210### weaknesses
211+
173212As 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.
174213
175214### upgrades
215+
176216#### multi-provider support
217+
177218Allowing 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.
178219
179220#### Urbit-native onion routing
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).
221+
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).
181223
182224The 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).
183225
184226#### submarine swaps
227+
185228It 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.
186229
187230## Resources
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.
189−* [Urbit Bitcoin Wallet](https://github.com/timlucmiptev/btc-agents)
190−* [Lightning RFC](https://github.com/lightningnetwork/lightning-rfc/blob/master/00-introduction.md)
191−* [lnd RPC API](https://api.lightning.community/)
231+
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.
233+- [Urbit Bitcoin Wallet](https://github.com/timlucmiptev/btc-agents)
234+- [Lightning RFC](https://github.com/lightningnetwork/lightning-rfc/blob/master/00-introduction.md)
235+- [lnd RPC API](https://api.lightning.community/)
192236
193237## contributor requirements
194−* 4+ years of experience as a backend developer
195−* Full-time availablity is ideal
196−* Some familiarity with Hoon a strong positive
197−* 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
238+
239+- 4+ years of experience as a backend developer
240+- Full-time availablity is ideal
241+- Some familiarity with Hoon a strong positive
242+- Some programming familiarity with Bitcoin a strong positive
243+- Attend regular (weekly or bi-weekly) checkin meetings with an urbit.org director to provide status updates
199244
200245### 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.
204246
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.
206250
251+## Milestones
207252
208253### transaction/invoice RFCs
254+
2092552 stars
210−* Implement RFCs 2, 3 and 11 from BOLT.
211−* Create the libs and types that further stages will depend on
212256
257+- Implement RFCs 2, 3 and 11 from BOLT.
258+- Create the libs and types that further stages will depend on
213259
214260### on-chain transaction RFC
261+
2152622 stars
216−* implement RFC 5, on-chain transaction handling
217−* test that channels can be opened and closed in the manner described there
218263
264+- implement RFC 5, on-chain transaction handling
265+- test that channels can be opened and closed in the manner described there
219266
220267### provider libraries
268+
2212691 stars
222−* implement the `volt` provider that will talk to `lnd`
223−* create any configuration files needed to start `lnd` locally
224270
271+- implement the `volt` provider that will talk to `lnd`
272+- create any configuration files needed to start `lnd` locally
225273
226274### `volt` agent and cleanup
275+
2272762 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
231277
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 @@
22title = "Web Scraper"
33date = 2020-02-07
44[taxonomies]
5−grant_type = ["bounties"]
6−grant_category = ["App Dev: Arvo"]
5+grant_type = ["Bounty"]
6+grant_category = ["App Dev", "Arvo"]
77[extra]
88image = ""
99description = "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
3737
3838## Milestones
3939
40−
4140### PR is merged
41+
42421 stars
4343Your pull request is merged.
44−
45−
content/grants/webrtc-gall-agent-and-external-app.md+15−11
@@ -2,8 +2,8 @@
22title = "WebRTC Gall Agent and external app"
33date = 2021-01-08
44[taxonomies]
5−grant_type = ["proposals"]
6−grant_category = ["App Dev: Other"]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
77[extra]
88image = ""
99description = "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
2727## Deliverables
2828
2929### WebRTC Gall Agent
30+
3031This 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.
3132
3233### WebRTC calling app
34+
3335This 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
3736
38−### ICE/STUN/Turn advertising
37+- making two-way media calls
38+- making n-way media conference calls
39+- streaming media from one peer to many
40+
41+### ICE/STUN/Turn advertising
42+
3943A 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.
4044
4145The 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
4448
4549The proposer would eventually like to see media streas themselves propagated via Urbit. To achieve this, however,
4650it would be necessary to:
51+
4752- Create a performant method (likely a vane) for passing network messages which are not retained in the event log
4853- Significantly improve Urbit's NAT traversal and firewall hole-punching abilities to match the state of the art.
4954 (this has been discussed with, among others, ~ritfed-tabrg and ~wolref-podlex).
@@ -53,25 +58,24 @@ it would be necessary to:
5358Edward 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.
5459
5560## References
61+
5662[Mozilla Developer Network WebRTC walkthrough](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling)
5763[Dealing with connectivity](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity)
5864
5965## Milestones
6066
61−
6267### Gall agents (WebRTC, ICE/STUN)
68+
63692 stars
6470A Gall agent which handles exchanging SDP messages for WebRTC applications
6571Another Gall agent which handles advertising ICE and STUN servers from stars to planets
6672
67−
6873### Standalone WebRTC-via-Urbit app
74+
69754 stars
7076Urbit app running in browser and hosted/interfaced via Eyre which provides the three categories of calling functionality described in the body of the proposal
7177
72−
7378### Authenticated TURN advertising
79+
74802 stars
7581Extension 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
44description = "A short update from the Tlon team for the week of ~2018.2.17."
55aliases = ["/posts/2018-2-17-update/"]
66[taxonomies]
7−post_type = ["gifts"]
7+grant_type = ["Gift"]
88[extra]
99ship = "~tonlur-sarret"
1010author = ""
@@ -12,25 +12,25 @@ author = ""
1212
1313Here's what we've all been up to this week:
1414
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:
1616
17−- *Gold*, _64 stars_: Joe Bryan `~master-morzod`
18−- *Silver*, _32 stars_: Joshua Reagan `~taglux-nidsep`
19−- *Silver*, _32 stars_: Mikolaj `~ponmep-litsem`
20−- *Bronze*, _16 stars_: Assaf Berg `~rophex-hashes`
21−- *Bronze*, _16 stars_: Matt Levan `~mastyr-bottec`
22−- *Bronze*, _16 stars_: Anthony Arroyo `~poldec-tonteg`
17+- _Gold_, _64 stars_: Joe Bryan `~master-morzod`
18+- _Silver_, _32 stars_: Joshua Reagan `~taglux-nidsep`
19+- _Silver_, _32 stars_: Mikolaj `~ponmep-litsem`
20+- _Bronze_, _16 stars_: Assaf Berg `~rophex-hashes`
21+- _Bronze_, _16 stars_: Matt Levan `~mastyr-bottec`
22+- _Bronze_, _16 stars_: Anthony Arroyo `~poldec-tonteg`
2323
2424Thank you all again for helping bring Urbit to life!
2525
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.
2727
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.
2929
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.
3131
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.
3333
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.
3535
3636Have a great weekend, everyone!
pages/grants.js+131−51
@@ -13,6 +13,7 @@ import {
1313 formatDate,
1414 getGrantsCategories,
1515 getGrantsTypes,
16+ getPostBySlug,
1617} from "../lib/lib";
1718
1819function addTag(array, tag) {
@@ -57,27 +58,92 @@ function toggleAll(currentArray, fullSet) {
5758 }
5859}
5960
60−export default function Grants({ posts, categories, types }) {
61+export default function Grants({ posts, categories, types, featuredGrants }) {
6162 const [activeTags, setTags] = useState([]);
6263 const [activeTypes, setTypes] = useState(types);
6364 const [tab, setTab] = useState(0);
6465
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+
6579 return (
6680 <Container>
6781 <SingleColumn>
6882 <Header />
83+ {
84+ // Heading and introduction
85+ }
6986 <section className="layout-wide">
70− <div className="measure">
87+ <div className="measure pb-16">
7188 <h2 className="pb-16">Urbit Grants</h2>
72− <p className="">
89+ <p className="mb-8">
7390 Urbit is a community project. While anyone can contribute, we help
7491 focus development and reward exceptional contribution through our
7592 grants program.
7693 </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+ })}
77139 </div>
78140 </section>
141+ {
142+ // Find a Grant
143+ }
79144 <section className="layout-wide">
80− <div className="flex items-center measure pb-12">
145+ <h2 className="pb-8">Find A Grant</h2>
146+ <div className="flex items-center measure pb-8">
81147 <button
82148 onClick={() => {
83149 setTab(0);
@@ -89,10 +155,13 @@ export default function Grants({ posts, categories, types }) {
89155 >
90156 All
91157 </button>
158+ {
159+ // NB Gavin: These should be auto-generated from the markdown metadata
160+ }
92161 <button
93162 onClick={() => {
94163 setTab(1);
95− setTypes(["propsals"]);
164+ setTypes(["Proposal"]);
96165 }}
97166 className={`tab-button-sm mr-4 ${
98167 tab === 1 ? "text-black" : "text-gray"
@@ -103,7 +172,7 @@ export default function Grants({ posts, categories, types }) {
103172 <button
104173 onClick={() => {
105174 setTab(2);
106− setTypes(["bounties"]);
175+ setTypes(["Bounty"]);
107176 }}
108177 className={`tab-button-sm mr-4 ${
109178 tab === 2 ? "text-black" : "text-gray"
@@ -114,7 +183,7 @@ export default function Grants({ posts, categories, types }) {
114183 <button
115184 onClick={() => {
116185 setTab(3);
117− setTypes(["apprenticeships"]);
186+ setTypes(["Apprenticeship"]);
118187 }}
119188 className={`tab-button-sm mr-4 ${
120189 tab === 3 ? "text-black" : "text-gray"
@@ -125,7 +194,7 @@ export default function Grants({ posts, categories, types }) {
125194 <button
126195 onClick={() => {
127196 setTab(4);
128− setTypes(["gifts"]);
197+ setTypes(["Gift"]);
129198 }}
130199 className={`tab-button-sm ${
131200 tab === 4 ? "text-black" : "text-gray"
@@ -153,50 +222,52 @@ export default function Grants({ posts, categories, types }) {
153222 })}
154223 </div>
155224
156− {posts
157− .reduce((acc, post) => {
158− // Posts are returned if they match both the selected category and selected tags, or if the user has no category filters set.
159− const itemDidPass =
160− (post.taxonomies.grant_category.some((r) =>
161− activeTags.includes(r)
162− ) ||
163− activeTags.length === 0) &&
164− post.taxonomies.grant_type.some((r) => activeTypes.includes(r));
165− // Return the item if the above check has passed
166− if (itemDidPass === true) {
167− return [...acc, post];
168− }
169− return acc;
170− }, [])
171− .map((post) => {
172− return (
173− <div
174− key={post.slug}
175− className="mb-4 cursor-pointer bg-wall rounded-lg"
176− >
177− <Link href={`/grants/${post.slug}`}>
178− <div className="p-8">
179− <h3 className="type-ui mb-4">{post.title}</h3>
180− <p className="mb-4">{post.extra.description}</p>
181− <div className="flex w-full items-center justify-between">
182− <p className="text-gray">
183− <strong>Reward: </strong>
184− {post.extra.reward} star
185− {post.extra.reward > 1 ? "s" : ""}
186− </p>
187− <div className="flex">
188− {post.taxonomies.grant_category.map((category) => (
189− <div className="bg-gray text-wall badge-sm m-1">
190− {category}
191− </div>
192− ))}
193− </div>
225+ {
226+ // <div className="pb-8">
227+ // <TabCarousel index={tab}>
228+ // <p>All {filteredPosts.length} Urbit grants</p>
229+ // <p>{filteredPosts.length} proposals from community members to work on their own projects</p>
230+ // <p>{filteredPosts.length} bounties for specific work needed by the Urbit Foundation</p>
231+ // <p>{filteredPosts.length} apprenticeships for projects undertaken with a mentor</p>
232+ // <p>{filteredPosts.length} gifts given post facto for exceptional contributions</p>
233+ // </TabCarousel>
234+ // </div>
235+ }
236+
237+ {filteredPosts.map((post) => {
238+ return (
239+ <div
240+ key={post.slug}
241+ className="mb-4 cursor-pointer bg-wall rounded-lg"
242+ >
243+ <Link href={`/grants/${post.slug}`}>
244+ <div className="p-8">
245+ <h3 className="type-ui mb-4">{post.title}</h3>
246+ <p className="mb-4">{post.extra.description}</p>
247+ <div className="flex w-full items-center justify-between">
248+ <p className="text-gray">
249+ <strong>Reward: </strong>
250+ {post.extra.reward} star
251+ {post.extra.reward > 1 ? "s" : ""}
252+ </p>
253+ <div className="flex">
254+ {post.taxonomies.grant_type.map((category) => (
255+ <div className="bg-black text-wall badge-sm m-1">
256+ {category}
257+ </div>
258+ ))}
259+ {post.taxonomies.grant_category.map((category) => (
260+ <div className="bg-gray text-wall badge-sm m-1">
261+ {category}
262+ </div>
263+ ))}
194264 </div>
195265 </div>
196− </Link>
197− </div>
198− );
199− })}
266+ </div>
267+ </Link>
268+ </div>
269+ );
270+ })}
200271 </section>
201272 </SingleColumn>
202273 <Footer />
@@ -212,7 +283,16 @@ export async function getStaticProps() {
212283 "grants"
213284 );
214285
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+
215295 return {
216− props: { posts: posts, categories, types },
296+ props: { posts: posts, categories, types, featuredGrants },
217297 };
218298}
pages/index.js+7−7
@@ -39,7 +39,7 @@ export default function Home({ posts, events, openGrantsCount }) {
3939 <h2 className="p-0 m-0 pb-2">Introducing</h2>
4040 <h2 className="text-green p-0 m-0">Port</h2>
4141 </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>
4343 <p className="pb-24">
4444 Getting into Urbit is now as simple as installing an app on your
4545 computer.
@@ -70,19 +70,19 @@ export default function Home({ posts, events, openGrantsCount }) {
7070 <div className="flex flex-col md:flex-row w-full items-center bg-washedGreen px-8 py-8 rounded-xl">
7171 <div className="flex items-center flex-col p-4 w-full">
7272 <h2 className="text-green">200+</h2>
73− <h3 className="text-green text-center pt-2">
73+ <h4 className="text-green text-center pt-2">
7474 Urbit stars awarded
75− </h3>
75+ </h4>
7676 </div>
7777 <div className="h-0 w-0 md:h-24 md:w-4 bg-lightGreen" />
7878 <div className="flex items-center flex-col p-4 w-full">
7979 <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>
8181 </div>
8282 <div className="h-0 w-0 md:h-24 md:w-4 bg-lightGreen" />
8383 <div className="flex items-center flex-col p-4 w-full">
8484 <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>
8686 </div>
8787 </div>
8888 <div className="measure py-12">
@@ -104,10 +104,10 @@ export default function Home({ posts, events, openGrantsCount }) {
104104 <section className="layout-narrow">
105105 <div className="measure">
106106 <h2 className="pb-12">Build on Urbit</h2>
107− <h3 className="pb-12">
107+ <h4 className="pb-12">
108108 Urbit is a personal OS designed from scratch to run peer-to-peer
109109 applications.
110− </h3>
110+ </h4>
111111 <p className="pb-12">
112112 It solves the hard problems of implementing a peer-to-peer network
113113 (including identity, NAT traversal, and exactly-once delivery) in
styles/globals.css+3−3
@@ -41,7 +41,7 @@ h2,
4141
4242h3,
4343.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;
4545}
4646
4747h4,
@@ -76,11 +76,11 @@ button {
7676}
7777
7878.button-sm {
79− @apply flex px-4 py-1 rounded type-ui;
79+ @apply flex px-4 py-1 rounded-lg type-ui;
8080}
8181
8282.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;
8484}
8585
8686.badge-sm {