Avatar
Melvin Carvalho
de7ecd1e2976a6adb2ffa5f4db81a7d812c8bb6698aa00dcf1e76adb55efd645
Mathematician and Web Developer

Nice find. I'm going to have a go at the git + nostr thing. It's going to be quite a challenge. First version will cut out a lot of things. Hopefully not too much so that it's useless. We will see!

How about combining git and bitcoin?

Needs a new kind (17) so not to mix with text notes (NIP-01)

Starting work on NIP-17

NIP-17

======

Git Updates and Discovery Over Nostr

------------------------------------

`draft` `optional` `author:melvincarvalho`

- Reserves: `kind 17`

Do not merge until implemented, work in progress

------------------------------------------------

Introduction

------------

Git updates over nostr enable uses cases similar to [github actions](https://github.com/features/actions) / [continuous integration](https://en.wikipedia.org/wiki/Continuous_integration) / [continuous deplyment](https://en.wikipedia.org/wiki/Continuous_deployment) / [travis](https://travis-ci.org/), but without central points of failure. The aim is to create continuous distributed software development processes, without having to rely on complex or centralized services.

A special event with kind `17`, can be used to indicate git commit messages. This number was selected to be hopefully easy to remember : `G-1-7`.

Git events *could* be displayed as a text note (kind=1) too, but they are unlikley to mix well with human readable notes, so that motivates git events having its own kind, and even specialist relays.

The git object data is not designed to be stored in nostr, but rather, the signaling, update, version and commit data.

It will also be possible signal a recommended repo, just like it is possible to recommended a relay. In this way, a codebase could start on github, move to gitlab, then to an own hosted instance, and finally back to github. All, without any breaks in service.

This NIP is an early draft and work in progress. Implementations are being developed which will incorporate what is learnt.

Event Structure

===============

Git events over nostr have the following attributes:

**`content`** SHOULD be equal to the hex-encoded git commit hash. Typically this will be a 40 character sha-1 hash, but git will soon be allowing sha-2 hashes too

**`created_at`** SHOULD be equal to git *author date*. This is the same format as nostr.

**`tags`** MAY contain an entry identifying the previous commit, if one exists, in the form `["e", ""]`. Further tags can be developed to capture informative git information such as major/minor versioning. TBD: it will be possible to hint at a recommended git URL to download the repos (e.g. from github), but it is not yet decided whether this would be a tag itself or an additional entry in an existing tag.

**`pubkey`** SHOULD be associated with a given repo. This could be communicated out of band, or, for example MAY be included in a file in the root directory of the repo, `nostr.json`

```JSON

{

"pubkey": "abcd123..."

}

```

Related Work

============

- http://git.jb55.com/git-nostr-tools/file/README.txt.html

Yes. but not the same, we funded some federation work via NLNet

Gitea will be useful, but not a full solution

Needs #nostr

Literally one of the reasons I wanted to create #nostr is for git without github

Note that git can also run code, which can also interact with nostr

pretty sure your tests are working, some without reply

Did you send them back double?