This is a topic inviting ideas and participation in defining and building a Safe-git UI.
All are welcome, I have outlined an approach which like everything will be open to debate and change. I’d like to start with something simple and extend that incrementally, so have proposed something based on spawning
git commands, along with a new CLI (to be written) called
gx to add support for github style functionality (e.g. github issues), but without a server.
You can contribute general points here, or for more specific discussions, open an issue on the github repo: safenetwork-gitportal
Safe-git UI Vision
github/gitlab/gitea like GUI
Possibly a Tauri based Rust backend with web frontend, e.g. using Svelte:
- operates on a local repo
- spawns git commands
- a new
gxCLI to create issues, comments etc (e.g. stored in
- data for extas held in the repo (e.g.
issues/issue-001.json, or perhaps in RDF/turtle)
git push/pullremotes on Safe (e.g. via FUSE mounted Safe filesyste)
- cross platform GUI: Windows, MacOS and Linux (e.g. using Tauri)
- cross platform terminal UI: Windows, MacOS and Linux (e.g. using tui-rs)
- web UI for mobile (e.g. static HTML hosted on Safe Network)
Discussions to Have
Existing git UIs
There are many graphical, web and terminal UIs for
git, so these may be adapted or learned from.
Which should we look at and why? If you know any well your input would be very helpful.
gx is a new CLI we need to create that adds features not handled by git, such as github issues.
gxbased features must work in a way which allows a GUI to support them by spawning
gxcommands. Doing so enables anyone to operate using the CLI, or to build their own Safe-git UI with the tools of their choice.
gxadds something based on a github feature, it should also provide a way to import this from a github repo using the github APIs.
what features do we want, and what difficulties do they present?
How to store and publish
Note that Safe has a built in perpetual history for public data which negates the need for
.gitex to be part of the repo’s
git history. But then we need a way for third parties to create issues in a way that makes them accessible to everyone interested in a git repository published on Safe.
I’m keen to try out Tauri and Svelte at least for proof of concept, but if we define the underlying data storage and structures for
gx, anyone will be able to build a GUI with the tools of their choice (e.g. spawning
So you can build your own Safe-git UI tools while collaborating on a platform we can create and extend together.
Update - Current Status
The goal is a github like portal which can be hosted on p2p or static storage, initially targetting Safe Network. So initially a Safe Network in-browser app using
git.go libraries (rather than CLI envisaged initially) to create a realistic alternative to github. Ability to use
git-bug to add support for issues (and later pull requests) to a
git repo without polluting your commit history.
p2p Git Portal a proof-of-concept:
The first stage is complete - testing welcome!
I’ve finished proof of:
- clone from git repositories
- choose active repo from list of cloned repos
- list commits from active repo
This should be much easier to try out than previously, so please have a go!
Next: add git-bug
- get compiling to web assembly
- make into a package
- modify to use go-billy filesystem for git and git-bug operations
- integrate into the git portal
I also have a new offer of help to spruce up the UI!
You can follow the proof-of-concept here:
For more see this post and the posts which follow it: