Savane - 2010.rmll.info2010.rmll.info/IMG/pdf/2-savannah.pdf · Overview - History 2001: (Free)...

Preview:

Citation preview

Sylvain BeuclerRMLL 2010 Bordeaux

Savane100% free software forge

Overview

VCS: CVS, SVN, Git, Mercurial, Bzr

Trackers

Mailing lists

Webpages

Jobs

Overview - Goals

AGPL code

100% Free Software dependencies

Promote collaborative development best practices

Overview - History

2001: (Free) SourceForge install: Savannah

2001: SourceForge goes proprietary

2004: Code is renamed « Savane »

200-: PHP clean-ups

200-: Support for more VCS

2010: Savane rewrite

SourceForge

GForge

Savannah

FusionForge

SavaneRelationship with FusionForge ?

Free Forges

TrackersSystem

Trac

InDefero

Redmine

FusionForge

Tuxfamily

Gitorious

FreeHg

ShareSource

LibreSource

Savane

Gitweb/repo.or.cz

?

Launchpad

...

Architecture

Savane

CVS

Web front-endSystem back-end

@

New code

● In progress● Design phase

● Looking at alternatives and frameworks

Savane front-end

Code rewrite

Currently: ugly PHP code inherited from SFThe current clean-up effort isn't enough

There are now nicer programming languages: PythonSaner code / No GPL-incompatible headaches

There are now nicer web frameworks: DjangoNot too complex (newcomers-friendly)

Excellent documentation / Less code!

Some limitations

Savane back-end

Behind the scenes:web → system replication rewrite

Before: complex cron

Now: NSS-based direct replication

Less code (delegation)

Smaller crons (15 lines)

Going decentralized

GNU Savannah

Decentralization – why ?

● Our data are locked in remote servers● Difficult to export● Difficult to install the software locally

(even if it's free)● Difficult to migrate between hosting facilities● Privacy issues● Efficiency

Decentralization – docs

● Freedom in the Cloud1h talk by Eben Moglen

● Web 2.0 is Sharecropping5mn demonstration by Jesse Vincent

Decentralization – how ?

● VCS became DVCS already● Git, Mercurial, Bzr, SVK...

● Bug trackers ? Let's check for alternatives :● SD● Fossil

SD

● Distributed bug tracker● Get a full copy of your bugs and work locally &

offline● HTTP-based protocol● Based on generic distributed database Prophet

(CouchDB-style)● Cf. previous talk !

$ export SD_REPO=sd-bugs$ mkdir $SD_REPO$ sd config user.email-address myaddy@$ time sd clone --from http://fsck.com/~jesse/sd-bugs/#############################. 99.6% 0:00Done.

If you're new to SD, [...]

real 4m22.845suser 0m29.622ssys 0m2.944s$ sd ticket search -- status!=closed | wc -l72$ sd ticket search -- status=closed | wc -l182$ du -sh sd-bugs1,3M sd-bugs

SD$ export SD_REPO=sd-bugs2$ mkdir $SD_REPO$ sd config user.email-address myaddy@$ time sd clone --from file://`pwd`/sd-bugs/#############################. 99.9% 0:00Done.

If you're new to SD, [...]

real 1m21.865suser 0m34.474ssys 0m2.720s

SD

$ sd server --port 9876

Fossil

● Monolitic DVCS/Tracker/Wiki● Stand-alone static C executable● Fast !● HTTP-based protocol● SHA1-based IDs● Tickets conflits resolution :

very basic : time-based replay

Fossil$ apt-get install fossil$ time fossil clone http://www.fossil-scm.org/ myclone.fossilreal 1m10.590s# (465 tickets + code & wiki)$ time fossil clone file://`pwd`/myclone.fossil myclone2.fossilreal 0m17.824s$ fossil ui myclone.fossil

Deployment

GNU Savannah

Deployment

● Not done often : neglected by developers● Packages for GNU/Linux distros

● Work for Savane itself● Does not work for dependencies (configuration

conflicts)● Hybrid approach ?

– Savane package– Script to install and configure dependencies (preseed...)

Deployment

● autostrap● Automatically generate

preconfigured VM / « appliance » to test your app

● Work without root privileges

● Just run it with QEMUor import in VirtualBox

Contribute!

We're looking for:● Web designers● Coders

Thank you

Fire the questions!

Challenges

> 8 years-old not-so-clean data

There Can Only Be One (version)Not code, but a service

Making everybody happy (no fork escape)

No release candidates – instant releases

Long-term maintenanceProtection (spam...) / Data migration

Security: restricted-shell access

Scalability