on master help sign in
Merge pull request #2143 from urbit/sigilante-git

RFP for Git server on Clay

commit1184c4205dbbd1363b1c7bf08e36753d375a42fa authorSigilante <57601680+sigilante@users.noreply.github.com> dateThu 1 Jun 2023, 18:29 (3 years ago) parenta1a39f2f56db61
1 file changed+42
content/grants/2023/git-on-clay.md+42
content/grants/2023/git-on-clay.mdnew file+42
@@ -0,0 +1,42 @@
1++++
2+
3+title = "Implement a Git server on Urbit"
4+date = "2023-06-01"
5+
6+[taxonomies]
7+grant_type = ["RFP"]
8+grant_category = ["App Dev"]
9+
10+[extra]
11+image = ""
12+description = "Implement a Git server capable of hosting desks as repos"
13+reward = "TBD"
14+assignee = [""]
15+champion = [""]
16+grant_id = "P1001"
17+completed = false
18+canceled = false
19+
20++++
21+
22+A Git server backend would open up the use of Urbit ships to interface with remote developers and resources.
23+An Urbit implementation of Git would not have to implement all of the features that a Git server typically
24+expects, merely the ability to interface through clone, fetch, and merge operations and through the https and git
25+protocols. (Obviously sufficient internal representations of Git objects, diffs, and so forth are necessary as well.)
26+
27+Having an Urbit-native Git server-side representation has the potential to revolutionize the Urbit developer
28+experience. Not only would it become possible to synchronize Clay and host OS files through `git`, but Urbit would
29+also have direct access to the wealth of Git-based resources on the broader web. More than this, **Urbit would
30+immediately become capable of being a fully decentralized Git repository system.**
31+
32+A solution could be built directly in userspace or on top of Clay. If Clay is used, then there would need to be a
33+way for an unvalidated desk (no mark validation) to store data prior to use in Urbit, e.g. fed up to a functioning
34+regular desk or read out (via remote scry or otherwise) to the Git-based world. In this case, Git operations would
35+be done at a Unix command line regularly and Urbit would serve as a central repo or distribution point. (This could
36+ease development through the appropriate use of scripts, CI and testing, and hooks.)
37+
38+A fully userspace solution would be viable, as long as it was able to export a Git-compatible representation via the
39+API, and as long as it spoke `https` and `git` at a minimum.
40+
41+(Note particularly that this is not an implementation of `git` on Urbit, but an implementation of a Git repository
42+server. The `git` CLI would encompass a complementary set of concerns and operations.)