changeset 127:1b21c8c5fe39

Write exhaustive roadmap for Savannah installation + doc fixes
author Sylvain Beucler <beuc@beuc.net>
date Mon, 10 Aug 2009 22:36:26 +0200
parents beffb0fafd5e
children 70abe9b6819e 046a5127cbe1
files TODO doc/NSS-MYSQL doc/NSS-SQL src/savane/backend/migrate_sshkeys.py
diffstat 4 files changed, 161 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/TODO
+++ b/TODO
@@ -1,16 +1,129 @@
-- models
-
-  - add DB indexes (db_model=True)
-
-- now we need the screens for users to modify them
+Roadmap
+=======
 
-- work on the web design
+The roadmap is based on the previous Savane incarnation.
 
-- export to LDAP and reimplement .ssh replication and VCS creation
-
-- implement mod_rewrite URL migration list
+However we can't guarantee we'll rewrite 100% of its features.  In
+addition, the goal is to get something we can install like at Savannah
+quickly, which means we may delay some features in a first step.
 
 
-* Work on the web design
- - Maybe we can change the colors.
- - We needs to define a CSS class for buttons
+[/] Implement web screens (higher priority)
+
+    [/] User page
+
+    [/] Group page
+
+    [ ] Members list + GPG keyring
+
+    [/] Account conf ([X] e-mail, [X] password, [X] real name, [/] SSH
+        keys, [X] GPG key)
+
+    [/] My Groups
+
+    [ ] Group membership (manage members, manage permissions, request
+        inclusion)
+
+    [ ] Delete account (clean-up data but keep User+user_id if past
+        history)
+
+[ ] Implement web screens (lower priority)
+
+    [ ] Account conf 2 ([ ] profile, [ ] skills, [ ] timezone)
+
+    [ ] Bookmarks? Was considered for deletion at a point in Savane:
+        http://gna.org/task/?1412 - note that yeupou is a bit partial
+        towards trackers in that discussion
+
+[ ] News management (+ comments)
+
+[/] Work on the web design
+
+    [X] Do something different
+
+    [ ] Maybe we can change the colors.
+
+    [ ] We needs to define a CSS class for buttons
+
+[/] Rewrite backend (or have them work on a replicate that uses the
+    old DB schema)
+
+    [/] Link the system to the DB more directly (no cron'd
+        replication) - currently we use libnss-mysql-bg, it's in test
+        live at Savannah using the old DB schema.
+
+        TODO: adapt to new DB schema, and either fix libnss-mysql-bg
+        bugs or switch to libnss-pgsql - cf. doc/NSS-SQL
+
+    [/] homedirs and .ssh replication (done in savane-cleanup, and in
+        Python - just adapt the DB schema)
+
+    [ ] GPG keyrings
+
+    [ ] Group resources (Download, CVS, SVN, Arch, Git, Mercurial,
+        Bazaar)
+
+    [ ] CVS notifications (commit_prep+log_accum - Savannah-specific)
+
+    [ ] Mailing lists (Mailman)
+
+[/] Write migration scripts
+
+    [X] Users, groups, group types, memberships
+
+    [X] SSH keys (with new, separate table):
+        src/savane/backend/migrate_sshkeys.py
+
+    [ ] User preferences (table user_preferences)
+
+[ ] Implement mod_rewrite URL migration list
+
+[/] Separate the trackers in the old code so they can work
+    independently.  Some work was done in the 'split' branch.  TODO:
+    test more and add a new->old replication for users/groups so the
+    trackers can use it, until we rewrite them.  Possible do the same
+    for jobs and news.
+
+[ ] Add some tests
+
+=====
+
+Goal #1: use it live at Savannah :)
+
+=====
+
+Uncharted territories - and wild ideas.
+
+[ ] Optimize models - add DB indexes: db_index=True or unique=True
+    (with MySQL) or primary_key=True
+
+[/] Export users/groups to LDAP
+
+    [X] Populate a LDAP directory from the DB
+
+    [ ] Sync the LDAP directory when there are changes (e.g. password,
+        mail...)
+
+    [ ] Implement a Django backend that supports SSHA or CRYPT (CRYPT
+        may be better since all PAM modules would support it)
+
+[ ] Migration to PostgreSQL?
+
+[ ] Rewrite trackers in Django?
+
+[ ] Rewrite /people (request for contribution / jobs) in Django?
+
+[ ] Add more non-members<->groups and users<->users interactions (aka
+    "social features")
+
+[ ] List/retrieve more stats (namely commit stats)
+
+[ ] Create a timeline for projects with the latest project events
+    (commits, memberships, news, bugs...).  Possible for users too.
+
+[ ] Wikis
+
+[ ] Improve/suppress delays (e.g. ping a daemon that creates project
+    repositories and mailing lists, with a job queue system)
+
+[ ] Your Ideas Here
deleted file mode 100644
--- a/doc/NSS-MYSQL
+++ /dev/null
@@ -1,35 +0,0 @@
-Status
-======
-
-libnss-mysql-bg was installed at Savannah and configured against the
-old Savane MySQL database.  It works :)  This means we can avoid
-reimplementing sv_users, as well as a part of sv_groups.
-
-Next step is converting the libnss-mysql.cfg file to the new Savane DB
-schema.
-
-libnss-mysql is an alternative, but it's less flexible, since you can
-only configure fields instead of complete SQL queries.
-
-libnss-mysql-bg has 2 annoying bugs:
-
-- When listing users or groups, it may skip large entries. Report:
-  http://sourceforge.net/tracker/?func=detail&aid=2833844&group_id=56073&atid=479258
-
-- The list of group members is implemented inefficiently (1 MySQL
-  query per group).  This is mainly a problem when listing groups, but
-  so a real problem when authenticating.  Solution suggested at:
-  http://lists.gnu.org/archive/html/savannah-hackers-public/2009-08/msg00004.html
-
-For sanity we should fix those bugs.  However, if libnss-pgsql is
-better, we could just move to PostgreSQL.
-
-
-Segfault FAQ
-============
-
-- Check /var/log/syslog - maybe you just got an error in your SQL
-  query.
-
-- Check that the svusers group is present (libnss-mysql-bg dislikes
-  NULLs).
new file mode 100644
--- /dev/null
+++ b/doc/NSS-SQL
@@ -0,0 +1,35 @@
+Status
+======
+
+libnss-mysql-bg was installed at Savannah and configured against the
+old Savane MySQL database.  It works :)  This means we can avoid
+reimplementing sv_users, as well as a part of sv_groups.
+
+Next step is converting the libnss-mysql.cfg file to the new Savane DB
+schema.
+
+libnss-mysql is an alternative, but it's less flexible, since you can
+only configure fields instead of complete SQL queries.
+
+libnss-mysql-bg has 2 annoying bugs:
+
+- When listing users or groups, it may skip large entries. Report:
+  http://sourceforge.net/tracker/?func=detail&aid=2833844&group_id=56073&atid=479258
+
+- The list of group members is implemented inefficiently (1 MySQL
+  query per group).  This is mainly a problem when listing groups, but
+  so a real problem when authenticating.  Solution suggested at:
+  http://lists.gnu.org/archive/html/savannah-hackers-public/2009-08/msg00004.html
+
+For sanity we should fix those bugs.  However, if libnss-pgsql is
+better, we could just move to PostgreSQL.
+
+
+Segfault FAQ
+============
+
+- Check /var/log/syslog - maybe you just got an error in your SQL
+  query.
+
+- Check that the svusers group is present (libnss-mysql-bg dislikes
+  NULLs).
--- a/src/savane/backend/migrate_sshkeys.py
+++ b/src/savane/backend/migrate_sshkeys.py
@@ -1,4 +1,4 @@
-# Replicate users and groups to an OpenLDAP directory
+# Migrate users' SSH keys from old Savane to new Savane
 # Copyright (C) 2009  Jonathan Gonzalez
 #
 # This file is part of Savane.