willow/README.md

158 lines
5.6 KiB
Markdown
Raw Normal View History

2023-09-21 18:03:21 +00:00
<!--
SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
SPDX-License-Identifier: CC0-1.0
-->
2023-09-22 02:26:56 +00:00
# Willow
2023-09-21 18:03:21 +00:00
[![Go report card status][goreportcard-badge]][goreportcard]
[![REUSE status][reuse-shield]][reuse]
[![Donate with fosspay][fosspay-shield]][fosspay]
2023-09-24 21:34:48 +00:00
_Forge-agnostic software release tracker_
2023-09-21 18:03:21 +00:00
2024-02-24 16:46:18 +00:00
![screenshot of willow's current web UI](.files/2024-02-24.png)
2023-09-24 20:52:42 +00:00
2024-02-29 21:22:57 +00:00
_This UI is Amolith's attempt at something simple and functional, yet still
friendly and pleasant. Amolith is not a UX professional and would **very** much
welcome input from one!_
2023-09-24 20:52:42 +00:00
2023-09-22 02:26:56 +00:00
## What is it?
2024-02-29 21:22:57 +00:00
_If you'd rather watch a short video, Amolith gave a 5-minute [lightning talk on
Willow] at the 2023 Ubuntu Summit._
2023-11-28 17:03:51 +00:00
[lightning talk on Willow]: https://youtu.be/XIGxKyekvBQ?t=29900
2024-02-29 21:25:10 +00:00
Willow helps developers, sysadmins, and homelabbers keep up with software
2024-02-29 21:22:57 +00:00
releases across arbitrary forge platforms, including full-featured forges like
2024-02-29 21:38:04 +00:00
GitHub, GitLab, or [Forgejo] as well as more minimal options like [cgit] or
2024-02-29 21:22:57 +00:00
[stagit].
[Forgejo]: https://forgejo.org/
[cgit]: https://git.zx2c4.com/cgit/
[stagit]: https://codemadness.org/stagit.html
2024-02-29 21:25:10 +00:00
It exists because decentralisation, as wonderful as it is, does have some pain
points. One piece of software is on GitHub, another piece is on GitLab, one on
Bitbucket, a fourth on [SourceHut], a fifth on the developer's self-hosted
Forgejo instance. The capabilities of each platform can differ as well, making
the problem even more difficult to solve. Forgejo and GitHub have RSS feeds that
2024-02-29 21:27:06 +00:00
notify you of releases as well as APIs. SourceHut has both an API and firehose
RSS feeds that notify you of _all_ activity in the repo. GitLab only has an API.
2024-02-29 21:25:10 +00:00
Some release announcements might be on the developer's personal blog. Sometimes
there's a CVE announcement prior to a release and those get published on a
2024-02-29 21:28:41 +00:00
different platform entirely. It's a mess to keep up with.
2024-02-29 21:22:57 +00:00
[SourceHut]: https://sourcehut.org/
2024-02-29 21:28:41 +00:00
Willow brings some order to that mess by supporting both RSS and one of the
_very_ few things all the forges have in common: their **V**ersion **C**ontrol
**S**ystem. At the moment, [Git] is the _only_ supported VCS, but we're
2024-02-29 21:29:40 +00:00
definitely interested in adding support for [Pijul], [Fossil], [Mercurial], and
2024-02-29 21:28:41 +00:00
potentially others.
2024-02-29 21:22:57 +00:00
[Git]: https://git-scm.com/
[Pijul]: https://pijul.org/
[Fossil]: https://www.fossil-scm.org/
[Mercurial]: https://www.mercurial-scm.org/
Amolith has recorded some of his other ideas, thoughts, and plans in [his wiki].
2023-09-22 02:26:56 +00:00
2024-02-29 21:29:40 +00:00
[his wiki]: https://wiki.secluded.site/hypha/willow
2023-09-22 02:26:56 +00:00
## Installation and use
2024-02-29 21:22:57 +00:00
_**Note:** prebuilt binaries will be available after we release [v0.0.1]_
2023-11-22 20:34:50 +00:00
2023-11-22 20:35:21 +00:00
[v0.0.1]: https://todo.sr.ht/~amolith/willow?search=status%3Aopen%20label%3A%22v0.0.1%22
2023-11-22 20:34:50 +00:00
2023-09-22 02:26:56 +00:00
* Clone the repo
2023-10-26 19:15:40 +00:00
* Build the binary with `CGO_ENABLED=0 go build -ldflags="-s -w" -o willow ./cmd`
2023-09-22 02:26:56 +00:00
* Upload it to a remote server
* Execute the binary
2023-10-26 19:15:40 +00:00
* Edit the `config.toml`
* Create a user with `./willow -a <username>`
* Execute the binary again
* Reverse proxy `http://localhost:1313`
2023-09-22 02:26:56 +00:00
* Open the web UI
* Click `Track new project`
* Fill out the form
* Indicate which version you're currently on
* That's it!
2024-02-29 21:22:57 +00:00
Note that we still consider the project to be in _alpha_ state. There _will_ be
2023-10-26 19:15:40 +00:00
bugs; please help fix them!
2023-09-21 18:03:21 +00:00
2023-09-24 21:32:51 +00:00
## Contributing
2023-09-21 18:03:21 +00:00
2023-09-24 21:32:51 +00:00
Contributions are very much welcome! Please take a look at the [ticket
tracker][todo] and see if there's anything you're interested in working on. If
there's specific functionality you'd like to see implemented and it's not
2024-02-29 23:06:25 +00:00
mentioned in the ticket tracker, please describe it through one of the platforms
below so we can discuss its inclusion. If we don't feel like it fits with
2024-02-29 21:25:10 +00:00
Willow's goals, you're encouraged to fork the project and make whatever changes
you like!
2023-09-24 21:32:51 +00:00
2024-02-29 21:22:57 +00:00
Questions, comments, and patches can always go to the [mailing list][email], but
there's also an [IRC channel][irc] and an [XMPP MUC][xmpp] for real-time
interactions.
2023-09-21 18:03:21 +00:00
2023-09-24 21:32:51 +00:00
- Email: [~amolith/willow@lists.sr.ht][email]
- IRC: [irc.libera.chat/#willow][irc]
- XMPP: [willow@muc.secluded.site][xmpp]
[email]: mailto:~amolith/willow@lists.sr.ht
[irc]: ircs://irc.libera.chat/#willow
2023-09-24 21:32:51 +00:00
[xmpp]: xmpp:willow@muc.secluded.site?join
[todo]: https://todo.sr.ht/~amolith/willow
2023-09-21 18:03:21 +00:00
_If you haven't used mailing lists before, please take a look at [SourceHut's
documentation](https://man.sr.ht/lists.sr.ht/), especially the etiquette
section._
### Configuring git...
…for <code>git send-email</code>
``` shell
git config sendemail.to "~amolith/willow@lists.sr.ht"
git config format.subjectPrefix "PATCH willow"
git send-email [HASH]
```
…for signing the [DCO]
``` shell
git config format.signOff yes
```
[DCO]: https://developercertificate.org/
2023-09-24 21:32:51 +00:00
### Required tools
- [Go](https://go.dev/)
- [gofumpt](https://github.com/mvdan/gofumpt)
- Stricter formatting rules than the default `go fmt`
- [golangci-lint](https://golangci-lint.run/)
- Aggregates various preinstalled Go linters, runs them in parallel, and makes
heavy use of the Go build cache
- [Staticcheck](https://staticcheck.dev/)
- Uses static analysis to find bugs and performance issues, offer
simplifications, and enforce style rules
### Suggested tools
- [just](https://github.com/casey/just)
- Command runner to simplify use of the required tools
2023-10-28 17:05:25 +00:00
- [air](https://github.com/cosmtrek/air)
- Watches source files and rebuilds/executes the project when sources change
2023-09-24 21:32:51 +00:00
2023-09-22 02:26:56 +00:00
[goreportcard-badge]: https://goreportcard.com/badge/git.sr.ht/~amolith/willow
[goreportcard]: https://goreportcard.com/report/git.sr.ht/~amolith/willow
[reuse]: https://api.reuse.software/info/git.sr.ht/~amolith/willow
[reuse-shield]: https://shields.io/reuse/compliance/git.sr.ht/~amolith/willow
2023-09-21 18:03:21 +00:00
[fosspay]: https://secluded.site/donate/
[fosspay-shield]: https://shields.io/badge/donate-fosspay-yellow