[Freedombox-discuss] don't write code - user-friendly configuration

Jonas Smedegaard dr at jones.dk
Tue Aug 31 09:55:54 UTC 2010

Hi Chris,

Please consider writing cronologically (and snip the quoted parts which 
you do not reply to).  That eases readability of the correspondance.  
Nore info at http://en.wikipedia.org/wiki/TOFU .

(my response is below the quote)

On Mon, Aug 30, 2010 at 07:38:45PM -0400, Chris Wj wrote:
>About that don't write any code thing... what about that creative easy 
>to use web app that is supposed to be the way users set up their 
>freedom box? That app seemingly will be coupled with the tools that run 
>on the box.
>>>>  On Mon, Aug 30, 2010 at 11:15 AM, Jonas Smedegaard <dr at jones.dk> 
>>>>  wrote:
>>>>> As I see it, this FreedomBox project may not need to ever write a 
>>>>> single piece of code!

I am very glad that you ask.  This particular area especially have been 
on my mind since a few years, and articulated during Debconf 10 to a few 
peer Debian developers...

Let's see: an interface - likely web-based - to configure the box, and 
probably do a bit of branding too.

That could be a unique project targeted specifically the FreedomBox, or 
it could be hooking into existing tools already in Debian and itself be 
reusable for other types of Debian installations too.

Writing specifically for FreedomBox is maybe simpler to grasp and faster 
to implement, but limited-scope tools may also loose interest and 
bit-rot faster.

There is already one more general-purpose tool with a developer 
interested in improving it to serve FreedomBox: Ægir.  Let's help get 
that tool packaged for Debian, let's help play with it and document our 
needs of that tool for it to most ideally serve FreedomBox needs, and 
let's help implement such improvements.

Let's also consider alternatives. Compare them, documenting strengths 
and weaknesses, and perhaps keep open about multiple possible interfaces 
- not just multiple stylistic "skins" but independent technical 
approaches approach to user-friendly maintainance of a Debian system 
each offered as a Debian package.

One alternative that I personally favor is to extend the de facto 
standard package configuration interface in Debian, debconf, to be a) 
more expressive and b) have a web frontend.  And to help encourage more 
debconf'ization of packages in Debian.

Debconf is the de facto standard interface for Package configuration in 
Debian. It comes with a Perl library interface and a command-line 
interactive UI, and allows "preseeding" answers to override defaults and 
suppress them from being asked interactively. Debconf has some 
limitations, however, when it comes to _maintaining_ packages - i.e. 
dealing with package upgrades involving changes to its configuration.

These limitations do not show in normal Debian use, where the same 
person, the sysadmin, both install the system and handle later upgrades. 
When preseeding and passing on to another sysadmin - as Debian Edu does 
and we will do with the FreedomBox, problems arise, however, as the 
sysadmin will be asked questions about conflicts unknown to him: "Config 
foo was changed locally - do you want to preserve local changes or 
replace with newer packaging config?" is a common debconf question, but 
catastrophic for the user experience if the changes "locally" from a 
Debian package point of view is "upstream" from the sysadmin point of 
view, due to the deviation from Debian defaults occured by others than 
the current sysadmin (e.g. during custom FreedomBox install routines).

I have fought this issue in Debian Edu for some years. The classic 
approach (which I suspect Ægir will use) is to work on the installed 
Debian as a sysadmin - i.e. edit all config files at will: This will 
break whenever the underlying package is upgraded to a version 
containing a slightly different default config - such breakage can be 
suppressed by simply ignoring packaged changes, and thus essentially 
taking over parts of what is offered by Debian through its package 
*maintainers*. A more modern approach is to overload packages with 
conf.d snippets or rerouting to use completely different configuration 
either located somewhere else of the filesystem or in a database: this 
does not trigger debconf questions at package upgrade confusing the 
sysadmin, but still loose the maintainance offered by the packaging.

The only proper way for a reliably maintained Debian->deployer->sysadmin 
chain as I see it, is for debconf to be improved to handle reliably 
other package maintainance tasks than install.

For a Blend like FreedomBox to reliably override defaults while still 
tracking Debian package maintainance of same configuration, debconf 
should distinguish between "I explicitly want what also happens to be 
default currently" and "I don't care - use whatever is the default".

Package *reconfiguration* needs the ability to query current status. In 
current debconf you can query the debconf _cache_ of earlier responses, 
but cannot query the current choice as written to disk, so a user 
interface cannot inform the sysadmin of the consequences of making a 
choice - i.e. there is no "keep current choice" option.

A Debconf web UI would need to be quite more lightweight than a module 
on top of the CMS Drupal on top of the scripting language PHP (as is the 
case with Ægir, AIUI): it must require no daemons running to be usable 
also in single-user mode, very few library dependencies to be useful as 
debian-installer interface. Being lightweight is certainly a plus for an 
embedded device like FreedomBox.  I imagine it being a RESTful CGI 
script, themeable to allow projects like this FreedomBox to add logo and 
other stylistic spice without needing to invent and maintain a complete 
tool on its own.

Beware, though, that Ægir is real - my scriblings above on debconf 
improvements are only that: scriblings.

Sorry for this rather long post.  I really should start blogging 

Kind regards,

  - Jonas

  * Jonas Smedegaard - idealist & Internet-arkitekt
  * Tlf.: +45 40843136  Website: http://dr.jones.dk/

  [x] quote me freely  [ ] ask before reusing  [ ] keep private
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/freedombox-discuss/attachments/20100831/6734cf0d/attachment.pgp>

More information about the Freedombox-discuss mailing list