From Fedora Project Wiki

Project Sponsor

Name: Matt Domsch

Wiki Name: MattDomsch

Fedora Account Name: mdomsch

Group: Infrastructure

Infrastructure Sponsor: mdomsch

Secondary Contact info

Name: Jef Spaleta

Wiki Name: JefSpaleta

Fedora Account Name: jspaleta

Group: Infrastructure

Project Info

Project Name: Downloadable SRPMS for every binary RPM produced

Target Audience: Software developers

Expiration/Delivery Date (required): 12/31/2007


Fedora distributes code online under GNU GPL 3a (source posted alongside and concurrent with binaries). Fedora also distributes binaries on CD and DVD without necessarily handing out CDs and DVDs with the source code anymore. For our own protection I'd like to see a written source code offer GPL 3b.

For Spins and derivatives, it would be nice for us to provide code under GPL 3b (written offer for source). This frees non-commercial Spins and derivatives from having to publish the (unchanged) source code on their own site or media - they can distribute under GPL 3c and point at our 3b offer. Lowers the barrier to entry for Spins and derivatives.

This project would be a web application that lets users download the Source RPMs that correspond to any given released binary RPM, regardless of when it was released or if it's still available on the mirrors.

Project plan (Detailed):

JefSpaleta and I are just hashing out the idea, but the plan is to have a web app that one can request to download any SRPM based on build tags in the package Version Control System (CVS right now). CVS is our canonical location for these bits, and with proper implementation we can regenerate SRPMS based on any tagged release.


  • Enable Fedora to distribute DVDs and CDs under GPL 3b as we do under 3a.
  • Enable Spins and derivatives to point at our GPL 3b written offer so they may satisfy GPL 3c.

Specific resources needed

  • Application servers for the application. Similar in scope to other TG apps we have.
  • Sufficient disk space for the application. Size in megabytes.
  • Sufficient disk space to hold generated SRPMS for some amount of time (a week or two). Target would be < 100GB.

Additional Info (Optional)

Note from Jef: Here is a toy shell script that takes an n-v-r koji buildid string as an argument, and communicates with koji and cvs.

The script assumes a working koji and cvs environment.

example usages: scribes- istanbul-0.2.2-2.fc7

If koji returns a valid cvs tag for the task associated with the n-v-r string, this script will do the cvs checkout and run make srpm resulting in a list of locally built srpms.

If koji returns None for the task, the script attempts to deduce the cvs tag and build a set of srpms associated with the tag state. Failing that it keels over and just outputs a list of cvs tags to choose from.

Koji should only return None for taskid for packages which have not been re-built since import into koji. For Fedora 8 packages and beyond this should never occur.