1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Entries Tagged nice free software
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"nice free software.rss" type=
"application/rss+xml" />
14 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
21 <h3>Entries tagged "nice free software".
</h3>
25 <a href=
"http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html">OpenALPR, find car license plates in video streams - nice free software
</a>
31 <p>When I was a kid, we used to collect "car numbers", as we used to
32 call the car license plate numbers in those days. I would write the
33 numbers down in my little book and compare notes with the other kids
34 to see how many region codes we had seen and if we had seen some
35 exotic or special region codes and numbers. It was a fun game to pass
36 time, as we kids have plenty of it.
</p>
38 <p>A few days I came across
39 <a href=
"https://github.com/openalpr/openalpr">the OpenALPR
40 project
</a>, a free software project to automatically discover and
41 report license plates in images and video streams, and provide the
42 "car numbers" in a machine readable format. I've been looking for
43 such system for a while now, because I believe it is a bad idea that the
44 <a href=
"https://en.wikipedia.org/wiki/Automatic_number_plate_recognition">automatic
45 number plate recognition
</a> tool only is available in the hands of
46 the powerful, and want it to be available also for the powerless to
47 even the score when it comes to surveillance and sousveillance. I
48 discovered the developer
49 <a href=
"https://bugs.debian.org/747509">wanted to get the tool into
50 Debian
</a>, and as I too wanted it to be in Debian, I volunteered to
51 help him get it into shape to get the package uploaded into the Debian
54 <p>Today we finally managed to get the package into shape and uploaded
55 it into Debian, where it currently
56 <a href=
"https://ftp-master.debian.org//new/openalpr_2.2.1-1.html">waits
57 in the NEW queue
</a> for review by the Debian ftpmasters.
</p>
59 <p>I guess you are wondering why on earth such tool would be useful
60 for the common folks, ie those not running a large government
61 surveillance system? Well, I plan to put it in a computer on my bike
62 and in my car, tracking the cars nearby and allowing me to be notified
63 when number plates on my watch list are discovered. Another use case
64 was suggested by a friend of mine, who wanted to set it up at his home
65 to open the car port automatically when it discovered the plate on his
66 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
67 capable of placing his license plate number of a piece of cardboard to
68 open his car port, men replied that it was always unlocked anyway. I
69 guess for such use case it make sense. I am sure there are other use
70 cases too, for those with imagination and a vision.
</p>
72 <p>If you want to build your own version of the Debian package, check
73 out the upstream git source and symlink ./distros/debian to ./debian/
74 before running "debuild" to build the source. Or wait a bit until the
75 package show up in unstable.
</p>
81 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
86 <div class=
"padding"></div>
90 <a href=
"http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html">listadmin, the quick way to moderate mailman lists - nice free software
</a>
96 <p>If you ever had to moderate a mailman list, like the ones on
97 alioth.debian.org, you know the web interface is fairly slow to
98 operate. First you visit one web page, enter the moderation password
99 and get a new page shown with a list of all the messages to moderate
100 and various options for each email address. This take a while for
101 every list you moderate, and you need to do it regularly to do a good
102 job as a list moderator. But there is a quick alternative,
103 <a href=
"http://heim.ifi.uio.no/kjetilho/hacks/#listadmin">the
104 listadmin program
</a>. It allow you to check lists for new messages
105 to moderate in a fraction of a second. Here is a test run on two
106 lists I recently took over:
</p>
109 % time listadmin xiph
110 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
111 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
117 </pre></blockquote></p>
119 <p>In
1.7 seconds I had checked two mailing lists and confirmed that
120 there are no message in the moderation queue. Every morning I
121 currently moderate
68 mailman lists, and it normally take around two
122 minutes. When I took over the two pkg-xiph lists above a few days
123 ago, there were
400 emails waiting in the moderator queue. It took me
124 less than
15 minutes to process them all using the listadmin
128 <a href=
"https://tracker.debian.org/pkg/listadmin">the listadmin
129 package
</a> from Debian and create a file
<tt>~/.listadmin.ini
</tt>
130 with content like this, the moderation task is a breeze:
</p>
133 username username@example.org
136 discard_if_reason "Posting restricted to members only. Remove us from your mail list."
139 adminurl https://{domain}/mailman/admindb/{list}
140 mailman-list@lists.example.com
143 other-list@otherserver.example.org
144 </pre></blockquote></p>
146 <p>There are other options to set as well. Check the manual page to
147 learn the details.
</p>
149 <p>If you are forced to moderate lists on a mailman installation where
150 the SSL certificate is self signed or not properly signed by a
151 generally accepted signing authority, you can set a environment
152 variable when calling listadmin to disable SSL verification:
</p>
155 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 listadmin
156 </pre></blockquote></p>
158 <p>If you want to moderate a subset of the lists you take care of, you
159 can provide an argument to the listadmin script like I do in the
160 initial screen dump (the xiph argument). Using an argument, only
161 lists matching the argument string will be processed. This make it
162 quick to accept messages if you notice the moderation request in your
165 <p>Without the listadmin program, I would never be the moderator of
68
166 mailing lists, as I simply do not have time to spend on that if the
167 process was any slower. The listadmin program have saved me hours of
168 time I could spend elsewhere over the years. It truly is nice free
171 <p>As usual, if you use Bitcoin and want to show your support of my
172 activities, please send Bitcoin donations to my address
173 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
175 <p>Update
2014-
10-
27: Added missing 'username' statement in
176 configuration example. Also, I've been told that the
177 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 setting do not work for everyone. Not
184 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
189 <div class=
"padding"></div>
193 <a href=
"http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html">S3QL, a locally mounted cloud file system - nice free software
</a>
199 <p>For a while now, I have been looking for a sensible offsite backup
200 solution for use at home. My requirements are simple, it must be
201 cheap and locally encrypted (in other words, I keep the encryption
202 keys, the storage provider do not have access to my private files).
203 One idea me and my friends had many years ago, before the cloud
204 storage providers showed up, was to use Google mail as storage,
205 writing a Linux block device storing blocks as emails in the mail
206 service provided by Google, and thus get heaps of free space. On top
207 of this one can add encryption, RAID and volume management to have
208 lots of (fairly slow, I admit that) cheap and encrypted storage. But
209 I never found time to implement such system. But the last few weeks I
210 have looked at a system called
211 <a href=
"https://bitbucket.org/nikratio/s3ql/">S3QL
</a>, a locally
212 mounted network backed file system with the features I need.
</p>
214 <p>S3QL is a fuse file system with a local cache and cloud storage,
215 handling several different storage providers, any with Amazon S3,
216 Google Drive or OpenStack API. There are heaps of such storage
217 providers. S3QL can also use a local directory as storage, which
218 combined with sshfs allow for file storage on any ssh server. S3QL
219 include support for encryption, compression, de-duplication, snapshots
220 and immutable file systems, allowing me to mount the remote storage as
221 a local mount point, look at and use the files as if they were local,
222 while the content is stored in the cloud as well. This allow me to
223 have a backup that should survive fire. The file system can not be
224 shared between several machines at the same time, as only one can
225 mount it at the time, but any machine with the encryption key and
226 access to the storage service can mount it if it is unmounted.
</p>
228 <p>It is simple to use. I'm using it on Debian Wheezy, where the
229 package is included already. So to get started, run
<tt>apt-get
230 install s3ql
</tt>. Next, pick a storage provider. I ended up picking
231 Greenqloud, after reading their nice recipe on
232 <a href=
"https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy">how
233 to use S3QL with their Amazon S3 service
</a>, because I trust the laws
234 in Iceland more than those in USA when it come to keeping my personal
235 data safe and private, and thus would rather spend money on a company
236 in Iceland. Another nice recipe is available from the article
237 <a href=
"http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage">S3QL
238 Filesystem for HPC Storage
</a> by Jeff Layton in the HPC section of
239 Admin magazine. When the provider is picked, figure out how to get
240 the API key needed to connect to the storage API. With Greencloud,
241 the key did not show up until I had added payment details to my
244 <p>Armed with the API access details, it is time to create the file
245 system. First, create a new bucket in the cloud. This bucket is the
246 file system storage area. I picked a bucket name reflecting the
247 machine that was going to store data there, but any name will do.
248 I'll refer to it as
<tt>bucket-name
</tt> below. In addition, one need
249 the API login and password, and a locally created password. Store it
250 all in ~root/.s3ql/authinfo2 like this:
254 storage-url: s3c://s.greenqloud.com:
443/bucket-name
255 backend-login: API-login
256 backend-password: API-password
257 fs-passphrase: local-password
258 </pre></blockquote></p>
260 <p>I create my local passphrase using
<tt>pwget
50</tt> or similar,
261 but any sensible way to create a fairly random password should do it.
262 Armed with these details, it is now time to run mkfs, entering the API
263 details and password to create it:
</p>
266 # mkdir -m
700 /var/lib/s3ql-cache
267 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
268 --ssl s3c://s.greenqloud.com:
443/bucket-name
270 Enter backend password:
271 Before using S3QL, make sure to read the user's guide, especially
272 the 'Important Rules to Avoid Loosing Data' section.
273 Enter encryption password:
274 Confirm encryption password:
275 Generating random encryption key...
276 Creating metadata tables...
286 Compressing and uploading metadata...
287 Wrote
0.00 MB of compressed metadata.
288 #
</pre></blockquote></p>
290 <p>The next step is mounting the file system to make the storage available.
293 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
294 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
295 Using
4 upload threads.
296 Downloading and decompressing metadata...
306 Mounting filesystem...
308 Filesystem Size Used Avail Use% Mounted on
309 s3c://s.greenqloud.com:
443/bucket-name
1.0T
0 1.0T
0% /s3ql
311 </pre></blockquote></p>
313 <p>The file system is now ready for use. I use rsync to store my
314 backups in it, and as the metadata used by rsync is downloaded at
315 mount time, no network traffic (and storage cost) is triggered by
316 running rsync. To unmount, one should not use the normal umount
317 command, as this will not flush the cache to the cloud storage, but
318 instead running the umount.s3ql command like this:
323 </pre></blockquote></p>
325 <p>There is a fsck command available to check the file system and
326 correct any problems detected. This can be used if the local server
327 crashes while the file system is mounted, to reset the "already
328 mounted" flag. This is what it look like when processing a working
332 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:
443/bucket-name
333 Using cached metadata.
334 File system seems clean, checking anyway.
335 Checking DB integrity...
336 Creating temporary extra indices...
337 Checking lost+found...
338 Checking cached objects...
339 Checking names (refcounts)...
340 Checking contents (names)...
341 Checking contents (inodes)...
342 Checking contents (parent inodes)...
343 Checking objects (reference counts)...
344 Checking objects (backend)...
345 ..processed
5000 objects so far..
346 ..processed
10000 objects so far..
347 ..processed
15000 objects so far..
348 Checking objects (sizes)...
349 Checking blocks (referenced objects)...
350 Checking blocks (refcounts)...
351 Checking inode-block mapping (blocks)...
352 Checking inode-block mapping (inodes)...
353 Checking inodes (refcounts)...
354 Checking inodes (sizes)...
355 Checking extended attributes (names)...
356 Checking extended attributes (inodes)...
357 Checking symlinks (inodes)...
358 Checking directory reachability...
359 Checking unix conventions...
360 Checking referential integrity...
361 Dropping temporary indices...
362 Backing up old metadata...
372 Compressing and uploading metadata...
373 Wrote
0.89 MB of compressed metadata.
375 </pre></blockquote></p>
377 <p>Thanks to the cache, working on files that fit in the cache is very
378 quick, about the same speed as local file access. Uploading large
379 amount of data is to me limited by the bandwidth out of and into my
380 house. Uploading
685 MiB with a
100 MiB cache gave me
305 kiB/s,
381 which is very close to my upload speed, and downloading the same
382 Debian installation ISO gave me
610 kiB/s, close to my download speed.
383 Both were measured using
<tt>dd
</tt>. So for me, the bottleneck is my
384 network, not the file system code. I do not know what a good cache
385 size would be, but suspect that the cache should e larger than your
388 <p>I mentioned that only one machine can mount the file system at the
389 time. If another machine try, it is told that the file system is
393 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
394 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
395 Using
8 upload threads.
396 Backend reports that fs is still mounted elsewhere, aborting.
398 </pre></blockquote></p>
400 <p>The file content is uploaded when the cache is full, while the
401 metadata is uploaded once every
24 hour by default. To ensure the
402 file system content is flushed to the cloud, one can either umount the
403 file system, or ask S3QL to flush the cache and metadata using
407 # s3qlctrl upload-meta /s3ql
408 # s3qlctrl flushcache /s3ql
410 </pre></blockquote></p>
412 <p>If you are curious about how much space your data uses in the
413 cloud, and how much compression and deduplication cut down on the
414 storage usage, you can use s3qlstat on the mounted file system to get
419 Directory entries:
9141
422 Total data size:
22049.38 MB
423 After de-duplication:
21955.46 MB (
99.57% of total)
424 After compression:
21877.28 MB (
99.22% of total,
99.64% of de-duplicated)
425 Database size:
2.39 MB (uncompressed)
426 (some values do not take into account not-yet-uploaded dirty blocks in cache)
428 </pre></blockquote></p>
430 <p>I mentioned earlier that there are several possible suppliers of
431 storage. I did not try to locate them all, but am aware of at least
432 <a href=
"https://www.greenqloud.com/">Greenqloud
</a>,
433 <a href=
"http://drive.google.com/">Google Drive
</a>,
434 <a href=
"http://aws.amazon.com/s3/">Amazon S3 web serivces
</a>,
435 <a href=
"http://www.rackspace.com/">Rackspace
</a> and
436 <a href=
"http://crowncloud.net/">Crowncloud
</A>. The latter even
437 accept payment in Bitcoin. Pick one that suit your need. Some of
438 them provide several GiB of free storage, but the prize models are
439 quite different and you will have to figure out what suits you
442 <p>While researching this blog post, I had a look at research papers
443 and posters discussing the S3QL file system. There are several, which
444 told me that the file system is getting a critical check by the
445 science community and increased my confidence in using it. One nice
447 "
<a href=
"http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf">An
448 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
449 Store and Transformative Parallel I/O Approach
</a>" by Hsing-Bung
450 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
451 and Pamela Smith. Please have a look.</p>
453 <p>Given my problems with different file systems earlier, I decided to
454 check out the mounted S3QL file system to see if it would be usable as
455 a home directory (in other word, that it provided POSIX semantics when
456 it come to locking and umask handling etc). Running
457 <a href="http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
">my
458 test code to check file system semantics</a>, I was happy to discover that
459 no error was found. So the file system can be used for home
460 directories, if one chooses to do so.</p>
462 <p>If you do not want a locally file system, and want something that
463 work without the Linux fuse file system, I would like to mention the
464 <a href="http://www.tarsnap.com/
">Tarsnap service</a>, which also
465 provide locally encrypted backup using a command line client. It have
466 a nicer access control system, where one can split out read and write
467 access, allowing some systems to write to the backup and others to
468 only read from it.</p>
470 <p>As usual, if you use Bitcoin and want to show your support of my
471 activities, please send Bitcoin donations to my address
472 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
478 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
483 <div class="padding
"></div>
487 <a href="http://people.skolelinux.org/pere/blog/ReactOS_Windows_clone___nice_free_software.html
">ReactOS Windows clone - nice free software</a>
493 <p>Microsoft have announced that Windows XP reaches its end of life
494 2014-04-08, in 7 days. But there are heaps of machines still running
495 Windows XP, and depending on Windows XP to run their applications, and
496 upgrading will be expensive, both when it comes to money and when it
497 comes to the amount of effort needed to migrate from Windows XP to a
498 new operating system. Some obvious options (buy new a Windows
499 machine, buy a MacOSX machine, install Linux on the existing machine)
500 are already well known and covered elsewhere. Most of them involve
501 leaving the user applications installed on Windows XP behind and
502 trying out replacements or updated versions. In this blog post I want
503 to mention one strange bird that allow people to keep the hardware and
504 the existing Windows XP applications and run them on a free software
505 operating system that is Windows XP compatible.</p>
507 <p><a href="http://www.reactos.org/
">ReactOS</a> is a free software
508 operating system (GNU GPL licensed) working on providing a operating
509 system that is binary compatible with Windows, able to run windows
510 programs directly and to use Windows drivers for hardware directly.
511 The project goal is for Windows user to keep their existing machines,
512 drivers and software, and gain the advantages from user a operating
513 system without usage limitations caused by non-free licensing. It is
514 a Windows clone running directly on the hardware, so quite different
515 from the approach taken by <a href="http://www.winehq.org/
">the Wine
516 project</a>, which make it possible to run Windows binaries on
519 <p>The ReactOS project share code with the Wine project, so most
520 shared libraries available on Windows are already implemented already.
521 There is also a software manager like the one we are used to on Linux,
522 allowing the user to install free software applications with a simple
523 click directly from the Internet. Check out the
524 <a href="http://www.reactos.org/screenshots
">screen shots on the
525 project web site</a> for an idea what it look like (it looks just like
526 Windows before metro).</p>
528 <p>I do not use ReactOS myself, preferring Linux and Unix like
529 operating systems. I've tested it, and it work fine in a virt-manager
530 virtual machine. The browser, minesweeper, notepad etc is working
531 fine as far as I can tell. Unfortunately, my main test application
532 is the software included on a CD with the Lego Mindstorms NXT, which
533 seem to install just fine from CD but fail to leave any binaries on
534 the disk after the installation. So no luck with that test software.
535 No idea why, but hope someone else figure out and fix the problem.
536 I've tried the ReactOS Live ISO on a physical machine, and it seemed
537 to work just fine. If you like Windows and want to keep running your
538 old Windows binaries, check it out by
539 <a href="http://www.reactos.org/download
">downloading</a> the
540 installation CD, the live CD or the preinstalled virtual machine
547 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software</a>, <a href="http://people.skolelinux.org/pere/blog/tags/reactos
">reactos</a>.
552 <div class="padding
"></div>
556 <a href="http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html
">Video DVD reader library / python-dvdvideo - nice free software</a>
562 <p>Keeping your DVD collection safe from scratches and curious
563 children fingers while still having it available when you want to see a
564 movie is not straight forward. My preferred method at the moment is
565 to store a full copy of the ISO on a hard drive, and use VLC, Popcorn
566 Hour or other useful players to view the resulting file. This way the
567 subtitles and bonus material are still available and using the ISO is
568 just like inserting the original DVD record in the DVD player.</p>
570 <p>Earlier I used dd for taking security copies, but it do not handle
571 DVDs giving read errors (which are quite a few of them). I've also
573 <a href="http://people.skolelinux.org/pere/blog/Ripping_problematic_DVDs_using_dvdbackup_and_genisoimage.html
">dvdbackup
574 and genisoimage</a>, but these days I use the marvellous python library
576 <a href="http://bblank.thinkmo.de/blog/new-software-python-dvdvideo
">python-dvdvideo</a>
577 written by Bastian Blank. It is
578 <a href="http://packages.qa.debian.org/p/python-dvdvideo.html
">in Debian
579 already</a> and the binary package name is python3-dvdvideo. Instead
580 of trying to read every block from the DVD, it parses the file
581 structure and figure out which block on the DVD is actually in used,
582 and only read those blocks from the DVD. This work surprisingly well,
583 and I have been able to almost backup my entire DVD collection using
586 <p>So far, python-dvdvideo have failed on between 10 and
587 20 DVDs, which is a small fraction of my collection. The most common
589 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
720831">DVDs
590 using UTF-16 instead of UTF-8 characters</a>, which according to
591 Bastian is against the DVD specification (and seem to cause some
592 players to fail too). A rarer problem is what seem to be inconsistent
593 DVD structures, as the python library
594 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
723079">claim
595 there is a overlap between objects</a>. An equally rare problem claim
596 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
741878">some
597 value is out of range</a>. No idea what is going on there. I wish I
598 knew enough about the DVD format to fix these, to ensure my movie
599 collection will stay with me in the future.</p>
601 <p>So, if you need to keep your DVDs safe, back them up using
602 python-dvdvideo. :)</p>
608 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software</a>, <a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video
">video</a>.
613 <div class="padding
"></div>
617 <a href="http://people.skolelinux.org/pere/blog/Free_Timetabling_Software___nice_free_software.html
">Free Timetabling Software - nice free software</a>
623 <p>Included in <a href="http://www.skolelinux.org/
">Debian Edu /
624 Skolelinux</a> is a large collection of end user and school specific
625 software. It is one of the packages not installed by default but
626 provided in the Debian archive for schools to install if they want to,
627 is a system to automatically plan the school time table using
628 information about available teachers, classes and rooms, combined with
629 the list of required courses and how many hours each topic should
630 receive. The software is
632 <a href="http://lalescu.ro/liviu/fet/
">named FET</a>, and it provide a
633 graphical user interface to input the required information, save the
634 result in a fairly simple XML format, and generate time tables for
635 both teachers and students. It is available both for
636 <a href="http://lalescu.ro/liviu/fet/download.html
">Linux, MacOSX and
639 <p>This is <a href="http://lalescu.ro/liviu/fet/features.html
">the
640 feature list</a>, liftet from the project web site:</p>
644 <li>FET is free software, licensed under the GNU GPL v2 or later.
645 You can freely use, copy, modify and redistribute it </li>
647 <li>Localized to en_US (US English, default), ar (Arabic), ca
648 (Catalan), da (Danish), de (German), el (Greek), es (Spanish), fa
649 (Persian), fr (French), gl (Galician), he (Hebrew), hu
650 (Hungarian), id (Indonesian), it (Italian), lt (Lithuanian), mk
651 (Macedonian), ms (Malay), nl (Dutch), pl (Polish), pt_BR
652 (Brazilian Portuguese), ro (Romanian), ru (Russian), si (Sinhala),
653 sk (Slovak), sr (Serbian), tr (Turkish), uk (Ukrainian), uz
654 (Uzbek) and vi (Vietnamese) (incompletely for some languages)
657 <li>Fully automatic generation algorithm, allowing also
658 semi-automatic or manual allocation</li>
660 <li>Platform independent implementation, allowing running on
661 GNU/Linux, Windows, Mac and any system that Qt supports </li>
663 <li>Flexible modular XML format for the input file, allowing editing
664 with an XML editor or by hand (besides FET interface)</li>
666 <li>Import/export from CSV format</li>
668 <li>The resulted timetables are exported into HTML, XML and CSV
671 <li>Flexible students structure, organized into sets: years, groups
672 and subgroups. FET allows overlapping years and groups and
673 non-overlapping subgroups. You can even define individual students
674 (as separate sets)</li>
676 <li>Each constraint has a weight percentage, from 0.0% to 100.0%
677 (but some special constraints are allowed to have only 100% weight
680 <li>Limits for the algorithm (all these limits can be increased on
681 demand, as a custom version, because this would require a bit more
684 <li>Maximum total number of hours (periods) per day: 60</li>
685 <li>Maximum number of working days per week: 35</li>
686 <li>Maximum total number of teachers: 6000</li>
687 <li>Maximum total number of sets of students: 30000</li>
688 <li>Maximum total number of subjects: 6000</li>
689 <li>Virtually unlimited number of activity tags</li>
690 <li>Maximum number of activities: 30000</li>
691 <li>Maximum number of rooms: 6000</li>
692 <li>Maximum number of buildings: 6000</li>
693 <li>Possibility of adding multiple teachers and
694 students sets for each activity. (it is possible
695 also to have no teachers or no students sets for an
697 <li>Virtually unlimited number of time constraints</li>
698 <li>Virtually unlimited number of space constraints</li>
701 <li>A large and flexible palette of time constraints:
703 <li>Break periods</li>
706 <li>Not available periods</li>
707 <li>Max/min days per week</li>
708 <li>Max gaps per day/week</li>
709 <li>Max hours daily/continuously</li>
710 <li>Min hours daily</li>
711 <li>Max hours daily/continuously with an activity tag</li>
713 <li>Respect working in an hourly interval a max number of
716 <li>For students (sets):
718 <li>Not available periods</li>
719 <li>Begins early (specify max allowed beginnings at second hour)</li>
720 <li>Max gaps per day/week</li>
721 <li>Max hours daily/continuously</li>
722 <li>Min hours daily</li>
723 <li>Max hours daily/continuously with an activity tag</li>
725 <li>Respect working in an hourly interval a max number of
728 <li>For an activity or a set of activities/subactivities:
730 <li>A single preferred starting time</li>
731 <li>A set of preferred starting times</li>
732 <li>A set of preferred time slots</li>
733 <li>Min/max days between them</li>
734 <li>End(s) students day</li>
735 <li>Same starting time/day/hour</li>
736 <li>Occupy max time slots from selection (a complex and
737 flexible constraint, useful in many situations)</li>
738 <li>Consecutive, ordered, grouped (for 2 or 3 (sub)activities)</li>
739 <li>Not overlapping</li>
740 <li>Max simultaneous in selected time slots</li>
741 <li>Min gaps between a set of (sub)activities</li>
745 <li>A large and flexible palette of space constraints:
747 <li>Room not available periods</li>
750 <li>Home room(s)</li>
751 <li>Max building changes per day/week</li>
752 <li>Min gaps between building changes</li>
756 <li>For students (sets):
758 <li>Home room(s)</li>
759 <li>Max building changes per day/week</li>
760 <li>Min gaps between building changes</li>
763 <li>Preferred room(s):
765 <li>For a subject</li>
766 <li>For an activity tag</li>
767 <li>For a subject and an activity tag</li>
768 <li>Individually for a (sub)activity</li>
772 <li>For a set of activities:
774 <li>Occupy a maximum number of different rooms</li>
781 <p>I have not used it myself, as I am not involved in time table
782 planning at a school, but it seem to work fine when I test it. If you
783 need to set up your schools time table, and is tired of doing it
784 manually, check it out.
786 A quick summary on how to use it can be found in
787 <a href="http://marvelsoft.co.in/wp/
2012/
03/generate-timetable-for-state-cbse-icse-igcse-schools-free/
">a
788 blog post from MarvelSoft</a>. If you find FET useful, please provide
789 a recipe for the Debian Edu project in the
790 <a href="http://wiki.debian.org/DebianEdu#Howtos
">Debian Edu HowTo
797 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software</a>.
802 <div class="padding
"></div>
804 <p style="text-align: right;
"><a href="nice free software.rss
"><img src="http://people.skolelinux.org/pere/blog/xml.gif
" alt="RSS Feed
" width="36" height="14" /></a></p>
815 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
01/
">January (2)</a></li>
822 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
01/
">January (7)</a></li>
824 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
02/
">February (6)</a></li>
826 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
03/
">March (1)</a></li>
828 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
04/
">April (4)</a></li>
830 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
05/
">May (3)</a></li>
832 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
06/
">June (4)</a></li>
834 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
07/
">July (6)</a></li>
836 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
08/
">August (2)</a></li>
838 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
09/
">September (2)</a></li>
840 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
10/
">October (9)</a></li>
842 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
11/
">November (6)</a></li>
844 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
12/
">December (3)</a></li>
851 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
01/
">January (2)</a></li>
853 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
02/
">February (3)</a></li>
855 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
03/
">March (8)</a></li>
857 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
04/
">April (7)</a></li>
859 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
05/
">May (1)</a></li>
861 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
06/
">June (2)</a></li>
863 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
07/
">July (2)</a></li>
865 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
08/
">August (2)</a></li>
867 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
09/
">September (5)</a></li>
869 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
10/
">October (6)</a></li>
871 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
11/
">November (3)</a></li>
873 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
12/
">December (5)</a></li>
880 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
01/
">January (11)</a></li>
882 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
02/
">February (9)</a></li>
884 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
03/
">March (9)</a></li>
886 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
04/
">April (6)</a></li>
888 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
05/
">May (9)</a></li>
890 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
06/
">June (10)</a></li>
892 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
07/
">July (7)</a></li>
894 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
08/
">August (3)</a></li>
896 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
09/
">September (5)</a></li>
898 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
10/
">October (7)</a></li>
900 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
11/
">November (9)</a></li>
902 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
12/
">December (3)</a></li>
909 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
01/
">January (7)</a></li>
911 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
02/
">February (10)</a></li>
913 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
03/
">March (17)</a></li>
915 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
04/
">April (12)</a></li>
917 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
05/
">May (12)</a></li>
919 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
06/
">June (20)</a></li>
921 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
07/
">July (17)</a></li>
923 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
08/
">August (6)</a></li>
925 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
09/
">September (9)</a></li>
927 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
10/
">October (17)</a></li>
929 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
11/
">November (10)</a></li>
931 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
12/
">December (7)</a></li>
938 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
01/
">January (16)</a></li>
940 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
02/
">February (6)</a></li>
942 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
03/
">March (6)</a></li>
944 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
04/
">April (7)</a></li>
946 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
05/
">May (3)</a></li>
948 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
06/
">June (2)</a></li>
950 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
07/
">July (7)</a></li>
952 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
08/
">August (6)</a></li>
954 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
09/
">September (4)</a></li>
956 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
10/
">October (2)</a></li>
958 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
11/
">November (3)</a></li>
960 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
12/
">December (1)</a></li>
967 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
01/
">January (2)</a></li>
969 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
02/
">February (1)</a></li>
971 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
03/
">March (3)</a></li>
973 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
04/
">April (3)</a></li>
975 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
05/
">May (9)</a></li>
977 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
06/
">June (14)</a></li>
979 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
07/
">July (12)</a></li>
981 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
08/
">August (13)</a></li>
983 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
09/
">September (7)</a></li>
985 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
10/
">October (9)</a></li>
987 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
11/
">November (13)</a></li>
989 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
12/
">December (12)</a></li>
996 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
01/
">January (8)</a></li>
998 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
02/
">February (8)</a></li>
1000 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
03/
">March (12)</a></li>
1002 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
04/
">April (10)</a></li>
1004 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
05/
">May (9)</a></li>
1006 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
06/
">June (3)</a></li>
1008 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
07/
">July (4)</a></li>
1010 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
08/
">August (3)</a></li>
1012 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
09/
">September (1)</a></li>
1014 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
10/
">October (2)</a></li>
1016 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
11/
">November (3)</a></li>
1018 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
12/
">December (3)</a></li>
1025 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
11/
">November (5)</a></li>
1027 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
12/
">December (7)</a></li>
1038 <li><a href="http://people.skolelinux.org/pere/blog/tags/
3d-printer
">3d-printer (13)</a></li>
1040 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga
">amiga (1)</a></li>
1042 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros
">aros (1)</a></li>
1044 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid
">bankid (4)</a></li>
1046 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin
">bitcoin (9)</a></li>
1048 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem (15)</a></li>
1050 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa
">bsa (2)</a></li>
1052 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath
">chrpath (2)</a></li>
1054 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian (117)</a></li>
1056 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu (154)</a></li>
1058 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan
">digistan (10)</a></li>
1060 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld
">dld (15)</a></li>
1062 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook
">docbook (20)</a></li>
1064 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser
">drivstoffpriser (4)</a></li>
1066 <li><a href="http://people.skolelinux.org/pere/blog/tags/english
">english (299)</a></li>
1068 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami (23)</a></li>
1070 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling
">fildeling (12)</a></li>
1072 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture
">freeculture (25)</a></li>
1074 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox
">freedombox (9)</a></li>
1076 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen
">frikanalen (16)</a></li>
1078 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264
">h264 (20)</a></li>
1080 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju
">intervju (42)</a></li>
1082 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram
">isenkram (11)</a></li>
1084 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart (19)</a></li>
1086 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap
">ldap (9)</a></li>
1088 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker
">lenker (8)</a></li>
1090 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd
">lsdvd (2)</a></li>
1092 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp
">ltsp (1)</a></li>
1094 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network
">mesh network (8)</a></li>
1096 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia (37)</a></li>
1098 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software (6)</a></li>
1100 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk
">norsk (273)</a></li>
1102 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug (177)</a></li>
1104 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn
">offentlig innsyn (22)</a></li>
1106 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311
">open311 (2)</a></li>
1108 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett (58)</a></li>
1110 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern (92)</a></li>
1112 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid
">raid (1)</a></li>
1114 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos
">reactos (1)</a></li>
1116 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap
">reprap (11)</a></li>
1118 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid
">rfid (3)</a></li>
1120 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot (9)</a></li>
1122 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss
">rss (1)</a></li>
1124 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter
">ruter (4)</a></li>
1126 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki
">scraperwiki (2)</a></li>
1128 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet (45)</a></li>
1130 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary
">sitesummary (4)</a></li>
1132 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis
">skepsis (4)</a></li>
1134 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard
">standard (48)</a></li>
1136 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll
">stavekontroll (3)</a></li>
1138 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget
">stortinget (10)</a></li>
1140 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance (36)</a></li>
1142 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin
">sysadmin (2)</a></li>
1144 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix
">usenix (2)</a></li>
1146 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg
">valg (8)</a></li>
1148 <li><a href="http://people.skolelinux.org/pere/blog/tags/video
">video (55)</a></li>
1150 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap
">vitenskap (4)</a></li>
1152 <li><a href="http://people.skolelinux.org/pere/blog/tags/web
">web (38)</a></li>
1158 <p style="text-align: right
">
1159 Created by <a href="http://steve.org.uk/Software/chronicle
">Chronicle v4.6</a>