From: Petter Reinholdtsen Date: Sat, 26 Dec 2015 11:20:52 +0000 (+0100) Subject: Generated. X-Git-Url: https://pere.pagekite.me/gitweb/homepage.git/commitdiff_plain/0d4beb6e80938dcbbc44f6061b544b0ff1a5bcf3?ds=sidebyside Generated. --- diff --git a/blog/tags/nice free software/index.html b/blog/tags/nice free software/index.html new file mode 100644 index 0000000000..9b5863d29b --- /dev/null +++ b/blog/tags/nice free software/index.html @@ -0,0 +1,1156 @@ + + + + + Petter Reinholdtsen: Entries Tagged nice free software + + + + + +
+

+ Petter Reinholdtsen + +

+ +
+ + +

Entries tagged "nice free software".

+ +
+ +
+ 23rd December 2015 +
+
+

When I was a kid, we used to collect "car numbers", as we used to +call the car license plate numbers in those days. I would write the +numbers down in my little book and compare notes with the other kids +to see how many region codes we had seen and if we had seen some +exotic or special region codes and numbers. It was a fun game to pass +time, as we kids have plenty of it.

+ +

A few days I came across +the OpenALPR +project, a free software project to automatically discover and +report license plates in images and video streams, and provide the +"car numbers" in a machine readable format. I've been looking for +such system for a while now, because I believe it is a bad idea that the +automatic +number plate recognition tool only is available in the hands of +the powerful, and want it to be available also for the powerless to +even the score when it comes to surveillance and sousveillance. I +discovered the developer +wanted to get the tool into +Debian, and as I too wanted it to be in Debian, I volunteered to +help him get it into shape to get the package uploaded into the Debian +archive.

+ +

Today we finally managed to get the package into shape and uploaded +it into Debian, where it currently +waits +in the NEW queue for review by the Debian ftpmasters.

+ +

I guess you are wondering why on earth such tool would be useful +for the common folks, ie those not running a large government +surveillance system? Well, I plan to put it in a computer on my bike +and in my car, tracking the cars nearby and allowing me to be notified +when number plates on my watch list are discovered. Another use case +was suggested by a friend of mine, who wanted to set it up at his home +to open the car port automatically when it discovered the plate on his +car. When I mentioned it perhaps was a bit foolhardy to allow anyone +capable of placing his license plate number of a piece of cardboard to +open his car port, men replied that it was always unlocked anyway. I +guess for such use case it make sense. I am sure there are other use +cases too, for those with imagination and a vision.

+ +

If you want to build your own version of the Debian package, check +out the upstream git source and symlink ./distros/debian to ./debian/ +before running "debuild" to build the source. Or wait a bit until the +package show up in unstable.

+ +
+
+ + + Tags: debian, english, nice free software. + + +
+
+
+ +
+ +
+ 22nd October 2014 +
+
+

If you ever had to moderate a mailman list, like the ones on +alioth.debian.org, you know the web interface is fairly slow to +operate. First you visit one web page, enter the moderation password +and get a new page shown with a list of all the messages to moderate +and various options for each email address. This take a while for +every list you moderate, and you need to do it regularly to do a good +job as a list moderator. But there is a quick alternative, +the +listadmin program. It allow you to check lists for new messages +to moderate in a fraction of a second. Here is a test run on two +lists I recently took over:

+ +

+% time listadmin xiph
+fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
+fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
+
+real    0m1.709s
+user    0m0.232s
+sys     0m0.012s
+%
+

+ +

In 1.7 seconds I had checked two mailing lists and confirmed that +there are no message in the moderation queue. Every morning I +currently moderate 68 mailman lists, and it normally take around two +minutes. When I took over the two pkg-xiph lists above a few days +ago, there were 400 emails waiting in the moderator queue. It took me +less than 15 minutes to process them all using the listadmin +program.

+ +

If you install +the listadmin +package from Debian and create a file ~/.listadmin.ini +with content like this, the moderation task is a breeze:

+ +

+username username@example.org
+spamlevel 23
+default discard
+discard_if_reason "Posting restricted to members only. Remove us from your mail list."
+
+password secret
+adminurl https://{domain}/mailman/admindb/{list}
+mailman-list@lists.example.com
+
+password hidden
+other-list@otherserver.example.org
+

+ +

There are other options to set as well. Check the manual page to +learn the details.

+ +

If you are forced to moderate lists on a mailman installation where +the SSL certificate is self signed or not properly signed by a +generally accepted signing authority, you can set a environment +variable when calling listadmin to disable SSL verification:

+ +

+PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin
+

+ +

If you want to moderate a subset of the lists you take care of, you +can provide an argument to the listadmin script like I do in the +initial screen dump (the xiph argument). Using an argument, only +lists matching the argument string will be processed. This make it +quick to accept messages if you notice the moderation request in your +email.

+ +

Without the listadmin program, I would never be the moderator of 68 +mailing lists, as I simply do not have time to spend on that if the +process was any slower. The listadmin program have saved me hours of +time I could spend elsewhere over the years. It truly is nice free +software.

+ +

As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.

+ +

Update 2014-10-27: Added missing 'username' statement in +configuration example. Also, I've been told that the +PERL_LWP_SSL_VERIFY_HOSTNAME=0 setting do not work for everyone. Not +sure why.

+ +
+
+ + + Tags: debian, english, nice free software. + + +
+
+
+ +
+ +
+ 9th April 2014 +
+
+

For a while now, I have been looking for a sensible offsite backup +solution for use at home. My requirements are simple, it must be +cheap and locally encrypted (in other words, I keep the encryption +keys, the storage provider do not have access to my private files). +One idea me and my friends had many years ago, before the cloud +storage providers showed up, was to use Google mail as storage, +writing a Linux block device storing blocks as emails in the mail +service provided by Google, and thus get heaps of free space. On top +of this one can add encryption, RAID and volume management to have +lots of (fairly slow, I admit that) cheap and encrypted storage. But +I never found time to implement such system. But the last few weeks I +have looked at a system called +S3QL, a locally +mounted network backed file system with the features I need.

+ +

S3QL is a fuse file system with a local cache and cloud storage, +handling several different storage providers, any with Amazon S3, +Google Drive or OpenStack API. There are heaps of such storage +providers. S3QL can also use a local directory as storage, which +combined with sshfs allow for file storage on any ssh server. S3QL +include support for encryption, compression, de-duplication, snapshots +and immutable file systems, allowing me to mount the remote storage as +a local mount point, look at and use the files as if they were local, +while the content is stored in the cloud as well. This allow me to +have a backup that should survive fire. The file system can not be +shared between several machines at the same time, as only one can +mount it at the time, but any machine with the encryption key and +access to the storage service can mount it if it is unmounted.

+ +

It is simple to use. I'm using it on Debian Wheezy, where the +package is included already. So to get started, run apt-get +install s3ql. Next, pick a storage provider. I ended up picking +Greenqloud, after reading their nice recipe on +how +to use S3QL with their Amazon S3 service, because I trust the laws +in Iceland more than those in USA when it come to keeping my personal +data safe and private, and thus would rather spend money on a company +in Iceland. Another nice recipe is available from the article +S3QL +Filesystem for HPC Storage by Jeff Layton in the HPC section of +Admin magazine. When the provider is picked, figure out how to get +the API key needed to connect to the storage API. With Greencloud, +the key did not show up until I had added payment details to my +account.

+ +

Armed with the API access details, it is time to create the file +system. First, create a new bucket in the cloud. This bucket is the +file system storage area. I picked a bucket name reflecting the +machine that was going to store data there, but any name will do. +I'll refer to it as bucket-name below. In addition, one need +the API login and password, and a locally created password. Store it +all in ~root/.s3ql/authinfo2 like this: + +

+[s3c]
+storage-url: s3c://s.greenqloud.com:443/bucket-name
+backend-login: API-login
+backend-password: API-password
+fs-passphrase: local-password
+

+ +

I create my local passphrase using pwget 50 or similar, +but any sensible way to create a fairly random password should do it. +Armed with these details, it is now time to run mkfs, entering the API +details and password to create it:

+ +

+# mkdir -m 700 /var/lib/s3ql-cache
+# mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
+  --ssl s3c://s.greenqloud.com:443/bucket-name
+Enter backend login: 
+Enter backend password: 
+Before using S3QL, make sure to read the user's guide, especially
+the 'Important Rules to Avoid Loosing Data' section.
+Enter encryption password: 
+Confirm encryption password: 
+Generating random encryption key...
+Creating metadata tables...
+Dumping metadata...
+..objects..
+..blocks..
+..inodes..
+..inode_blocks..
+..symlink_targets..
+..names..
+..contents..
+..ext_attributes..
+Compressing and uploading metadata...
+Wrote 0.00 MB of compressed metadata.
+# 

+ +

The next step is mounting the file system to make the storage available. + +

+# mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
+  --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
+Using 4 upload threads.
+Downloading and decompressing metadata...
+Reading metadata...
+..objects..
+..blocks..
+..inodes..
+..inode_blocks..
+..symlink_targets..
+..names..
+..contents..
+..ext_attributes..
+Mounting filesystem...
+# df -h /s3ql
+Filesystem                              Size  Used Avail Use% Mounted on
+s3c://s.greenqloud.com:443/bucket-name  1.0T     0  1.0T   0% /s3ql
+#
+

+ +

The file system is now ready for use. I use rsync to store my +backups in it, and as the metadata used by rsync is downloaded at +mount time, no network traffic (and storage cost) is triggered by +running rsync. To unmount, one should not use the normal umount +command, as this will not flush the cache to the cloud storage, but +instead running the umount.s3ql command like this: + +

+# umount.s3ql /s3ql
+# 
+

+ +

There is a fsck command available to check the file system and +correct any problems detected. This can be used if the local server +crashes while the file system is mounted, to reset the "already +mounted" flag. This is what it look like when processing a working +file system:

+ +

+# fsck.s3ql --force --ssl s3c://s.greenqloud.com:443/bucket-name
+Using cached metadata.
+File system seems clean, checking anyway.
+Checking DB integrity...
+Creating temporary extra indices...
+Checking lost+found...
+Checking cached objects...
+Checking names (refcounts)...
+Checking contents (names)...
+Checking contents (inodes)...
+Checking contents (parent inodes)...
+Checking objects (reference counts)...
+Checking objects (backend)...
+..processed 5000 objects so far..
+..processed 10000 objects so far..
+..processed 15000 objects so far..
+Checking objects (sizes)...
+Checking blocks (referenced objects)...
+Checking blocks (refcounts)...
+Checking inode-block mapping (blocks)...
+Checking inode-block mapping (inodes)...
+Checking inodes (refcounts)...
+Checking inodes (sizes)...
+Checking extended attributes (names)...
+Checking extended attributes (inodes)...
+Checking symlinks (inodes)...
+Checking directory reachability...
+Checking unix conventions...
+Checking referential integrity...
+Dropping temporary indices...
+Backing up old metadata...
+Dumping metadata...
+..objects..
+..blocks..
+..inodes..
+..inode_blocks..
+..symlink_targets..
+..names..
+..contents..
+..ext_attributes..
+Compressing and uploading metadata...
+Wrote 0.89 MB of compressed metadata.
+# 
+

+ +

Thanks to the cache, working on files that fit in the cache is very +quick, about the same speed as local file access. Uploading large +amount of data is to me limited by the bandwidth out of and into my +house. Uploading 685 MiB with a 100 MiB cache gave me 305 kiB/s, +which is very close to my upload speed, and downloading the same +Debian installation ISO gave me 610 kiB/s, close to my download speed. +Both were measured using dd. So for me, the bottleneck is my +network, not the file system code. I do not know what a good cache +size would be, but suspect that the cache should e larger than your +working set.

+ +

I mentioned that only one machine can mount the file system at the +time. If another machine try, it is told that the file system is +busy:

+ +

+# mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
+  --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
+Using 8 upload threads.
+Backend reports that fs is still mounted elsewhere, aborting.
+#
+

+ +

The file content is uploaded when the cache is full, while the +metadata is uploaded once every 24 hour by default. To ensure the +file system content is flushed to the cloud, one can either umount the +file system, or ask S3QL to flush the cache and metadata using +s3qlctrl: + +

+# s3qlctrl upload-meta /s3ql
+# s3qlctrl flushcache /s3ql
+# 
+

+ +

If you are curious about how much space your data uses in the +cloud, and how much compression and deduplication cut down on the +storage usage, you can use s3qlstat on the mounted file system to get +a report:

+ +

+# s3qlstat /s3ql
+Directory entries:    9141
+Inodes:               9143
+Data blocks:          8851
+Total data size:      22049.38 MB
+After de-duplication: 21955.46 MB (99.57% of total)
+After compression:    21877.28 MB (99.22% of total, 99.64% of de-duplicated)
+Database size:        2.39 MB (uncompressed)
+(some values do not take into account not-yet-uploaded dirty blocks in cache)
+#
+

+ +

I mentioned earlier that there are several possible suppliers of +storage. I did not try to locate them all, but am aware of at least +Greenqloud, +Google Drive, +Amazon S3 web serivces, +Rackspace and +Crowncloud. The latter even +accept payment in Bitcoin. Pick one that suit your need. Some of +them provide several GiB of free storage, but the prize models are +quite different and you will have to figure out what suits you +best.

+ +

While researching this blog post, I had a look at research papers +and posters discussing the S3QL file system. There are several, which +told me that the file system is getting a critical check by the +science community and increased my confidence in using it. One nice +poster is titled +"An +Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject +Store and Transformative Parallel I/O Approach" by Hsing-Bung +Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields +and Pamela Smith. Please have a look.

+ +

Given my problems with different file systems earlier, I decided to +check out the mounted S3QL file system to see if it would be usable as +a home directory (in other word, that it provided POSIX semantics when +it come to locking and umask handling etc). Running +my +test code to check file system semantics, I was happy to discover that +no error was found. So the file system can be used for home +directories, if one chooses to do so.

+ +

If you do not want a locally file system, and want something that +work without the Linux fuse file system, I would like to mention the +Tarsnap service, which also +provide locally encrypted backup using a command line client. It have +a nicer access control system, where one can split out read and write +access, allowing some systems to write to the backup and others to +only read from it.

+ +

As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.

+ +
+ +
+
+ +
+ +
+ 1st April 2014 +
+
+

Microsoft have announced that Windows XP reaches its end of life +2014-04-08, in 7 days. But there are heaps of machines still running +Windows XP, and depending on Windows XP to run their applications, and +upgrading will be expensive, both when it comes to money and when it +comes to the amount of effort needed to migrate from Windows XP to a +new operating system. Some obvious options (buy new a Windows +machine, buy a MacOSX machine, install Linux on the existing machine) +are already well known and covered elsewhere. Most of them involve +leaving the user applications installed on Windows XP behind and +trying out replacements or updated versions. In this blog post I want +to mention one strange bird that allow people to keep the hardware and +the existing Windows XP applications and run them on a free software +operating system that is Windows XP compatible.

+ +

ReactOS is a free software +operating system (GNU GPL licensed) working on providing a operating +system that is binary compatible with Windows, able to run windows +programs directly and to use Windows drivers for hardware directly. +The project goal is for Windows user to keep their existing machines, +drivers and software, and gain the advantages from user a operating +system without usage limitations caused by non-free licensing. It is +a Windows clone running directly on the hardware, so quite different +from the approach taken by the Wine +project, which make it possible to run Windows binaries on +Linux.

+ +

The ReactOS project share code with the Wine project, so most +shared libraries available on Windows are already implemented already. +There is also a software manager like the one we are used to on Linux, +allowing the user to install free software applications with a simple +click directly from the Internet. Check out the +screen shots on the +project web site for an idea what it look like (it looks just like +Windows before metro).

+ +

I do not use ReactOS myself, preferring Linux and Unix like +operating systems. I've tested it, and it work fine in a virt-manager +virtual machine. The browser, minesweeper, notepad etc is working +fine as far as I can tell. Unfortunately, my main test application +is the software included on a CD with the Lego Mindstorms NXT, which +seem to install just fine from CD but fail to leave any binaries on +the disk after the installation. So no luck with that test software. +No idea why, but hope someone else figure out and fix the problem. +I've tried the ReactOS Live ISO on a physical machine, and it seemed +to work just fine. If you like Windows and want to keep running your +old Windows binaries, check it out by +downloading the +installation CD, the live CD or the preinstalled virtual machine +image.

+ +
+
+ + + Tags: english, nice free software, reactos. + + +
+
+
+ +
+ +
+ 21st March 2014 +
+
+

Keeping your DVD collection safe from scratches and curious +children fingers while still having it available when you want to see a +movie is not straight forward. My preferred method at the moment is +to store a full copy of the ISO on a hard drive, and use VLC, Popcorn +Hour or other useful players to view the resulting file. This way the +subtitles and bonus material are still available and using the ISO is +just like inserting the original DVD record in the DVD player.

+ +

Earlier I used dd for taking security copies, but it do not handle +DVDs giving read errors (which are quite a few of them). I've also +tried using +dvdbackup +and genisoimage, but these days I use the marvellous python library +and program +python-dvdvideo +written by Bastian Blank. It is +in Debian +already and the binary package name is python3-dvdvideo. Instead +of trying to read every block from the DVD, it parses the file +structure and figure out which block on the DVD is actually in used, +and only read those blocks from the DVD. This work surprisingly well, +and I have been able to almost backup my entire DVD collection using +this method.

+ +

So far, python-dvdvideo have failed on between 10 and +20 DVDs, which is a small fraction of my collection. The most common +problem is +DVDs +using UTF-16 instead of UTF-8 characters, which according to +Bastian is against the DVD specification (and seem to cause some +players to fail too). A rarer problem is what seem to be inconsistent +DVD structures, as the python library +claim +there is a overlap between objects. An equally rare problem claim +some +value is out of range. No idea what is going on there. I wish I +knew enough about the DVD format to fix these, to ensure my movie +collection will stay with me in the future.

+ +

So, if you need to keep your DVDs safe, back them up using +python-dvdvideo. :)

+ +
+ +
+
+ +
+ +
+ 7th July 2012 +
+
+

Included in Debian Edu / +Skolelinux is a large collection of end user and school specific +software. It is one of the packages not installed by default but +provided in the Debian archive for schools to install if they want to, +is a system to automatically plan the school time table using +information about available teachers, classes and rooms, combined with +the list of required courses and how many hours each topic should +receive. The software is + +named FET, and it provide a +graphical user interface to input the required information, save the +result in a fairly simple XML format, and generate time tables for +both teachers and students. It is available both for +Linux, MacOSX and +Windows.

+ +

This is the +feature list, liftet from the project web site:

+ +

    + +
  • FET is free software, licensed under the GNU GPL v2 or later. + You can freely use, copy, modify and redistribute it
  • + +
  • Localized to en_US (US English, default), ar (Arabic), ca + (Catalan), da (Danish), de (German), el (Greek), es (Spanish), fa + (Persian), fr (French), gl (Galician), he (Hebrew), hu + (Hungarian), id (Indonesian), it (Italian), lt (Lithuanian), mk + (Macedonian), ms (Malay), nl (Dutch), pl (Polish), pt_BR + (Brazilian Portuguese), ro (Romanian), ru (Russian), si (Sinhala), + sk (Slovak), sr (Serbian), tr (Turkish), uk (Ukrainian), uz + (Uzbek) and vi (Vietnamese) (incompletely for some languages) +
  • + +
  • Fully automatic generation algorithm, allowing also + semi-automatic or manual allocation
  • + +
  • Platform independent implementation, allowing running on + GNU/Linux, Windows, Mac and any system that Qt supports
  • + +
  • Flexible modular XML format for the input file, allowing editing + with an XML editor or by hand (besides FET interface)
  • + +
  • Import/export from CSV format
  • + +
  • The resulted timetables are exported into HTML, XML and CSV + formats
  • + +
  • Flexible students structure, organized into sets: years, groups + and subgroups. FET allows overlapping years and groups and + non-overlapping subgroups. You can even define individual students + (as separate sets)
  • + +
  • Each constraint has a weight percentage, from 0.0% to 100.0% + (but some special constraints are allowed to have only 100% weight + percentage)
  • + +
  • Limits for the algorithm (all these limits can be increased on + demand, as a custom version, because this would require a bit more + memory): +
      +
    • Maximum total number of hours (periods) per day: 60
    • +
    • Maximum number of working days per week: 35
    • +
    • Maximum total number of teachers: 6000
    • +
    • Maximum total number of sets of students: 30000
    • +
    • Maximum total number of subjects: 6000
    • +
    • Virtually unlimited number of activity tags
    • +
    • Maximum number of activities: 30000
    • +
    • Maximum number of rooms: 6000
    • +
    • Maximum number of buildings: 6000
    • +
    • Possibility of adding multiple teachers and + students sets for each activity. (it is possible + also to have no teachers or no students sets for an + activity)
    • +
    • Virtually unlimited number of time constraints
    • +
    • Virtually unlimited number of space constraints
    • +
  • + +
  • A large and flexible palette of time constraints: +
      +
    • Break periods
    • +
    • For teacher(s): +
        +
      • Not available periods
      • +
      • Max/min days per week
      • +
      • Max gaps per day/week
      • +
      • Max hours daily/continuously
      • +
      • Min hours daily
      • +
      • Max hours daily/continuously with an activity tag
      • + +
      • Respect working in an hourly interval a max number of + days per week
      • +
    • +
    • For students (sets): +
        +
      • Not available periods
      • +
      • Begins early (specify max allowed beginnings at second hour)
      • +
      • Max gaps per day/week
      • +
      • Max hours daily/continuously
      • +
      • Min hours daily
      • +
      • Max hours daily/continuously with an activity tag
      • + +
      • Respect working in an hourly interval a max number of + days per week
      • +
    • +
    • For an activity or a set of activities/subactivities: +
        +
      • A single preferred starting time
      • +
      • A set of preferred starting times
      • +
      • A set of preferred time slots
      • +
      • Min/max days between them
      • +
      • End(s) students day
      • +
      • Same starting time/day/hour
      • +
      • Occupy max time slots from selection (a complex and + flexible constraint, useful in many situations)
      • +
      • Consecutive, ordered, grouped (for 2 or 3 (sub)activities)
      • +
      • Not overlapping
      • +
      • Max simultaneous in selected time slots
      • +
      • Min gaps between a set of (sub)activities
      • +
    • +
  • + +
  • A large and flexible palette of space constraints: +
      +
    • Room not available periods
    • +
    • For teacher(s): +
        +
      • Home room(s)
      • +
      • Max building changes per day/week
      • +
      • Min gaps between building changes
      • +
      +
    • + +
    • For students (sets): +
        +
      • Home room(s)
      • +
      • Max building changes per day/week
      • +
      • Min gaps between building changes
      • +
      +
    • +
    • Preferred room(s): +
        +
      • For a subject
      • +
      • For an activity tag
      • +
      • For a subject and an activity tag
      • +
      • Individually for a (sub)activity
      • +
      +
    • + +
    • For a set of activities: +
        +
      • Occupy a maximum number of different rooms
      • +
      +
    • +
    +
  • +

+ +

I have not used it myself, as I am not involved in time table +planning at a school, but it seem to work fine when I test it. If you +need to set up your schools time table, and is tired of doing it +manually, check it out. + +A quick summary on how to use it can be found in +a +blog post from MarvelSoft. If you find FET useful, please provide +a recipe for the Debian Edu project in the +Debian Edu HowTo +section.

+ +
+
+ + + Tags: debian edu, english, nice free software. + + +
+
+
+ +

RSS Feed

+ +

+ Created by Chronicle v4.6 +

+ + + diff --git a/blog/tags/nice free software/nice free software.rss b/blog/tags/nice free software/nice free software.rss new file mode 100644 index 0000000000..1fbf5efc1b --- /dev/null +++ b/blog/tags/nice free software/nice free software.rss @@ -0,0 +1,719 @@ + + + + Petter Reinholdtsen - Entries tagged nice free software + Entries tagged nice free software + http://people.skolelinux.org/pere/blog/ + + + + OpenALPR, find car license plates in video streams - nice free software + http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html + http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html + Wed, 23 Dec 2015 01:00:00 +0100 + <p>When I was a kid, we used to collect "car numbers", as we used to +call the car license plate numbers in those days. I would write the +numbers down in my little book and compare notes with the other kids +to see how many region codes we had seen and if we had seen some +exotic or special region codes and numbers. It was a fun game to pass +time, as we kids have plenty of it.</p> + +<p>A few days I came across +<a href="https://github.com/openalpr/openalpr">the OpenALPR +project</a>, a free software project to automatically discover and +report license plates in images and video streams, and provide the +"car numbers" in a machine readable format. I've been looking for +such system for a while now, because I believe it is a bad idea that the +<a href="https://en.wikipedia.org/wiki/Automatic_number_plate_recognition">automatic +number plate recognition</a> tool only is available in the hands of +the powerful, and want it to be available also for the powerless to +even the score when it comes to surveillance and sousveillance. I +discovered the developer +<a href="https://bugs.debian.org/747509">wanted to get the tool into +Debian</a>, and as I too wanted it to be in Debian, I volunteered to +help him get it into shape to get the package uploaded into the Debian +archive.</p> + +<p>Today we finally managed to get the package into shape and uploaded +it into Debian, where it currently +<a href="https://ftp-master.debian.org//new/openalpr_2.2.1-1.html">waits +in the NEW queue</a> for review by the Debian ftpmasters.</p> + +<p>I guess you are wondering why on earth such tool would be useful +for the common folks, ie those not running a large government +surveillance system? Well, I plan to put it in a computer on my bike +and in my car, tracking the cars nearby and allowing me to be notified +when number plates on my watch list are discovered. Another use case +was suggested by a friend of mine, who wanted to set it up at his home +to open the car port automatically when it discovered the plate on his +car. When I mentioned it perhaps was a bit foolhardy to allow anyone +capable of placing his license plate number of a piece of cardboard to +open his car port, men replied that it was always unlocked anyway. I +guess for such use case it make sense. I am sure there are other use +cases too, for those with imagination and a vision.</p> + +<p>If you want to build your own version of the Debian package, check +out the upstream git source and symlink ./distros/debian to ./debian/ +before running "debuild" to build the source. Or wait a bit until the +package show up in unstable.</p> + + + + + listadmin, the quick way to moderate mailman lists - nice free software + http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html + http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html + Wed, 22 Oct 2014 20:00:00 +0200 + <p>If you ever had to moderate a mailman list, like the ones on +alioth.debian.org, you know the web interface is fairly slow to +operate. First you visit one web page, enter the moderation password +and get a new page shown with a list of all the messages to moderate +and various options for each email address. This take a while for +every list you moderate, and you need to do it regularly to do a good +job as a list moderator. But there is a quick alternative, +<a href="http://heim.ifi.uio.no/kjetilho/hacks/#listadmin">the +listadmin program</a>. It allow you to check lists for new messages +to moderate in a fraction of a second. Here is a test run on two +lists I recently took over:</p> + +<p><blockquote><pre> +% time listadmin xiph +fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue +fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue + +real 0m1.709s +user 0m0.232s +sys 0m0.012s +% +</pre></blockquote></p> + +<p>In 1.7 seconds I had checked two mailing lists and confirmed that +there are no message in the moderation queue. Every morning I +currently moderate 68 mailman lists, and it normally take around two +minutes. When I took over the two pkg-xiph lists above a few days +ago, there were 400 emails waiting in the moderator queue. It took me +less than 15 minutes to process them all using the listadmin +program.</p> + +<p>If you install +<a href="https://tracker.debian.org/pkg/listadmin">the listadmin +package</a> from Debian and create a file <tt>~/.listadmin.ini</tt> +with content like this, the moderation task is a breeze:</p> + +<p><blockquote><pre> +username username@example.org +spamlevel 23 +default discard +discard_if_reason "Posting restricted to members only. Remove us from your mail list." + +password secret +adminurl https://{domain}/mailman/admindb/{list} +mailman-list@lists.example.com + +password hidden +other-list@otherserver.example.org +</pre></blockquote></p> + +<p>There are other options to set as well. Check the manual page to +learn the details.</p> + +<p>If you are forced to moderate lists on a mailman installation where +the SSL certificate is self signed or not properly signed by a +generally accepted signing authority, you can set a environment +variable when calling listadmin to disable SSL verification:</p> + +<p><blockquote><pre> +PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin +</pre></blockquote></p> + +<p>If you want to moderate a subset of the lists you take care of, you +can provide an argument to the listadmin script like I do in the +initial screen dump (the xiph argument). Using an argument, only +lists matching the argument string will be processed. This make it +quick to accept messages if you notice the moderation request in your +email.</p> + +<p>Without the listadmin program, I would never be the moderator of 68 +mailing lists, as I simply do not have time to spend on that if the +process was any slower. The listadmin program have saved me hours of +time I could spend elsewhere over the years. It truly is nice free +software.</p> + +<p>As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p> + +<p>Update 2014-10-27: Added missing 'username' statement in +configuration example. Also, I've been told that the +PERL_LWP_SSL_VERIFY_HOSTNAME=0 setting do not work for everyone. Not +sure why.</p> + + + + + S3QL, a locally mounted cloud file system - nice free software + http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html + http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html + Wed, 9 Apr 2014 11:30:00 +0200 + <p>For a while now, I have been looking for a sensible offsite backup +solution for use at home. My requirements are simple, it must be +cheap and locally encrypted (in other words, I keep the encryption +keys, the storage provider do not have access to my private files). +One idea me and my friends had many years ago, before the cloud +storage providers showed up, was to use Google mail as storage, +writing a Linux block device storing blocks as emails in the mail +service provided by Google, and thus get heaps of free space. On top +of this one can add encryption, RAID and volume management to have +lots of (fairly slow, I admit that) cheap and encrypted storage. But +I never found time to implement such system. But the last few weeks I +have looked at a system called +<a href="https://bitbucket.org/nikratio/s3ql/">S3QL</a>, a locally +mounted network backed file system with the features I need.</p> + +<p>S3QL is a fuse file system with a local cache and cloud storage, +handling several different storage providers, any with Amazon S3, +Google Drive or OpenStack API. There are heaps of such storage +providers. S3QL can also use a local directory as storage, which +combined with sshfs allow for file storage on any ssh server. S3QL +include support for encryption, compression, de-duplication, snapshots +and immutable file systems, allowing me to mount the remote storage as +a local mount point, look at and use the files as if they were local, +while the content is stored in the cloud as well. This allow me to +have a backup that should survive fire. The file system can not be +shared between several machines at the same time, as only one can +mount it at the time, but any machine with the encryption key and +access to the storage service can mount it if it is unmounted.</p> + +<p>It is simple to use. I'm using it on Debian Wheezy, where the +package is included already. So to get started, run <tt>apt-get +install s3ql</tt>. Next, pick a storage provider. I ended up picking +Greenqloud, after reading their nice recipe on +<a href="https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy">how +to use S3QL with their Amazon S3 service</a>, because I trust the laws +in Iceland more than those in USA when it come to keeping my personal +data safe and private, and thus would rather spend money on a company +in Iceland. Another nice recipe is available from the article +<a href="http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage">S3QL +Filesystem for HPC Storage</a> by Jeff Layton in the HPC section of +Admin magazine. When the provider is picked, figure out how to get +the API key needed to connect to the storage API. With Greencloud, +the key did not show up until I had added payment details to my +account.</p> + +<p>Armed with the API access details, it is time to create the file +system. First, create a new bucket in the cloud. This bucket is the +file system storage area. I picked a bucket name reflecting the +machine that was going to store data there, but any name will do. +I'll refer to it as <tt>bucket-name</tt> below. In addition, one need +the API login and password, and a locally created password. Store it +all in ~root/.s3ql/authinfo2 like this: + +<p><blockquote><pre> +[s3c] +storage-url: s3c://s.greenqloud.com:443/bucket-name +backend-login: API-login +backend-password: API-password +fs-passphrase: local-password +</pre></blockquote></p> + +<p>I create my local passphrase using <tt>pwget 50</tt> or similar, +but any sensible way to create a fairly random password should do it. +Armed with these details, it is now time to run mkfs, entering the API +details and password to create it:</p> + +<p><blockquote><pre> +# mkdir -m 700 /var/lib/s3ql-cache +# mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \ + --ssl s3c://s.greenqloud.com:443/bucket-name +Enter backend login: +Enter backend password: +Before using S3QL, make sure to read the user's guide, especially +the 'Important Rules to Avoid Loosing Data' section. +Enter encryption password: +Confirm encryption password: +Generating random encryption key... +Creating metadata tables... +Dumping metadata... +..objects.. +..blocks.. +..inodes.. +..inode_blocks.. +..symlink_targets.. +..names.. +..contents.. +..ext_attributes.. +Compressing and uploading metadata... +Wrote 0.00 MB of compressed metadata. +# </pre></blockquote></p> + +<p>The next step is mounting the file system to make the storage available. + +<p><blockquote><pre> +# mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \ + --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql +Using 4 upload threads. +Downloading and decompressing metadata... +Reading metadata... +..objects.. +..blocks.. +..inodes.. +..inode_blocks.. +..symlink_targets.. +..names.. +..contents.. +..ext_attributes.. +Mounting filesystem... +# df -h /s3ql +Filesystem Size Used Avail Use% Mounted on +s3c://s.greenqloud.com:443/bucket-name 1.0T 0 1.0T 0% /s3ql +# +</pre></blockquote></p> + +<p>The file system is now ready for use. I use rsync to store my +backups in it, and as the metadata used by rsync is downloaded at +mount time, no network traffic (and storage cost) is triggered by +running rsync. To unmount, one should not use the normal umount +command, as this will not flush the cache to the cloud storage, but +instead running the umount.s3ql command like this: + +<p><blockquote><pre> +# umount.s3ql /s3ql +# +</pre></blockquote></p> + +<p>There is a fsck command available to check the file system and +correct any problems detected. This can be used if the local server +crashes while the file system is mounted, to reset the "already +mounted" flag. This is what it look like when processing a working +file system:</p> + +<p><blockquote><pre> +# fsck.s3ql --force --ssl s3c://s.greenqloud.com:443/bucket-name +Using cached metadata. +File system seems clean, checking anyway. +Checking DB integrity... +Creating temporary extra indices... +Checking lost+found... +Checking cached objects... +Checking names (refcounts)... +Checking contents (names)... +Checking contents (inodes)... +Checking contents (parent inodes)... +Checking objects (reference counts)... +Checking objects (backend)... +..processed 5000 objects so far.. +..processed 10000 objects so far.. +..processed 15000 objects so far.. +Checking objects (sizes)... +Checking blocks (referenced objects)... +Checking blocks (refcounts)... +Checking inode-block mapping (blocks)... +Checking inode-block mapping (inodes)... +Checking inodes (refcounts)... +Checking inodes (sizes)... +Checking extended attributes (names)... +Checking extended attributes (inodes)... +Checking symlinks (inodes)... +Checking directory reachability... +Checking unix conventions... +Checking referential integrity... +Dropping temporary indices... +Backing up old metadata... +Dumping metadata... +..objects.. +..blocks.. +..inodes.. +..inode_blocks.. +..symlink_targets.. +..names.. +..contents.. +..ext_attributes.. +Compressing and uploading metadata... +Wrote 0.89 MB of compressed metadata. +# +</pre></blockquote></p> + +<p>Thanks to the cache, working on files that fit in the cache is very +quick, about the same speed as local file access. Uploading large +amount of data is to me limited by the bandwidth out of and into my +house. Uploading 685 MiB with a 100 MiB cache gave me 305 kiB/s, +which is very close to my upload speed, and downloading the same +Debian installation ISO gave me 610 kiB/s, close to my download speed. +Both were measured using <tt>dd</tt>. So for me, the bottleneck is my +network, not the file system code. I do not know what a good cache +size would be, but suspect that the cache should e larger than your +working set.</p> + +<p>I mentioned that only one machine can mount the file system at the +time. If another machine try, it is told that the file system is +busy:</p> + +<p><blockquote><pre> +# mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \ + --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql +Using 8 upload threads. +Backend reports that fs is still mounted elsewhere, aborting. +# +</pre></blockquote></p> + +<p>The file content is uploaded when the cache is full, while the +metadata is uploaded once every 24 hour by default. To ensure the +file system content is flushed to the cloud, one can either umount the +file system, or ask S3QL to flush the cache and metadata using +s3qlctrl: + +<p><blockquote><pre> +# s3qlctrl upload-meta /s3ql +# s3qlctrl flushcache /s3ql +# +</pre></blockquote></p> + +<p>If you are curious about how much space your data uses in the +cloud, and how much compression and deduplication cut down on the +storage usage, you can use s3qlstat on the mounted file system to get +a report:</p> + +<p><blockquote><pre> +# s3qlstat /s3ql +Directory entries: 9141 +Inodes: 9143 +Data blocks: 8851 +Total data size: 22049.38 MB +After de-duplication: 21955.46 MB (99.57% of total) +After compression: 21877.28 MB (99.22% of total, 99.64% of de-duplicated) +Database size: 2.39 MB (uncompressed) +(some values do not take into account not-yet-uploaded dirty blocks in cache) +# +</pre></blockquote></p> + +<p>I mentioned earlier that there are several possible suppliers of +storage. I did not try to locate them all, but am aware of at least +<a href="https://www.greenqloud.com/">Greenqloud</a>, +<a href="http://drive.google.com/">Google Drive</a>, +<a href="http://aws.amazon.com/s3/">Amazon S3 web serivces</a>, +<a href="http://www.rackspace.com/">Rackspace</a> and +<a href="http://crowncloud.net/">Crowncloud</A>. The latter even +accept payment in Bitcoin. Pick one that suit your need. Some of +them provide several GiB of free storage, but the prize models are +quite different and you will have to figure out what suits you +best.</p> + +<p>While researching this blog post, I had a look at research papers +and posters discussing the S3QL file system. There are several, which +told me that the file system is getting a critical check by the +science community and increased my confidence in using it. One nice +poster is titled +"<a href="http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf">An +Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject +Store and Transformative Parallel I/O Approach</a>" by Hsing-Bung +Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields +and Pamela Smith. Please have a look.</p> + +<p>Given my problems with different file systems earlier, I decided to +check out the mounted S3QL file system to see if it would be usable as +a home directory (in other word, that it provided POSIX semantics when +it come to locking and umask handling etc). Running +<a href="http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html">my +test code to check file system semantics</a>, I was happy to discover that +no error was found. So the file system can be used for home +directories, if one chooses to do so.</p> + +<p>If you do not want a locally file system, and want something that +work without the Linux fuse file system, I would like to mention the +<a href="http://www.tarsnap.com/">Tarsnap service</a>, which also +provide locally encrypted backup using a command line client. It have +a nicer access control system, where one can split out read and write +access, allowing some systems to write to the backup and others to +only read from it.</p> + +<p>As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p> + + + + + ReactOS Windows clone - nice free software + http://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html + http://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html + Tue, 1 Apr 2014 12:10:00 +0200 + <p>Microsoft have announced that Windows XP reaches its end of life +2014-04-08, in 7 days. But there are heaps of machines still running +Windows XP, and depending on Windows XP to run their applications, and +upgrading will be expensive, both when it comes to money and when it +comes to the amount of effort needed to migrate from Windows XP to a +new operating system. Some obvious options (buy new a Windows +machine, buy a MacOSX machine, install Linux on the existing machine) +are already well known and covered elsewhere. Most of them involve +leaving the user applications installed on Windows XP behind and +trying out replacements or updated versions. In this blog post I want +to mention one strange bird that allow people to keep the hardware and +the existing Windows XP applications and run them on a free software +operating system that is Windows XP compatible.</p> + +<p><a href="http://www.reactos.org/">ReactOS</a> is a free software +operating system (GNU GPL licensed) working on providing a operating +system that is binary compatible with Windows, able to run windows +programs directly and to use Windows drivers for hardware directly. +The project goal is for Windows user to keep their existing machines, +drivers and software, and gain the advantages from user a operating +system without usage limitations caused by non-free licensing. It is +a Windows clone running directly on the hardware, so quite different +from the approach taken by <a href="http://www.winehq.org/">the Wine +project</a>, which make it possible to run Windows binaries on +Linux.</p> + +<p>The ReactOS project share code with the Wine project, so most +shared libraries available on Windows are already implemented already. +There is also a software manager like the one we are used to on Linux, +allowing the user to install free software applications with a simple +click directly from the Internet. Check out the +<a href="http://www.reactos.org/screenshots">screen shots on the +project web site</a> for an idea what it look like (it looks just like +Windows before metro).</p> + +<p>I do not use ReactOS myself, preferring Linux and Unix like +operating systems. I've tested it, and it work fine in a virt-manager +virtual machine. The browser, minesweeper, notepad etc is working +fine as far as I can tell. Unfortunately, my main test application +is the software included on a CD with the Lego Mindstorms NXT, which +seem to install just fine from CD but fail to leave any binaries on +the disk after the installation. So no luck with that test software. +No idea why, but hope someone else figure out and fix the problem. +I've tried the ReactOS Live ISO on a physical machine, and it seemed +to work just fine. If you like Windows and want to keep running your +old Windows binaries, check it out by +<a href="http://www.reactos.org/download">downloading</a> the +installation CD, the live CD or the preinstalled virtual machine +image.</p> + + + + + Video DVD reader library / python-dvdvideo - nice free software + http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html + http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html + Fri, 21 Mar 2014 15:25:00 +0100 + <p>Keeping your DVD collection safe from scratches and curious +children fingers while still having it available when you want to see a +movie is not straight forward. My preferred method at the moment is +to store a full copy of the ISO on a hard drive, and use VLC, Popcorn +Hour or other useful players to view the resulting file. This way the +subtitles and bonus material are still available and using the ISO is +just like inserting the original DVD record in the DVD player.</p> + +<p>Earlier I used dd for taking security copies, but it do not handle +DVDs giving read errors (which are quite a few of them). I've also +tried using +<a href="http://people.skolelinux.org/pere/blog/Ripping_problematic_DVDs_using_dvdbackup_and_genisoimage.html">dvdbackup +and genisoimage</a>, but these days I use the marvellous python library +and program +<a href="http://bblank.thinkmo.de/blog/new-software-python-dvdvideo">python-dvdvideo</a> +written by Bastian Blank. It is +<a href="http://packages.qa.debian.org/p/python-dvdvideo.html">in Debian +already</a> and the binary package name is python3-dvdvideo. Instead +of trying to read every block from the DVD, it parses the file +structure and figure out which block on the DVD is actually in used, +and only read those blocks from the DVD. This work surprisingly well, +and I have been able to almost backup my entire DVD collection using +this method.</p> + +<p>So far, python-dvdvideo have failed on between 10 and +20 DVDs, which is a small fraction of my collection. The most common +problem is +<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=720831">DVDs +using UTF-16 instead of UTF-8 characters</a>, which according to +Bastian is against the DVD specification (and seem to cause some +players to fail too). A rarer problem is what seem to be inconsistent +DVD structures, as the python library +<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=723079">claim +there is a overlap between objects</a>. An equally rare problem claim +<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741878">some +value is out of range</a>. No idea what is going on there. I wish I +knew enough about the DVD format to fix these, to ensure my movie +collection will stay with me in the future.</p> + +<p>So, if you need to keep your DVDs safe, back them up using +python-dvdvideo. :)</p> + + + + + Free Timetabling Software - nice free software + http://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html + http://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html + Sat, 7 Jul 2012 09:50:00 +0200 + <p>Included in <a href="http://www.skolelinux.org/">Debian Edu / +Skolelinux</a> is a large collection of end user and school specific +software. It is one of the packages not installed by default but +provided in the Debian archive for schools to install if they want to, +is a system to automatically plan the school time table using +information about available teachers, classes and rooms, combined with +the list of required courses and how many hours each topic should +receive. The software is + +<a href="http://lalescu.ro/liviu/fet/">named FET</a>, and it provide a +graphical user interface to input the required information, save the +result in a fairly simple XML format, and generate time tables for +both teachers and students. It is available both for +<a href="http://lalescu.ro/liviu/fet/download.html">Linux, MacOSX and +Windows</a>.</p> + +<p>This is <a href="http://lalescu.ro/liviu/fet/features.html">the +feature list</a>, liftet from the project web site:</p> + +<p><ul> + + <li>FET is free software, licensed under the GNU GPL v2 or later. + You can freely use, copy, modify and redistribute it </li> + + <li>Localized to en_US (US English, default), ar (Arabic), ca + (Catalan), da (Danish), de (German), el (Greek), es (Spanish), fa + (Persian), fr (French), gl (Galician), he (Hebrew), hu + (Hungarian), id (Indonesian), it (Italian), lt (Lithuanian), mk + (Macedonian), ms (Malay), nl (Dutch), pl (Polish), pt_BR + (Brazilian Portuguese), ro (Romanian), ru (Russian), si (Sinhala), + sk (Slovak), sr (Serbian), tr (Turkish), uk (Ukrainian), uz + (Uzbek) and vi (Vietnamese) (incompletely for some languages) + </li> + + <li>Fully automatic generation algorithm, allowing also + semi-automatic or manual allocation</li> + + <li>Platform independent implementation, allowing running on + GNU/Linux, Windows, Mac and any system that Qt supports </li> + + <li>Flexible modular XML format for the input file, allowing editing + with an XML editor or by hand (besides FET interface)</li> + + <li>Import/export from CSV format</li> + + <li>The resulted timetables are exported into HTML, XML and CSV + formats </li> + + <li>Flexible students structure, organized into sets: years, groups + and subgroups. FET allows overlapping years and groups and + non-overlapping subgroups. You can even define individual students + (as separate sets)</li> + + <li>Each constraint has a weight percentage, from 0.0% to 100.0% + (but some special constraints are allowed to have only 100% weight + percentage)</li> + + <li>Limits for the algorithm (all these limits can be increased on + demand, as a custom version, because this would require a bit more + memory): + <ul> + <li>Maximum total number of hours (periods) per day: 60</li> + <li>Maximum number of working days per week: 35</li> + <li>Maximum total number of teachers: 6000</li> + <li>Maximum total number of sets of students: 30000</li> + <li>Maximum total number of subjects: 6000</li> + <li>Virtually unlimited number of activity tags</li> + <li>Maximum number of activities: 30000</li> + <li>Maximum number of rooms: 6000</li> + <li>Maximum number of buildings: 6000</li> + <li>Possibility of adding multiple teachers and + students sets for each activity. (it is possible + also to have no teachers or no students sets for an + activity)</li> + <li>Virtually unlimited number of time constraints</li> + <li>Virtually unlimited number of space constraints</li> + </ul></li> + + <li>A large and flexible palette of time constraints: + <ul> + <li>Break periods</li> + <li>For teacher(s): + <ul> + <li>Not available periods</li> + <li>Max/min days per week</li> + <li>Max gaps per day/week</li> + <li>Max hours daily/continuously</li> + <li>Min hours daily</li> + <li>Max hours daily/continuously with an activity tag</li> + + <li>Respect working in an hourly interval a max number of + days per week</li> + </ul></li> + <li>For students (sets): + <ul> + <li>Not available periods</li> + <li>Begins early (specify max allowed beginnings at second hour)</li> + <li>Max gaps per day/week</li> + <li>Max hours daily/continuously</li> + <li>Min hours daily</li> + <li>Max hours daily/continuously with an activity tag</li> + + <li>Respect working in an hourly interval a max number of + days per week</li> + </ul></li> + <li>For an activity or a set of activities/subactivities: + <ul> + <li>A single preferred starting time</li> + <li>A set of preferred starting times</li> + <li>A set of preferred time slots</li> + <li>Min/max days between them</li> + <li>End(s) students day</li> + <li>Same starting time/day/hour</li> + <li>Occupy max time slots from selection (a complex and + flexible constraint, useful in many situations)</li> + <li>Consecutive, ordered, grouped (for 2 or 3 (sub)activities)</li> + <li>Not overlapping</li> + <li>Max simultaneous in selected time slots</li> + <li>Min gaps between a set of (sub)activities</li> + </ul></li> + </ul></li> + + <li>A large and flexible palette of space constraints: + <ul> + <li>Room not available periods</li> + <li>For teacher(s): + <ul> + <li>Home room(s)</li> + <li>Max building changes per day/week</li> + <li>Min gaps between building changes</li> + </ul> + </li> + + <li>For students (sets): + <ul> + <li>Home room(s)</li> + <li>Max building changes per day/week</li> + <li>Min gaps between building changes</li> + </ul> + </li> + <li>Preferred room(s): + <ul> + <li>For a subject</li> + <li>For an activity tag</li> + <li>For a subject and an activity tag</li> + <li>Individually for a (sub)activity</li> + </ul> + </li> + + <li>For a set of activities: + <ul> + <li>Occupy a maximum number of different rooms</li> + </ul> + </li> + </ul> + </li> +</ul></p> + +<p>I have not used it myself, as I am not involved in time table +planning at a school, but it seem to work fine when I test it. If you +need to set up your schools time table, and is tired of doing it +manually, check it out. + +A quick summary on how to use it can be found in +<a href="http://marvelsoft.co.in/wp/2012/03/generate-timetable-for-state-cbse-icse-igcse-schools-free/">a +blog post from MarvelSoft</a>. If you find FET useful, please provide +a recipe for the Debian Edu project in the +<a href="http://wiki.debian.org/DebianEdu#Howtos">Debian Edu HowTo +section</a>.</p> + + + + +