Pagure is a new, full featured git repository service for the web, written in Python. It is similar to other popular git forges like Github and Gitlab, allowing open source contributors to share and collaborate on code and content. By the way, pagure is French for “hermit crab,” as reflected in the logo on the project documentation.

Pagure is the brainchild of Pierre-Yves Chibon, a member of the Fedora Engineering team. The Fedora Engineering team focuses on Python based solutions because the language is easy to learn and thus presents less barrier to entry for contributors. Pagure is therefore a perfect fit not just for hosting projects, but for encouraging contribution to the service itself.

As Facebook, Google, and others have shown, Python can be highly performant. Pagure is no exception, and provides a responsive experience for web users. You can see Pagure in action here, where it’s already in use for dozens of highly active projects. The code for Pagure is hosted on the service itself.

Pagure’s features

Pagure offers many features found in other git forge services:

  • Self service creation of users, groups, project repositories, and forks
  • Access to repositories via HTTPS and SSH
  • Multiple authentication sources, using login via Pagure itself; or OpenID with an external provider such as Ipsilon, so you can link Pagure to LDAP, system accounts, or other account data
  • Pull request based workflow, complete with discussion and review
  • Built-in editor for text files in the web interface
  • Ability to enforce signoffs and review scoring for merging pull requests
  • Issue tracker, documentation, and release management
  • Provides email notifications for repository activity
  • Ability to synchronize across different Pagure instances
  • Fully “free as in freedom”
  • …and more!

However, Pagure offers additional features under the hood:

  • All issue and pull-request tracker metadata are available as side git repositories for traceability and portability
  • Documentation also managed as a side git repository, available through a web subfolder or inline with the project
  • Fully extensible web-hooks system, optional use per project

Host your own git forge

Pagure gives you the ability to set up your own hosted project service. The service is low overhead and depends on other free software, which you can find in Fedora and other Linux distributions; and EPEL repositories for RHEL, CentOS, and other derivatives.

The project documentation will help you get started setting up Pagure. You can install from a supported RPM-based distribution using normal tools, or you can set it up using source. Instructions for both methods are provided.

Pagure has been used within Fedora in production for a few months already. However, a major milestone has just been reached: the 1.0 release. This first major release brings with it an entirely new user interface, thanks to the efforts of Ryan Lerch, designer in the Fedora Engineering team.

Using Pagure is only slightly different from other services like Github. Pagure assumes that projects are collaborative, so they are not namespaced. Forks, on the other hand, are namespaced, making the upstream repo clear. However, the method of forking an upstream repo, making changes, and issuing a pull request is the same. Users of other git forge services should have no problem immediately putting Pagure to use.

Pagure’s future

Pagure development is still continuing, with a number of people committing fixes. Some future features include:

  • Ability to apply your own theme
  • Synchronizing repository data to other services such as Github
  • Namespaces to support personal projects not meant to be forked
  • Mailing list support for projects such as via Mailman 3

The code is easy to read and understand for people with light to moderate Python experience. Contributors are welcome to look at the issues list and get involved. To offer a patch, just fork the code in Pagure itself, clone your forked repo, commit and push a fix, and submit a pull request in Pagure.

Image courtesy lel4nd – originally posted to Flickr as Hermit Crab