Difference between revisions of "Tasks"

From The Open Source Backup Wiki (Amanda, MySQL Backup, BackupPC)
Jump to navigationJump to search
(postgres is almost done!)
(add SQLite application, because I would find it handy!)
 
(4 intermediate revisions by 2 users not shown)
Line 4: Line 4:
  
 
The easiest way to get started on any of these projects is to [[Fork Amanda on Github|fork Amanda]] and push your completed changes back.
 
The easiest way to get started on any of these projects is to [[Fork Amanda on Github|fork Amanda]] and push your completed changes back.
 
= Devices =
 
 
Writing new backends for the [[Device API]].
 
 
{{Task
 
| name=Optical Device
 
| difficulty=med
 
| owner=
 
| skills=C
 
}}
 
Peter Conrad and Richard Kunze wrote a [http://www.tivano.de/software/amanda/index.shtml patch for Amanda] to write dumps to optical media, but it is written as a replacement for the taper, and doesn't work for modern Amandas.  The better way to write to optical media is now to write a new [[Device API|device]] that handles on-disk caching of data and writing new volumes out to optical media as it is available.
 
  
 
= Applications =
 
= Applications =
Line 22: Line 10:
  
 
{{Task
 
{{Task
| name=Postgres Application
+
| name=MySQL Application
 
| difficulty=easy
 
| difficulty=easy
| owner=[[User:Nikolas]]
+
| owner=
| skills=Perl, Postgres
+
| skills=Perl, MySQL
 
}}
 
}}
Write an application to allow users to backup and restore Postgres databases.
+
Write an application to allow users to backup and restore MySQL databases.
  
 
{{Task
 
{{Task
| name=MySQL Application
+
| name=SQLite Application
 
| difficulty=easy
 
| difficulty=easy
 
| owner=
 
| owner=
| skills=Perl, MySQL
+
| skills=Perl, SQLite
 
}}
 
}}
Write an application to allow users to backup and restore MySQL databases.
+
Write an application to allow users to backup and restore SQLite databases safely and consistently.  See http://www.sqlite.org/backup.html.
  
 
{{Task
 
{{Task
Line 58: Line 46:
 
| name=OpenSSL auth
 
| name=OpenSSL auth
 
| difficulty=hard
 
| difficulty=hard
| owner=
+
| owner=[[User:Martineau|Martineau]]
 
| skills=C, openssl
 
| skills=C, openssl
 
}}
 
}}
Line 74: Line 62:
 
}}
 
}}
 
<tt>amtoc</tt> is already in Perl, but it parses logfiles directly.  Update it to be more readable, to use <tt>Amanda::DB::Catalog</tt> to read the logfile, and to produce correct output.  It will need new unit tests.
 
<tt>amtoc</tt> is already in Perl, but it parses logfiles directly.  Update it to be more readable, to use <tt>Amanda::DB::Catalog</tt> to read the logfile, and to produce correct output.  It will need new unit tests.
 
{{Task
 
| name=Rewrite amlabel
 
| difficulty=medium
 
| owner=
 
| skills=perl
 
}}
 
<tt>amlabel</tt> is fairly simple: use the changer to load the correct tape, check for an existing label, and write a new label.  It will need new unit tests.
 
 
{{Task
 
| name=Rewrite amtape
 
| difficulty=low
 
| owner=
 
| skills=perl
 
}}
 
<tt>amtape</tt> is basically a user-friendly interface to the tape changer, and should be easy to rewrite in Perl.  It will need new unit tests.
 
  
 
= Build Process =
 
= Build Process =
 
{{Task
 
| name=More portable Perl extension building
 
| difficulty=high
 
| owner=
 
| skills=autotools, libtool, perl linking, portability
 
}}
 
The current build process uses the <tt>-I</tt> flags from perl to find <tt>perl.h</tt>, but then uses Libtool to do the final linking.  This seems to work on most platforms, but there may be a better way.  The problem with using MakeMaker, Module::Install or Module::Build is that they assume that the compiler which built perl is still available.  This is not the case on platforms like Solaris.  A "hybrid" solution -- which tests the native-perl method, and falls back to the current Libtool method -- may be best.  We have yet to have any trouble building perl extensions, so this task may be moot.
 
  
 
{{Task
 
{{Task
Line 115: Line 79:
 
| name=I18n for Perl
 
| name=I18n for Perl
 
| difficulty=medium
 
| difficulty=medium
| owner=[[User:Dustin|Dustin]]
+
| owner=
 
| skills=perl, gettext
 
| skills=perl, gettext
 
}}
 
}}
Line 123: Line 87:
 
| name=German Translation
 
| name=German Translation
 
| difficulty=medium
 
| difficulty=medium
| owner=[[User:Stefan|Stefan]]
+
| owner=
 
| skills=gettext, German
 
| skills=gettext, German
 
}}
 
}}

Latest revision as of 05:24, 11 July 2010


Stuff that needs doing. Tasks with no "owner" are open. To "claim" a task, edit this page and add your name as "owner", and email your thoughts to the amanda-hackers list. Other hackers will be happy to help. If you have other tasks, please add them here, following the pattern below. This forms a more in-the-moment version of the Wishlist/Features planned document.

The easiest way to get started on any of these projects is to fork Amanda and push your completed changes back.

Applications

Writing new Amanda frontends, using the Application API


Difficulty: easy
Skills: Perl, MySQL
Owner:
a - t

MySQL Application

Write an application to allow users to backup and restore MySQL databases.


Difficulty: easy
Skills: Perl, SQLite
Owner:
a - t

SQLite Application

Write an application to allow users to backup and restore SQLite databases safely and consistently. See http://www.sqlite.org/backup.html.


Difficulty: med
Skills: Perl, Cyrus imapd
Owner:
a - t

Cyrus imapd Application

Write an application to allow users to backup and restore emails in Cyrus imapd. While 'tar' can back up a mailspool, it is not ideal for the huge number of small files, and does not work well with so many hard-linked files.


Difficulty: med
Skills: Perl, AFS
Owner:
a - t

AFS Application

Write an application to allow users to backup and restore from Andrew Filesystems; see How To:Backup AFS Volumes.

Authentication


Difficulty: hard
Skills: C, openssl
Owner: Martineau
a - t

OpenSSL auth

An OpenSSL-based security driver could enable encryption without the messy manual setup of SSH. More importantly, it can use certificate validation to perform bi-directional authentication of network communications, without reference to any UNIX usernames, passwords, or home directories.

Perlification

There is no shortage of stuff to rewrite in Perl. This is just a sampling of the "low-hanging fruit".


Difficulty: medium
Skills: perl
Owner:
a - t

Update amtoc

amtoc is already in Perl, but it parses logfiles directly. Update it to be more readable, to use Amanda::DB::Catalog to read the logfile, and to produce correct output. It will need new unit tests.

Build Process


Difficulty: high
Skills: autotools, libtool, perl linking
Owner:
a - t

Simplify Perl Automake rules

The Makefile.am stanza to build a perl extension from a SWIG input file is too long. Ideally, this could be expressed in a few lines giving only the source file and binary dependencies of the extension.

Translation

Amanda is (mostly) internationalized, and ready to have translations plugged in. Add a task here for each new locale.


Difficulty: medium
Skills: perl, gettext
Owner:
a - t

I18n for Perl

To his shame, Dustin has been furiously writing un-internationalized Perl. This means that, at the moment, Perl applications won't respect any translations. Clearly, that should change!


Difficulty: medium
Skills: gettext, German
Owner:
a - t

German Translation

German is as good a first translation as any, and will work the kinks out of the translation process, paving the way for other locales.

Miscellaneous


Difficulty: easy
Skills: wiki, maybe some shell/perl
Owner:
a - t

Fix data encryption

Data encryption support in Amanda is not well-maintained. Some of the available scripts are Linux-specific, or fail in confusing ways. This task would involve a thorough exploration of the current support, documentation, and writing patches for any problems found in the existing code.