~funderscore blog cgit wiki get in touch
aboutsummaryrefslogtreecommitdiff
blob: 3d1a55e23c7ca7ce9bc8a16e2945c9127a86d72d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<img src="static/logo.png" width=300px>

*A Simple GitLab frontend.*

## How does it work?

Laboratory uses GitLab's REST API to fetch data about users/groups and 
repositories (those so-called 'projects').

Then it parses that data and shows it in a JS-free lightweight webpage 
inspired by [Cgit](https://git.zx2c4.org/) and [SourceHut](https://sr.ht/).

## Dependencies

* `pycmarkgfm`
* `requests`
* `flask` and all its dependencies

## Features

### Basic

* List projects for any instance
* List group projects
* List group subgroups

### Repositories

* Issues (no comments though)
* Wikis
* Tree
* Show a commit
* Log
* Partial README rendering
* Refs
* Description
* Idle
* Avatar

### Groups

* Subgroups
* Repositories
* Avatar

### Users

* Avatar
* State

Unfourtunately, accessing more data about users requires authentication, 
so don't expect Laboratory to fetch more than that unless GitLab changes 
that.

## TODO

* Implement Merge Requests (currently all API calls to MRs must be 
  authenticated)
* Implement Logging in (possibly just a matter of getting the token key and 
  using it for all requests, plus some other features like creating repos)
* Group wikis
* Proper support for project wikis that aren't really repositories
* And more

## Known Issues

* When searching for a repository in GitLab.com, the API returns an internal 
  server error. This is GitLab.com's problem, not ours.
* Laboratory is very sensitive about URLs
* Laboratory currently cannot render RST-formatted README files
* Laboratory freaks out when a blob is not a "normal" file (e.g. an image)

## Instances

For an instance to be listed here, it needs to meet the following 
requirements: 

* Instances MUST have been up for at least a month before it can be added 
  to this list.
* Instances MUST have been updated in the last month. An instance that hasn't 
  been updated in the last month is considered unmaintained and is removed 
  from the list.
* Instances MUST be served via domain name.
* Instances MUST be served via HTTPS (or/and onion).
* Instances using any man-in-the-middle service MUST be marked as such 
  (e.g. Cloudflare, DDoS-Guard...).
* Instances using any type of anti-bot protection MUST be marked as such.
* Instances MUST NOT use any type of analytics.
* Instances running a modified source code MUST respect the AGPL by publishing 
  their source code and stating their changes before they are added to the 
  list and MUST contain a link to both the modified and original source code 
  of Laboratory in the footer.
* Instances MUST NOT serve ads NOR promote products.
* Instances MUST NOT restrict or disallow the access / usage to any 
  [natural person](https://en.wikipedia.org/wiki/Natural_person) 
  (e.g. a country's IP range MUST NOT be blocked, access by a natural 
  person MUST NOT be disallowed for arbirary reason) - this rule doesn't 
  apply to juridical persons.

***Note***: If you see any instance in this list not following the rules, 
please let us know.

| URL | Author | Vanilla/Modified/...? | Note | Has an onion site? |
|-----|--------|-----------------------|------|--------------------|
| https://lab.vern.cc | ~vern team | Vanilla. | Has alternate subdomains. Sometimes down. | Yes |
| https://laboratory.vitali64.duckdns.org | Ferass | [Patched](https://git.vitali64.duckdns.org/misc/laboratory.vitali64.duckdns.org.git). | Used as a testing ground. | Yes |

## Screenshots

These screenshots may be outdated.

<img src="screenshots/main.png">Main page</img>

<img src="screenshots/group.png">Browsing Group repositories</img>

<img src="screenshots/repo.png">Browsing a repository</img>