[tsc-devel] Self-hosting the project
Quintus |
Fri, 11 Sep 2015 15:40:58 UTC
Hi everyone,
I. Overview
as has been disussed before in IRC for months, we want to switch our
project infrastructure completely over to alexandria, because GitHub
1) asks people to censor stuff
2) is not an open platform
3) tries to get a monopoly
4) may change their business model affecting all depandent projects
5) more reasons we mentioned in IRC I can’t think of right now.
For this to happen, we’re going to have to choose a project management
software setup. There will be quite some stuff for sydney to learn
during that course :-)
II. Requirements
It is fairly obvious that we’re going to host a Git daemon (see
git-daemon(1)) for read-only access to our repositories, but apart from
that we need to select the software we want. Before making suggestions
for that, we need to determine what we actually need. Looking at the
project, I think I derived the following requirements:
1. Repository source browser, including Git revision history. Best if it
contains syntax highlighting.
2. Ticket system, for bugs, feature requests, pull requests.
There are more requirements, but our existing infrastructure already
satisfies them:
3. Wiki for community content (Moinmoin).
4. Mailing lists and forum, best interconnected (mlmmj, Chessboard)
5. Main website including news posts with RSS (static HTML).
6. File upload/download facility for releases and for every team member
(project FTP and SFTP services).
I think points 4-6 work well enough that there’s no need to replace
them. If the software we chose has such facilities, they’d thus have to
be disabled; on the other hand, if it doesn’t have such facilities, this
is fine.
Point 3 is an eternal source of frustration currently. The old Moinmoin
wiki version we have wreaks havoc every now and then, requiring a hard
restart of the apache httpd daemon each time. Newer versions of Moinmoin
may not have that issue, so we shouldn’t ditch it without further
thought.
Regarding the tickets, GitHub appears to have a fairly good API that
allows to programmatically retrieve these[1]. The ticket system we use
should thus allow for automated import of existing tickets of some kind;
a quick one-time hack suffices. We won’t do that more often than once,
and can then forget about that. Writing a little script that fetches the
tickets from GitHub’s API and importing them into the new system
shouldn’t be too much effort.
Since our server sponsor extended our server’ſ capabilities a lot
(thanks for that again), we will have no resource shortage.
III. Software
I will not use Mantis.
Okay, that being said, the following software comes to mind. This list
is neither meant to be exhaustive, nor exclusive; there is more
software out there, and we may run some of these in parallel. Please
discuss.
1) Redmine: http://www.redmine.org/
2) Bugzilla: https://www.bugzilla.org/
3) Git’s builtin-repository browser, Gitweb.
4) Trac: http://trac.edgewall.org/
5) Flyspray: http://www.flyspray.org/
6) Selfhosted Gitlab: https://gitlab.com
I have experience with Redmine, and can say that it has some nice
features (like customisable ticket statuses, subprojects, private
projects and a milestone system. It is written in Ruby and licensed as
GPL, which is why I have a slight preference towards this.
Bugzilla (written in Perl, licensed as MPL) is known to very nicely
integrate with mailinglists for discussion and with bugzilla.mozilla.org
there is a really large power-user of this software that guarantees it
is rock-solid. I’d absolutely be fine with this one; Bugzilla to my
knowledge only provides the ticket system, though, so no builtin
repository browser (but there are separate ones like Gitweb). AFAIK
RedHat also uses Bugzilla for their bugtrackers.
Gitweb recently got syntax highlighting, so don’t say we can’t use it
because it has none. This should be considered if we use a tickets-only
software like Bugzilla or Flyspray. Gitweb is written in C and comes
with Git itself.
Trac is similar to Redmine, but I have never used it. It’ſ Python
software under the BSD license. Can someone elaborate?
Flyspray like Bugzilla is only a ticket system. It was used by our
server sponsor (now replaced by their own solution) and by the ArchLinux
development team. No stable release since 2012, though. PHP software,
but I was unable to determine the license.
Gitlab is basically like GitHub. It even looks similar. The software is
written in Ruby and licensed under BSD; you must sign a CLA to
contribute. Note Gitlab is a commercial company (not necessaryly bad),
and the version one can selfhost is a stripped-down “community
version”. Gitlab recently bought and shut down the popular Gitorious
service, which was a free (GPL!) alternative to GitHub. This generated a
lot of critical comments on their announcement, which they appear to
have simply deleted by now. I don’t want to work with a company with
such an attitude.
These are the things that come to my mind; Bugzilla and Flyspray are
lightweight solutions that only solve one problem and nothing more; the
others are fully-fledeged project management software programs that try
to be the one-size-fits-all solution. I have a preference towards
Redmine or Bugzilla, but please feel free to discuss the issue. Also
please mention more software, even if it is not directly related to the
core infrastructure.
Valete,
Quintus
[1]: https://developer.github.com/
--
#!/sbin/quintus
Blog: http://www.guelkerdev.de
GnuPG key: F1D8799FBCC8BC4F