Compare commits
	
		
			No commits in common. "main" and "dual-column" have entirely different histories.
		
	
	
		
			main
			...
			dual-colum
		
	
		
							
								
								
									
										100
									
								
								README.md
								
								
								
								
							
							
						
						
									
										100
									
								
								README.md
								
								
								
								
							|  | @ -14,9 +14,9 @@ _Forge-agnostic software release tracker_ | |||
| 
 | ||||
|  | ||||
| 
 | ||||
| _This UI is Amolith's attempt at a balance between simple, pleasant, and | ||||
| functional. Amolith is not a UX professional and would **very** much welcome | ||||
| input from someone more knowledgeable!_ | ||||
| _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!_ | ||||
| 
 | ||||
| ## What is it? | ||||
| 
 | ||||
|  | @ -37,26 +37,18 @@ GitHub, GitLab, or [Forgejo] as well as more minimal options like [cgit] or | |||
| 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. | ||||
| 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 | ||||
| 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. | ||||
| 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 | ||||
| different platform entirely. It's a mess to keep up with. | ||||
| 
 | ||||
| [SourceHut]: https://sourcehut.org/ | ||||
| 
 | ||||
| The capabilities of each platform can also differ, further complicating the | ||||
| space. For example, Forgejo and GitHub have APIs and RSS release feeds, | ||||
| SourceHut has an API and RSS feeds that notify you of _all_ activity in the | ||||
| repo, GitLab only has an API, and there's no standard for discovering the | ||||
| capabilities of arbitrary git frontends like [legit]. | ||||
| 
 | ||||
| [legit]: https://github.com/icyphox/legit | ||||
| 
 | ||||
| And _then_ you have different pieces of information in different places; some | ||||
| developers might publish release announcements on their personal blog and some | ||||
| projects might release security advisories on an external platform prior to | ||||
| publishing a release. | ||||
| 
 | ||||
| All this important info is scattered all over the internet. Willow brings some | ||||
| order to that chaos by supporting both RSS and one of the _very_ few things all | ||||
| the forges and frontends have in common: their **V**ersion **C**ontrol | ||||
| 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 | ||||
| definitely interested in adding support for [Pijul], [Fossil], [Mercurial], and | ||||
| potentially others. | ||||
|  | @ -66,74 +58,40 @@ potentially others. | |||
| [Fossil]: https://www.fossil-scm.org/ | ||||
| [Mercurial]: https://www.mercurial-scm.org/ | ||||
| 
 | ||||
| Amolith (the creator) has recorded some of his other ideas, thoughts, and plans | ||||
| in [his wiki]. | ||||
| Amolith has recorded some of his other ideas, thoughts, and plans in [his wiki]. | ||||
| 
 | ||||
| [his wiki]: https://wiki.secluded.site/hypha/willow | ||||
| 
 | ||||
| ## Installation and use | ||||
| 
 | ||||
| **Disclaimers:**  | ||||
| 1. Prebuilt binaries will be available with the [v0.0.1] release, greatly | ||||
|    simplifying installation. | ||||
| 2. We consider the project _alpha-quality_. There will be bugs. | ||||
| 3. Amolith has tried to make the web UI accessible, but is unsure of its current | ||||
|    usability. | ||||
| 4. The app is not localised yet and English is the only available language. | ||||
| 5. Help with any/all of the above is most welcome! | ||||
| _**Note:** prebuilt binaries will be available after we release [v0.0.1]_ | ||||
| 
 | ||||
| [v0.0.1]: https://todo.sr.ht/~amolith/willow?search=status%3Aopen%20label%3A%22v0.0.1%22 | ||||
| [communication platforms]: #contributing | ||||
| 
 | ||||
| ### Installation | ||||
| 
 | ||||
| This assumes Willow will run on an always-on server, like a VPS. | ||||
| 
 | ||||
| * Clone the repo with `git clone https://git.sr.ht/~amolith/willow` | ||||
| * Enter the repo's folder with `cd willow` | ||||
| * Build the binary with `CGO_ENABLED=0 go build -ldflags="-s -w" -o willow | ||||
|   ./cmd` | ||||
| * Transfer the binary to the server however you like | ||||
| * Execute the binary with `./willow` | ||||
| * Edit the config with `vim config.toml` | ||||
| * Daemonise Willow using systemd or OpenRC or whatever you prefer | ||||
| * Reverse-proxy the web UI (defaults to `localhost:1313`) with Caddy or NGINX or | ||||
|   whatever you prefer | ||||
| 
 | ||||
| ### Use | ||||
| 
 | ||||
| * Clone the repo | ||||
| * Build the binary with `CGO_ENABLED=0 go build -ldflags="-s -w" -o willow ./cmd` | ||||
| * Upload it to a remote server | ||||
| * Execute the binary | ||||
| * Edit the `config.toml` | ||||
| * Create a user with `./willow -a <username>` | ||||
| * Open the web UI (defaults to `localhost:1313`, but [installation] had you put | ||||
|   a proxy in front) | ||||
| * Execute the binary again | ||||
| * Reverse proxy `http://localhost:1313` | ||||
| * Open the web UI | ||||
| * Click `Track new project` | ||||
| * Fill out the form and press `Next` | ||||
| * Indicate which version you're currently on and press `Track releases` | ||||
| * You're now tracking that project's releases! | ||||
| * Fill out the form | ||||
| * Indicate which version you're currently on | ||||
| * That's it! | ||||
| 
 | ||||
| [installation]: #installation | ||||
| 
 | ||||
| If you no longer use that project, click the `Delete?` link to remove it, and, | ||||
| if applicable, Willow's copy of its repo. | ||||
| 
 | ||||
| If you're no longer running the version Willow says you've selected, click the | ||||
| `Modify?` link to select a different version. | ||||
| 
 | ||||
| If there are projects where your selected version does _not_ match what Willow | ||||
| thinks is latest, they'll show up at the top under the **Outdated projects** | ||||
| heading and have a link at the bottom of the card to `View release notes`. | ||||
| Clicking that link populates the right column with those release notes. | ||||
| 
 | ||||
| If there are projects where your selected version _does_ match what Willow | ||||
| thinks is latest, they'll show up at the bottom under the **Up-to-date | ||||
| projects** heading. | ||||
| Note that we still consider the project to be in _alpha_ state. There _will_ be | ||||
| bugs; please help fix them! | ||||
| 
 | ||||
| ## Contributing | ||||
| 
 | ||||
| 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 | ||||
| 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 | ||||
| mentioned in the ticket tracker, please send a description to the [mailing | ||||
| list][email] so we can discuss its inclusion. If we don't feel like it fits with | ||||
| Willow's goals, you're encouraged to fork the project and make whatever changes | ||||
| you like! | ||||
| 
 | ||||
|  |  | |||
|  | @ -44,7 +44,7 @@ | |||
|             <input type="hidden" name="name" value="{{ .Name }}"> | ||||
|             <input type="hidden" name="forge" value="{{ .Forge }}"> | ||||
|             <input type="hidden" name="id" value="{{ .ID }}"> | ||||
|             <input class="button" type="submit" formaction="/new" value="Track releases"> | ||||
|             <input class="button" type="submit" formaction="/new" value="Track future releases"> | ||||
|         </form> | ||||
|         <!-- Append these if they ever start limiting RSS entries: `(eq $forge "gitea") (eq $forge "forgejo")` --> | ||||
|         {{- if or (eq $forge "github") -}} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue