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