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
|
|
|
|
2023-12-21 05:29:12 +00:00
|
|
|
![screenshot of willow's current web UI](.files/2023-10-29.png)
|
2023-09-24 20:52:42 +00:00
|
|
|
|
|
|
|
_This UI is a minimal proof-of-concept, it's going to change drastically in the
|
2023-09-24 21:34:48 +00:00
|
|
|
near future._
|
2023-09-24 20:52:42 +00:00
|
|
|
|
2023-09-22 02:26:56 +00:00
|
|
|
## What is it?
|
|
|
|
|
2023-11-28 17:03:51 +00:00
|
|
|
_If you'd rather watch a video, I gave a [lightning talk on Willow] at the 2023
|
|
|
|
Ubuntu Summit._
|
|
|
|
|
|
|
|
[lightning talk on Willow]: https://youtu.be/XIGxKyekvBQ?t=29900
|
|
|
|
|
2023-09-22 02:26:56 +00:00
|
|
|
Willow tracks software releases across arbitrary forge platforms by trying to
|
|
|
|
support one of the very few things they all have in common: the VCS. At the
|
|
|
|
moment, git is the _only_ supported VCS, but I would be interested in adding
|
|
|
|
Pijul, Fossil, Mercurial, etc. You can also track releases using RSS feeds.
|
|
|
|
|
|
|
|
Willow exists because decentralisation can be annoying. One piece of software
|
|
|
|
can be found on GitHub, another piece on GitLab, one on Bitbucket, a fourth on
|
|
|
|
SourceHut, and a fifth on the developer's self-hosted Forgejo instance. Forgejo
|
|
|
|
and GitHub have RSS feeds that only notify you of releases. GitLab doesn't
|
|
|
|
support RSS feeds for anything, just an API you can poke. Some software updates
|
|
|
|
might be on the developers' personal blog. Sometimes there are CVEs for specific
|
|
|
|
software and they get published somewhere completely different before they're
|
|
|
|
fixed in a release.
|
|
|
|
|
|
|
|
I want to bring all that scattered information under one roof so a developer or
|
|
|
|
sysadmin can pop open willow's web UI and immediately see what needs updating
|
|
|
|
where. I've recorded some of my other ideas and plans in [my wiki].
|
|
|
|
|
|
|
|
[my wiki]: https://wiki.secluded.site/hypha/willow
|
|
|
|
|
|
|
|
## Installation and use
|
|
|
|
|
2023-11-22 20:34:50 +00:00
|
|
|
_**Note:** prebuilt binaries will be available after I release [v0.0.1]_
|
|
|
|
|
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!
|
|
|
|
|
2023-10-26 19:15:40 +00:00
|
|
|
Note that I still consider the project to be in _alpha_ state. There will be
|
|
|
|
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
|
2023-12-21 05:26:25 +00:00
|
|
|
mentioned in the ticket tracker, please send a description to the [mailing
|
|
|
|
list][email] so we can discuss its inclusion. If I don't feel like it fits with
|
|
|
|
Willow's goals, you're encouraged to fork the project and make whatever changes
|
|
|
|
you like!
|
2023-09-24 21:32:51 +00:00
|
|
|
|
|
|
|
Questions, comments, and patches can always be sent to the [mailing
|
|
|
|
list][email], but I'm also in the [IRC channel][irc]/[XMPP room][xmpp] pretty
|
2023-12-21 05:26:25 +00:00
|
|
|
much 24/7. I might not see messages right away, so please stick around.
|
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
|
2023-12-21 05:26:25 +00:00
|
|
|
[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._
|
|
|
|
|
2023-12-21 05:27:19 +00:00
|
|
|
### Paperwork
|
2023-12-21 05:26:25 +00:00
|
|
|
|
2023-12-21 17:08:39 +00:00
|
|
|
Willow will always be free software, but it's hard to anticipate the future. I
|
2023-12-21 17:08:00 +00:00
|
|
|
may want to change to a different Free (FSF approved) and Open Source (OSI
|
|
|
|
approved) license in the future. To allow this limited relicensing, I ask
|
|
|
|
contributors to sign a _**F**iduciary **L**icense **A**greement_, or an FLA,
|
|
|
|
that allows me to change Willow's license at any time _without_ contributor
|
|
|
|
input, but _with_ those license limitations.
|
2023-12-21 05:26:25 +00:00
|
|
|
|
|
|
|
Willow's FLA transfers the contributor's copyright over their contribution to
|
2023-12-21 05:36:23 +00:00
|
|
|
Amolith and limits which licenses he can choose to "licenses the Free Software
|
|
|
|
Foundation classifies as Free Software License and which are approved by the
|
|
|
|
Open Source Initiative as Open Source licenses".
|
2023-12-21 05:26:25 +00:00
|
|
|
|
|
|
|
Essentially, it allows me to keep Willow's license(s) up-to-date without
|
2023-12-21 05:36:23 +00:00
|
|
|
requiring me to contact every historical contributor, and it does all that while
|
2023-12-21 05:26:25 +00:00
|
|
|
ensuring Willow remains free software :)
|
|
|
|
|
|
|
|
Alongside initial contributions, please sign the FLA and email a digital copy to
|
2023-12-21 05:28:23 +00:00
|
|
|
amolith@secluded.site. You can sign the FLA by printing, signing, and scanning
|
2023-12-21 05:36:23 +00:00
|
|
|
the document or by completing the form and drawing your signature in a PDF
|
|
|
|
editor like [the one built into Firefox].
|
2023-12-21 05:26:25 +00:00
|
|
|
|
|
|
|
[the one built into Firefox]: https://www.mozilla.org/en-US/firefox/features/pdf-editor/
|
|
|
|
|
|
|
|
- **Individuals** sign the [Individual FLA].
|
|
|
|
- Companies, co-ops, non-profits, and other **entities** sign the [Entity FLA]
|
|
|
|
on behalf of their constituent individuals
|
|
|
|
|
|
|
|
[Individual FLA]: .files/ifla.pdf
|
|
|
|
[Entity FLA]: .files/efla.pdf
|
|
|
|
|
|
|
|
### Configuring git...
|
|
|
|
|
|
|
|
…for <code>git send-email</code>
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
git config sendemail.to "~amolith/willow@lists.sr.ht"
|
|
|
|
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
|