Pagure and Fedora
There are a fair number of options for project hosting these days, from the largely moribund SourceForge to the ever-popular GitHub, but many of these sites either do not release their software or are largely company-run projects, without much in the way of an external development community. A relatively new entrant in the "forge" scene (where "forge" hearkens back to SourceForge, which was one of the earliest) is pagure. It is gaining a bit of traction as the Fedora project has started using it for some of its projects. One of its headline features, that distinguishes it from some other project-hosting tools, is that the discussion metadata for bugs and pull requests is also available, which allows projects to easily move or to keep multiple pagure instances in sync.
Python and Git
Pagure is written in Python and uses Git for its repositories. It includes the usual set of features that projects have come to expect from this type of package, like issue tracking, repository forking, pull requests, and so on. Its genesis is in the Fedora infrastructure project and it was originally called "progit" by its creator Pierre-Yves Chibon.
As would be expected, the project itself is hosted within pagure, which easily allows those interested to browse its documentation and issues (bugs and feature requests). On the main page for a repository, there are the expected URLs for the source code Git repository and (a bit hidden behind a "more" link on the project page) a Git repository for the documentation. While the issues and pull-request information is also stored in Git repositories, URLs for those are not apparent (or at least obvious) in the web interface. There is also scant mention of those repositories in the documentation, which is a little bit sparse at this point.
One of the big complaints about GitHub is that much of the metadata that a project accumulates is not easily retrieved should the project want to move elsewhere. Making that easier, while also allowing other use cases such as synchronization between multiple project sites, is one of the more interesting features of pagure.
Installation and workflow
Installation from source into a Python virtual environment is fairly straightforward as described on the main project page. Installing on Fedora or RHEL/CentOS can be done using RPMs or, for other distributions, setup.py can be used. There are some fairly lengthy instructions on configuring the web server, setting up repository directories, and creating the database once pagure itself has been installed.
By default, pagure uses SQLite, but that is not sufficient for running a
production instance, so either PostgreSQL, MySQL, or MariaDB need to be
available for those types of systems. For managing updates to the database
tables, the Alembic
"lightweight database migration tool
" is used. It works with
the SQLAlchemy database toolkit
for Python to allow the database schema to evolve relatively painlessly as
pagure adds new features.
The workflow in pagure is fairly easy to pick up as it should be familiar to those who have used GitHub or similar sites. Repositories are forked and modified, then submitted back to the project as pull requests. In addition, pull requests can be created from forks that are hosted elsewhere and changes pushed into a branch that a pull request was created from will automatically update the request with the new changes.
Architecture
The architecture of the tool is based on a number of cooperating processes. The main application is a Flask-based web application that provides a user interface to the Git repositories, issues, and pull requests. Gitolite is used to control SSH access to the repositories. The documentation server is a separate web application that can (and probably should) be hosted on its own system:
Beyond that, there is a "milter" (mail filter) that allows people receiving comments on issues or pull requests to reply directly in email and have their message be added—alleviating the need to call up the web page before replying. There is an "EventSource" server that handles live refreshing of web page contents (such as comments on an issue being viewed). The "web-hook" server handles third-party notifications, such as to Fedora infrastructure's fedmsg message bus.
Releases for pagure are
coming at a fairly quick pace. The project appears to be a little more
than a year old and, unlike many projects that languish with 0.x releases
for years, is up to version 2.1.1. The 1.0 release was made back in
January;
Fedora Magazine reviewed
at that time, noting that the name comes from the French word for "hermit
crab". In his post announcing that the project was being renamed, Chibon
explained the connection: "This little crab moves from shell to shell
as it grows up. I found it was a nice analogy with this forge where [a] project
can move from place to place.
"
As with many projects these days, pagure has a list of easy fixes
for those who want to get involved. A look through the issue tracker will
provide a sense for where things may be headed. For example, Python 3 support is in
the plans, and there is a "py3_work" branch where that work is going on,
though, at this point, running pagure on Python 3 is a bit of a
"bumpy ride
", Chibon said.
Overall, it seems like an interesting project that fills an important niche, though it is not the only project of that sort. For example, Kallithea is a free-software, Python-based forge with both Git and Mercurial support. It is GPLv3-licensed, rather than the GPLv2 chosen by pagure, but the goals of the projects are similar. Some may question the need for both.
In some sense, Fedora project leader Matthew Miller touched on that with an issue (tagged "wishful") he posted about integrating pagure with the Taiga project management platform. He was concerned that pagure was not getting enough traction to attract a development community outside of the Fedora world, not to mention that it was adding yet another bug tracker for Fedora.
While pagure certainly seems like a nice tool, there is a risk of "too many" efforts like these. A major part of GitHub's appeal is the network effects that come from many developers already having an account with the service and the knowledge of how to use it. Splitting the free-software community's attention into multiple different platforms, each with its own idiosyncrasies, accounts, and so on, may not lead to a freedom-focused alternative and, instead, continue the fractured landscape we see today. On the other hand, there may be ways to link up pagure, Kallithea, and others to create some kind of federated, free meta-forge for hosting projects—one that is large enough to benefit from network effects of its own.
[ Thanks to Bruno Wolff III for suggesting the topic. ]
Posted May 19, 2016 13:07 UTC (Thu)
by xav (guest, #18536)
[Link] (5 responses)
Posted May 19, 2016 18:47 UTC (Thu)
by mcatanzaro (subscriber, #93033)
[Link] (4 responses)
Posted May 19, 2016 18:51 UTC (Thu)
by mcatanzaro (subscriber, #93033)
[Link]
Posted May 20, 2016 22:34 UTC (Fri)
by vstinner (subscriber, #42675)
[Link] (1 responses)
In the past, I moved many times some tiny personal projects from one forge to another (ex: from Trac to Bitbucket). At least migration, I lost data because it was painful to convert data, or simply because it was not possible to automatically export data.
Posted May 21, 2016 23:19 UTC (Sat)
by mathstuf (subscriber, #69389)
[Link]
Posted May 21, 2016 23:31 UTC (Sat)
by mathstuf (subscriber, #69389)
[Link]
Posted May 19, 2016 22:12 UTC (Thu)
by morksigens (guest, #92681)
[Link] (13 responses)
The first step: using a service like Mozilla's Persona or whatsitcalled to provide a painless way to login WITHOUT SIGNING UP FOR EVERY DAMN PROJECT.
Posted May 19, 2016 22:49 UTC (Thu)
by pizza (subscriber, #46)
[Link]
Posted May 20, 2016 8:30 UTC (Fri)
by dr@jones.dk (subscriber, #7907)
[Link] (4 responses)
The IMO more sensible alternative is WebID: http://webid.info/
The most active development/integration of WebID is probably in the field of SoLiD (the fusion of RDF a.k.a. Linked Data with Social media): https://github.com/solid/solid
Posted May 20, 2016 23:28 UTC (Fri)
by flussence (guest, #85566)
[Link] (3 responses)
Posted May 20, 2016 23:41 UTC (Fri)
by dr@jones.dk (subscriber, #7907)
[Link] (2 responses)
Posted May 21, 2016 4:18 UTC (Sat)
by flussence (guest, #85566)
[Link] (1 responses)
Posted May 21, 2016 4:28 UTC (Sat)
by rahulsundaram (subscriber, #21946)
[Link]
That it is a compatible superset as it says in the page?
Posted May 21, 2016 7:47 UTC (Sat)
by misc (guest, #73730)
[Link] (1 responses)
Now, pagure.io (the service) is the fedora forge, and so by design, it use the fedora authentication system, since that's used for centralized access control, and stats (the so called badge system is also used to get numbers for the comm ops team so they know what work and what doesn't and where to put efforts).
Posted Jun 12, 2016 19:45 UTC (Sun)
by sathieu (guest, #61749)
[Link]
I can't see any reference to ipsilon in pagure source code, and the doc only mentions FAS or local authentications (https://docs.pagure.org/pagure/configuration.html#pagure-...)
Posted Nov 20, 2016 11:19 UTC (Sun)
by catalinuxboie (guest, #112452)
[Link] (4 responses)
Disclaimer: I am the main author.
Posted Nov 21, 2016 1:25 UTC (Mon)
by pabs (subscriber, #43278)
[Link] (3 responses)
Another place that has anonymous push is Branchable, but there anonymous pushes are just accepted without transforming them to pull requests.
Posted Nov 21, 2016 4:55 UTC (Mon)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
Posted Nov 21, 2016 17:05 UTC (Mon)
by catalinuxboie (guest, #112452)
[Link]
Posted Nov 21, 2016 17:10 UTC (Mon)
by catalinuxboie (guest, #112452)
[Link]
Posted Jun 2, 2016 16:06 UTC (Thu)
by brunowolff (guest, #71160)
[Link] (3 responses)
Posted Jun 3, 2016 11:49 UTC (Fri)
by brunowolff (guest, #71160)
[Link] (2 responses)
Posted Jun 3, 2016 12:33 UTC (Fri)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
Does this mean it runs on top of existing gitolite configuration or is it a replacement of the existing gitolite setup?
I guess I should file an issue, but I'd also like for the URLs to be more consistent. Right now, I have to have different insteadOf config for forks versus real repos.
Posted Jun 3, 2016 13:10 UTC (Fri)
by brunowolff (guest, #71160)
[Link]
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Site: https://rocketgit.com
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Pagure and Fedora
Continuous Integration close to being added
Continuous Integration close to being added
There are three main goals for pagure for this summer:
- Support for private git repos (Farhaan Bukhsh)
- Pagure/Jenkins integration (Farhaan Bukhsh)
- Adjust pagure and crons to have pagure run at pkgs.fp.o (Vivek Anand)
Continuous Integration close to being added
Continuous Integration close to being added
