2016-03-05 04:54:37 +01:00
|
|
|
# Vervis
|
|
|
|
|
|
|
|
**Vervis** is a project hosting and management application, with a focus on
|
2018-03-31 16:58:33 +02:00
|
|
|
software projects and decentralization. There is still a lot to do, but if you'd
|
2018-03-31 16:39:12 +02:00
|
|
|
like to try it, a few things more or less work. See below for details.
|
2016-03-05 04:54:37 +01:00
|
|
|
|
2018-03-31 16:59:12 +02:00
|
|
|
Vervis is free software, and is committed to software freedom. Most of its code
|
|
|
|
is in the public domain using the CC0 Public Domain Dedication. The application
|
2018-03-31 17:03:56 +02:00
|
|
|
as a whole however is released under AGPL version 3. For the legal details, see
|
|
|
|
the file `COPYING`. Please use and reuse Vervis for a Good purpose, and share
|
|
|
|
your work too in the same spirit.
|
2016-03-05 04:54:37 +01:00
|
|
|
|
2018-03-31 16:39:12 +02:00
|
|
|
## Try It
|
|
|
|
|
|
|
|
You can either use the existing instance mentioned below, or install your own
|
|
|
|
instance (see `INSTALL.md`).
|
|
|
|
|
|
|
|
My focus has been on writing the backend side of features and exploring various
|
|
|
|
experimental features. As a result, the user interface and visual design and
|
|
|
|
page styles (i.e. the whole UX and UI) are in a bad shape right now, so I want
|
|
|
|
to write a few little guidelines to help you find your way until this situation
|
|
|
|
improves.
|
|
|
|
|
2022-06-27 22:21:05 +02:00
|
|
|
There is a Vervis instance running at <https://vervis.peers.community>, and I
|
2018-03-31 16:39:12 +02:00
|
|
|
store my code on it. Feel free to use it and try it, however do please treat it
|
|
|
|
as a demo, as it's not a reliable stable instance for general use yet. If for
|
|
|
|
any reason you do with to keep some code and tickets etc. on it for actual use,
|
|
|
|
please contact me to let me know.
|
|
|
|
|
|
|
|
Here are the steps to make the most out of it at this point (at least at the
|
|
|
|
time of writing, I'll try to keep this little tutorial up to date)!
|
|
|
|
|
|
|
|
1. Create an SSH key if you don't have one. Most likely you do, for pushing to
|
|
|
|
your existing repos hosted on your favorite project hosting platform.
|
|
|
|
2. Browse to the instance I linked above, and click *Sign up*. Choose a
|
|
|
|
username and a password. Email address is currently optional on this
|
|
|
|
instance, but it's going to be required soon and used for things like
|
|
|
|
password reset, so please do provide a real email address.
|
|
|
|
3. Log in. Once you log in, the front page will change, and among other things,
|
|
|
|
it will link to your SSH keys. Go there to add your SSH key. In the
|
|
|
|
algorithm box you paste the first part e.g. `ssh-rsa`, and in the second box
|
|
|
|
you paste the long scary part that follows it.
|
|
|
|
4. The front page also links you to repos and projects, you can create a
|
|
|
|
project and open tickets. You can also create a Git or Darcs repo, and
|
|
|
|
optionally associate it with a project. A project can have any number of
|
|
|
|
repos asociated with it, sharing the same ticket tracker. Creating a project
|
|
|
|
or repo may ask you to create a project or repo role; the front page has
|
|
|
|
links for creating these
|
|
|
|
5. You can browse all the projects and repos hosted on the instance.
|
|
|
|
6. Add the following to your `~/.ssh/config` file, or create it if doesn't
|
2018-10-25 22:28:06 +02:00
|
|
|
exist. To be honest I'm not sure it's still required, and haven't tested
|
|
|
|
yet. If you find that this step is unnecessary and everything works without
|
|
|
|
it, let me know :)
|
2018-03-31 16:39:12 +02:00
|
|
|
|
2022-06-27 22:21:05 +02:00
|
|
|
Host vervis.peers.community
|
2018-03-31 16:39:12 +02:00
|
|
|
ControlMaster no
|
|
|
|
ForwardAgent no
|
|
|
|
ForwardX11 no
|
2022-06-24 07:38:59 +02:00
|
|
|
KexAlgorithms +diffie-hellman-group1-sha1
|
|
|
|
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
|
2018-03-31 16:39:12 +02:00
|
|
|
|
|
|
|
Once you create a repository, it is possible that initially, trying to look at
|
|
|
|
it will give you 404. It should be okay though once you push some commit into
|
|
|
|
it.
|
|
|
|
|
|
|
|
The examples below use Darcs, but it's exactly the same for Git. They are
|
|
|
|
equally supported.
|
|
|
|
|
|
|
|
Cloning repositories works over (unauthenticated) HTTPS and (authenticated)
|
|
|
|
SSH.
|
|
|
|
|
|
|
|
**HTTPS clone:**
|
|
|
|
|
2022-09-27 06:49:17 +02:00
|
|
|
$ darcs clone https://vervis.peers.community/repos/WvWbo vervis
|
2018-03-31 16:39:12 +02:00
|
|
|
|
|
|
|
**SSH clone and push:**
|
|
|
|
|
|
|
|
If your system username and Vervis username are identical:
|
|
|
|
|
2022-09-27 06:49:17 +02:00
|
|
|
$ darcs clone vervis.peers.community:WvWbo vervis
|
2018-03-31 16:39:12 +02:00
|
|
|
|
|
|
|
If usernames are different:
|
|
|
|
|
2022-09-27 06:49:17 +02:00
|
|
|
$ darcs clone luke@vervis.peers.community:WvWbo vervis
|
2018-03-31 16:39:12 +02:00
|
|
|
|
|
|
|
A few more little notes:
|
|
|
|
|
|
|
|
- No password reset, it's already implemented but not deployed yet at the time
|
|
|
|
of writing these words
|
|
|
|
- A few more features are available, such as ticket workflows and ticket claim
|
|
|
|
requests, but they are less important so I'm not going into them at this
|
|
|
|
point
|
|
|
|
- Deletion of users, projects and repos may not work
|
|
|
|
- Login session should last for 2 hours after last access
|
|
|
|
- The instance I'm running serves only HTTPS, no plain HTTP
|
|
|
|
- There's no HTTPS push
|
|
|
|
- Merge requests not implemented yet
|
|
|
|
- I started working on federation using ActivityPub, I'll update here when it's
|
|
|
|
ready for trying against ActivityPub clients and servers
|
|
|
|
- Feedback is very very very very very welcome and needed!!! :)
|
|
|
|
|
2016-04-09 17:44:29 +02:00
|
|
|
## Features
|
|
|
|
|
2016-05-13 17:15:30 +02:00
|
|
|
This is a list of initial features I plan to support in Vervis. It helps me get
|
2018-03-31 16:39:12 +02:00
|
|
|
an overview of more-or-less what's left to do before the first release. It
|
|
|
|
hasn't been updated in a long time, actually, but soon I'll get to it.
|
2016-05-13 17:15:30 +02:00
|
|
|
|
2016-04-09 17:44:29 +02:00
|
|
|
[ ] - To do
|
|
|
|
[~] - Work in progress
|
|
|
|
[/] - Initial coding done, needs tests and polishing
|
|
|
|
[x] - Complete
|
|
|
|
|
|
|
|
[ ] User management
|
2016-04-18 20:57:34 +02:00
|
|
|
[~] View your personal overview
|
|
|
|
[~] Other users' pages
|
|
|
|
[/] Register
|
2016-04-09 17:44:29 +02:00
|
|
|
[ ] Delete account
|
|
|
|
[/] Log in
|
|
|
|
[/] Log out
|
|
|
|
[ ] Reset password
|
|
|
|
[ ] TLS client cert
|
|
|
|
[ ] Upload it
|
|
|
|
[ ] View it
|
|
|
|
[ ] Log in using it
|
|
|
|
[ ] Change profile details
|
2016-05-14 00:06:23 +02:00
|
|
|
[/] Key management
|
2016-04-18 20:57:34 +02:00
|
|
|
[/] Add key
|
2016-05-14 00:06:23 +02:00
|
|
|
[/] Delete key
|
2016-04-18 20:57:34 +02:00
|
|
|
[/] View keys
|
2016-04-09 17:44:29 +02:00
|
|
|
[ ] Project management
|
2016-05-13 17:15:30 +02:00
|
|
|
[/] Tickets
|
2016-04-09 17:44:29 +02:00
|
|
|
[ ] Wiki
|
|
|
|
[ ] Kanban
|
|
|
|
[ ] Merge requests
|
|
|
|
[ ] Repo management
|
2016-04-18 20:57:34 +02:00
|
|
|
[ ] Delete repo
|
|
|
|
[/] Add repo
|
|
|
|
[ ] Rename repo
|
|
|
|
[ ] Edit repo settings
|
|
|
|
[ ] View repo content
|
|
|
|
[/] File tree
|
|
|
|
[ ] File content
|
|
|
|
[/] Plain text
|
|
|
|
[/] Syntax highlighting
|
|
|
|
[/] Document rendering
|
|
|
|
[ ] Images
|
|
|
|
[ ] Audio
|
|
|
|
[ ] Video
|
|
|
|
[ ] Raw file download
|
2016-05-04 13:09:36 +02:00
|
|
|
[ ] Darcs
|
|
|
|
[ ] Create new repo
|
2016-05-04 13:50:12 +02:00
|
|
|
[/] Web
|
2016-05-04 13:09:36 +02:00
|
|
|
[ ] SSH
|
|
|
|
[ ] Delete repo
|
2016-05-13 23:41:46 +02:00
|
|
|
[/] Web
|
2016-05-04 13:09:36 +02:00
|
|
|
[ ] SSH
|
2016-05-13 17:15:30 +02:00
|
|
|
[/] Clone
|
|
|
|
[/] HTTP
|
|
|
|
[/] SSH
|
|
|
|
[/] Pull
|
|
|
|
[/] HTTP
|
2016-05-04 13:09:36 +02:00
|
|
|
[/] SSH
|
|
|
|
[ ] Push
|
|
|
|
[ ] HTTP
|
2016-05-13 17:15:30 +02:00
|
|
|
[/] SSH
|
|
|
|
[/] View
|
|
|
|
[/] History
|
|
|
|
[/] Files
|
2016-05-04 13:09:36 +02:00
|
|
|
[ ] Git
|
|
|
|
[ ] Create new repo
|
|
|
|
[/] Web
|
|
|
|
[ ] SSH
|
|
|
|
[ ] Delete repo
|
2016-05-13 23:41:46 +02:00
|
|
|
[/] Web
|
2016-05-04 13:09:36 +02:00
|
|
|
[ ] SSH
|
|
|
|
[ ] Clone
|
2016-07-27 17:28:19 +02:00
|
|
|
[/] HTTP
|
2016-05-04 13:09:36 +02:00
|
|
|
[/] SSH
|
|
|
|
[ ] Git
|
|
|
|
[ ] Pull
|
2016-07-27 17:28:19 +02:00
|
|
|
[/] HTTP
|
2016-05-04 13:09:36 +02:00
|
|
|
[/] SSH
|
|
|
|
[ ] Git
|
|
|
|
[ ] Push
|
|
|
|
[ ] HTTP
|
|
|
|
[/] SSH
|
2016-05-13 17:15:30 +02:00
|
|
|
[/] View
|
2016-05-04 13:09:36 +02:00
|
|
|
[/] History
|
|
|
|
[/] Files
|
2019-05-05 13:15:51 +02:00
|
|
|
[~] Federation
|
2016-04-09 17:44:29 +02:00
|
|
|
|
2016-06-05 12:42:57 +02:00
|
|
|
## Reliability requirements
|
|
|
|
|
|
|
|
These features are considered critical for a Vervis instance to be a reasonably
|
|
|
|
reliable place where people can host their projects and repos, and not worry
|
|
|
|
about some bug or missing feature causing loss of data or access.
|
|
|
|
|
|
|
|
[ ] Password reset, at least over plain email, either automatically or a
|
|
|
|
temporary manual hack which will work at least for personal instances
|
2016-06-06 08:03:12 +02:00
|
|
|
[x] Git pull and push over SSH fully working
|
|
|
|
[x] Darcs pull and push over SSH fully working
|
|
|
|
[x] SSH server implementation really secure as far as I know
|
|
|
|
[x] TLS support, especially critical when sending passwords. For now, done
|
|
|
|
externally through Lighttpd, not Vervis itself
|
|
|
|
[x] Darcs pull over HTTP and HTTPS
|
2016-07-27 17:28:19 +02:00
|
|
|
[x] Git pull over HTTP and HTTPS
|
2016-06-05 12:42:57 +02:00
|
|
|
[ ] Clear policy and guidelines for DB schema changes
|
|
|
|
[ ] Running instance has data backups
|
|
|
|
|
2019-05-05 13:15:51 +02:00
|
|
|
## Federation
|
|
|
|
|
|
|
|
See `FEDERATION.md`.
|
|
|
|
|
2016-03-05 04:54:37 +01:00
|
|
|
## Installation
|
|
|
|
|
2018-11-01 10:46:18 +01:00
|
|
|
See `INSTALL.md`.
|
2016-03-05 04:54:37 +01:00
|
|
|
|
|
|
|
## Using
|
|
|
|
|
|
|
|
See the .cabal file for more info and link to project website and version
|
2016-01-28 15:15:54 +01:00
|
|
|
control.
|
|
|
|
|
2016-03-05 04:54:37 +01:00
|
|
|
The official download location is the Darcs repository:
|
|
|
|
|
2022-09-27 06:49:17 +02:00
|
|
|
<https://vervis.peers.community/repos/WvWbo>
|
2016-03-05 04:54:37 +01:00
|
|
|
|
2018-03-31 16:39:12 +02:00
|
|
|
There is a backup repo, not always up to date though, at:
|
|
|
|
|
|
|
|
<https://hub.darcs.net/fr33domlover/vervis>
|
2016-03-05 04:54:37 +01:00
|
|
|
|
|
|
|
See the file `INSTALL.md` for a detailed usage and deployment guide. The file
|
|
|
|
`ChangeLog` explains how to see the history log of the changes done in the
|
|
|
|
code. `NEWS.md` provides a friendly overview of the changes for each release.
|
|
|
|
|
2022-09-01 11:13:16 +02:00
|
|
|
## Finding your way in the codebase
|
|
|
|
|
2022-09-24 11:12:45 +02:00
|
|
|
Folders:
|
|
|
|
|
2022-09-01 11:13:16 +02:00
|
|
|
- `app`:
|
|
|
|
*main* functions of the web app, for regular build and for development modes
|
|
|
|
- `config`:
|
|
|
|
Settings the app reads when it launches, some defined by a human and some
|
|
|
|
auto-generated
|
|
|
|
- `_darcs`:
|
|
|
|
Internal version control data of this repo, similar to a `.git` directory
|
|
|
|
- `embed`:
|
|
|
|
Files embedded into the app source code at build time (using TH)
|
|
|
|
- `hook-darcs` & `hook-git`:
|
|
|
|
*main* functions for VCS hook programs to be inserted into every repo hosted
|
|
|
|
by the app
|
|
|
|
- `migrations`:
|
|
|
|
Helper files for DB migrations: New entities added & model files for
|
|
|
|
migrations involving data manipulation
|
|
|
|
- `src`:
|
|
|
|
Web app Haskell source code, built as a library whose modules are used by the
|
|
|
|
various executables
|
|
|
|
- `static`:
|
|
|
|
Static files (such as CSS and fonts) served by the web app (no such files at
|
|
|
|
the moment)
|
|
|
|
- `templates`:
|
|
|
|
UI page and widget templates (`.hamlet` for HTML, `.cassius` for CSS)
|
|
|
|
- `test`:
|
|
|
|
No tests have been written yet
|
|
|
|
- `th`:
|
|
|
|
Domain-specific language snippets, from which code is generated using TH
|
|
|
|
|
2022-09-24 11:12:45 +02:00
|
|
|
Files:
|
|
|
|
|
|
|
|
- `_boring`
|
|
|
|
- `th/routes`
|
|
|
|
- `th/models`
|
|
|
|
- `update-deps.sh`
|
|
|
|
- `bindist.sh`
|
|
|
|
|
|
|
|
Haskell modules in `src`:
|
|
|
|
|
|
|
|
- Non-`Vervis` modules:
|
|
|
|
- Modules ending with `Local`:
|
|
|
|
- The rest:
|
|
|
|
- `Vervis.Data`
|
|
|
|
- `Vervis.Persist`
|
|
|
|
- `Vervis.Fetch`
|
|
|
|
- `Vervis.Query`
|
|
|
|
- `Vervis.Web`
|
|
|
|
- Primary web app support modules:
|
|
|
|
- `Vervis.Foundation`
|
|
|
|
- `Vervis.Application`
|
|
|
|
- `Vervis.Settings`
|
|
|
|
- `Vervis.Model`
|
|
|
|
- `Vervis.Migration`
|
|
|
|
- Primary web app logic modules:
|
|
|
|
- `Vervis.API`
|
|
|
|
- `Vervis.Federation`
|
|
|
|
- `Vervis.Handler`
|
|
|
|
- `Vervis.Client`
|
|
|
|
- `Vervis.Ssh`
|
|
|
|
|
2016-03-05 04:54:37 +01:00
|
|
|
## Reporting Bugs and Suggesting Features
|
|
|
|
|
|
|
|
If you found a bug, or you have an idea, a feature request or a wishlist item,
|
2018-05-18 21:30:35 +02:00
|
|
|
open a ticket for it! Even if you're going to implement something or try to
|
2016-03-05 04:54:37 +01:00
|
|
|
solve it.
|
2016-01-28 15:15:54 +01:00
|
|
|
|
2019-08-05 15:33:07 +02:00
|
|
|
If you're going to implement some feature or fix some bug you found, **start by
|
2022-06-27 22:21:05 +02:00
|
|
|
opening a ticket**
|
|
|
|
[here](https://vervis.peers.community/s/fr33domlover/p/vervis/t) so that other
|
|
|
|
people will know which features are being developed and who does what.
|
2022-09-27 06:49:17 +02:00
|
|
|
|
|
|
|
UPDATE: The ticket tracker is temporarily unavailable. You can instead contact
|
|
|
|
[fr33domlover](https://fr33domlover.site) to report issues and to coordinate
|
|
|
|
work.
|