Geoffray’s personal pages.

Everything about my projects and activities.

Kernel LogoCompiling your own Linux kernel is the first step in optimizing your system performance. Creating it with exactly what you need, will decrease your boot time and memory usage and this will also be a good way to support recent devices that your distribution kernel do not support yet. Nevertheless, you will need a deep knowledge of the computer capabilities and device you have inside it. As an example I will take the Intel DH67 motherboard family with a base Debian Squeeze system installed. That family of card use the new Sandy Bridge chipset where Ethernet chip is supported since 2.6.38 version of the kernel and graphic chip the 3.0.0 version. To be able to install the Debian Squeeze I was forced to put a temporary network card on the only PCI slot of the board (a RTL8139 family card). Please note that some version of that board family have an unsupported PCI-Express to PCI bridge (like on DH67GD-B3, while it’s working on DH67BL-B3), so you may need a PCI-Express card if you are in that case. An other possibility to install the system and what you need to build your own kernel is to put the hard drive in an other computer with older and well supported devices. Note that if you proceed with this tutorial without any modification you have to be root nearly all the time so use the “su” or sudo “/bin/bash” command now to login as root. All this is fully functionnal with Debian based systems (including Ubuntu).

The only needed package to be installed on a Debian system to build a new kernel is build-essential and libncurses5-dev:

apt-get install build-essential libncurses5-dev

build-essential is a meta package that will install make, gcc, g++ (unneeded for the kernel), libc6-dev and make. libncurses5-dev will allow you to use ncurses interface to configure your build options (optional but highly recommended). Note that autoconf, automake and libtool are not needed for the kernel oppositely to most of the classic source packages on Linux systems. Note that if you are not using Debian you will need the GNU Make tool, the GNU C compiler and the GNU libc6 headers and the NCurses library headers. This could work as well with non-GNU tools but this is at your own risk and may require different procedure that the one given here. Nevertheless, BSD tools are known to work correctly. Now you have to download a Linux kernel. The better is to download the latest, unless you are stability/security paranoid. If you are in that case, you can choose a kernel with four numbers. I explain: new versions are noted x.y.z but security revision have an extra version number x.y.z.r. Note that there’s no big changes in 3.0.0 series of the kernel. The major version change was only chosen to celebrate the 20th anniversary of Linux so for packagers it’s still the 2.6 series. You will find source code archives for the kernel here: http://www.kernel.org or on mirrors (mirror list available here: http://www.kernel.org/mirrors/). For the motherboard of my example I recommend 3.0.4 version of the kernel so the commands will be:

# be sure to be root before proceeding
cd /usr/src
wget "ftp://ftp.free.fr/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2"
tar -xvf linux-3.0.4.tar.bz2
ln -sv linux-3.0.4 linux

Now let’s explain that. We go in /usr/src where some extra kernel module suspect to find kernel source code (eg. NVidia drivers). Then, we download kernel source code  archive and extract it. The last line is a compatibility symlink to the version of the kernel we will use (this suppose this will be our default kernel version) to allow compilation of extra kernel modules (some packages may also need access to kernel source code in order to compile). If you do not project to compile anything else you can safely place your kernel source in a home directory and not be root (skip first and second line).

Now this will be the hard things… You’ll have to configure your kernel accordingly with what you have. There’s way to get informations on your system: commands like lspci and lsmod will give you respectively the name of the devices on the motherboard and lsmod the list of the modules that the current kernel is using (but you may need more). The more useful is lsmod but this will not help you with current kernel’s unsupported hardware and with hardware that are not managed by modules. So for that second reason I recommend to start that way:

cd /usr/src/linux
make mrproper
cp /boot/config-<your-current-version-of-the-kernel> ./.config
lsmod > hard-infos.txt
echo "--------------------------------------------------------------------" >> hard-infos.txt
lspci >> hard-infos.txt
#you should print the hard-infos.txt file now or display it on an other screen using ssh or a new console (alt+f1 to alt+f6 to change console)
make menuconfig

The “make mrproper” line will deeply clean the source tree and any previous configuration. If you want to keep an old configuration to recompile the kernel, just replace mrproper by clean. The cp line allow us to get the actually running configuration of the kernel. This is a good idea as this allow to get some distribution specific configuration options. All the lines finishing with hard-infos.txt will create that file containing all the useful information you may need about your hardware. Last but not least the make menuconfig line will show you the kernel configuration menu after a short compile time.

Now there’s no secret, take your time and go everywhere. You will need about two hours of brain torture doing that correctly and deeply. If you don’t understand a config option try the help button or googlise it, and if you still do not understand, leave it as default. Here is some advises:

  • In “Processor type and feature” take the nearest processor you have. Depending on running 64 bits or 32 bits system (or non intel architectures) the list will change accordingly to what is possible. In doubt choose the option beginning by “Generic”.
  • For more performance it’s a good thing to change all your needed device modules in integrated version, but you will loose in flexibility so the kernel you will have will be specific to your motherboard and devices installed. If you change hardware you will need a generic kernel (eg. from your distribution). [  ] mean not compiled at all, [M] mean compiled as module and [*] mean compiled as integrated in the core kernel (habitually called vmlinuz-<version> in the boot directory. Sometimes you will have <  >, <M> or <*> instead of [  ], [M] or [*]: that means that the option will allow access to more options either in an other menu or in a direct submenu of that option. Be careful, do not try to put everything as integrated, the kernel will be to big and will not boot. Sometimes you will not be able to turn modules in integrated. This is because of dependencies: you can’t turn integrated modules that depends on an other module: you’ll have to turn parent module integrated before. That’s why I recommend two pass to do it.
  • To know what device you’ll need the generated file hard-info.txt will provide you a good help. The lsmod part will give you the name of the modules. In configuration the help button will give you informations about the option. You will find at the end of the description a line beginning that way: “Symbol:”. What is following is either the name of the module or a part of it (you may have a prefix on some submenus).
  • I think it’s a good idea to leave USB part as unchanged. That way every devices you may connect on the machine via USB will be supported correctly and the corresponding module loaded as needed.
  • Even if you do not have SCSI devices, do not try to turn off SCSI subsystem as all hard-drive (or CD-ROM drives) technologies are using an SCSI emulation since 2.6 series of the kernel. Elsewhere your system will not boot.
  • The network feature part is by far the more complicated. It is safe to turn modules in their integrated versions but I do not recommend make any other change unless you know exactly what you’re doing.
  • If you plan to compile a kernel for a server in a critical zone in term of security or stability, you should disable every experimental features. Nevertheless, some recent devices may be unusable.
  • If you have the chance to have an Intel DH67 series motherboard you can directly download my .config file (75 KB) and skip configuration… If you are very lazy you can even download a precompiled version (30.2 MB). Just untar the file from the root directory and skip the next paragraph. Be careful: those both files are for Intel DH67 series motherboard ONLY with no extra hardware except eventual USB devices. This will not work on any other motherboard.

When configuration is done, you can start compilation. Just run the command “make”. This will take some time so you can go take a well deserved break. If compilation fail  (in some rare case) that mean something is wrong with your configuration. After the compilation is done with no error, you need to install the freshly compiled kernel correctly that way (I suppose you are root and in your kernel source directory):

make modules_install
cp -fv arch/x86_64/boot/bzImage /boot/vmlinuz-3.0.4
cp -fv .config /boot/config-3.0.4
cp -fv System.map /boot/System.map-3.0.4
mkinitramfs -o /boot/initrd.img-3.0.4 3.0.4

The first line will install modules in a predefined and correct place of the file hierarchy. The second line install the kernel itself but may change if you have non Intel or AMD 64 bits architecture. In that case, you will have to replace x86_64 with the good directory corresponding on your architecture. The next lines copy files needed by the kernel or the bootloader to boot correctly. Note that if we have done a correct configuration without modules (except USB) the mkinitramfs will not be needed (unless you have USB keyboard). mkinitramfs create a RAM disk image mounted by the kernel allowing it to find modules needed to boot before it mount the root filesystem.

Now we just have to make our new kernel bootable. And this is a problem, the procedure and/or config files regarding your distribution, may be quite different. If you have a Debian based distribution this is very simple. Just run:

update-grub2

This command will generate a new set of Grub configuration files and install the bootloader. Default kernel will be the latest (more recent by date of change) of the /boot directory. It will also generate menu entries for any other operating systems installed. Even if your kernel is fully functional, I recommend to keep a generic kernel from your distribution in case of problem or changes in your hardware.

If despite the previous warning you choose to uninstall your distribution’s kernel, or if you need updated kernel header you should install Linux header in order to compile anything (most of the source packages will need that). Be sure that you uninstall any previous kernel headers before continuing with the following instructions. On Debian:

apt-get remove linux-headers-2.6

Be careful the end of the package name may change (2.6) depending on the version of Debian you have: this one is for Squeeze only. Pleasge change it accordingly. To install kernel headers correctly you have to enter the following lines in a console:

make headers_check
make INSTALL_HDR_PATH=dest headers_install
find dest/include \( -name .install -o -name ..install.cmd \) -delete
# you need to be root for the next line
cp -rv dest/include/* /usr/include

First line will make a census of the file to install and prepare a script for future installation. The second line install the needed files inside the “dest” subdirectory. The “find” line will erase some dust then the “cp” line will place all the files in a correct place.

Share

Rencontres Mondiales du Logiciel Libre 9 au 14 juillet 2011 Strasbourg

Like the last year I went to the RMLL and came back with some stories to share with the community. I will not repeat what I’ve already told last year about KDE as it’s still applicable. Nevertheless, the situation with desktops is now quite different from last year. The availability of Gnome 3 and the newUbuntu default desktop environment, Unity, is changing the sight peoples have on KDE. Those changes are redistributing the cards for the users. The undeniable fact is the very bad reception of Unity for traditional free software users. This is resulting in a lack of interest of Ubuntu for many of them, searching for new solutions. In an other hand, Gnome 3 reception is unequal. If some traditional Gnome users still appreciate the new look and feel, some others don’t really like it. More of that some are thinking that the new desktop is not finished, comparing sometimes it with the unfinished status of KDE 4.0 when it get out years ago. But there’s also some old KDE users seduced by the new (and somewhat unusual) look and feel of Gnome 3.

About KDE directly, users are generally more satisfied by the environment and the quality of the software compilation than they was last year, and we had less negative remarks. The most negative ones that are still coming, is about usability of new functionality. Let me develop that point…

I’ll take an example: “Activities”. This functionality is very powerful but a recurrent question was “What is it? Why should I use this?”. Once, I do the demonstration they quickly understand how great this new feature is. But this is showing a communication problem: peoples don’t know how to use some new feature and worst what it is about (if they it’s existing)! When I was asking how to solve that problem, the response was clear: each time a KDE desktop update is done we should display a “What’s new?” window with (and that was looking important) links to demonstration video. This could be easily expanded to important KDE softwares.

A more technical concern was the possibility to clean KDE configuration files of the outdated entries or keys, avoiding the need to erase the user’s .kde directory from time to time (somewhat like every two years or one years with frequently updated systems).

The last (but not least) point is about KDE communication in France. When speaking with some french KDE contributors (or other projects contributors that like KDE) the problem of misrepresentation of KDE in France is very important. We need more KDE events so more peoples to work on communication (and no need of technical skills so any KDE fan can do it). The new Akademy-fr build on the Akademy-es concept is a good beginning but we need to perpetuate the event and it’s not done yet!

Share

KDE LogoI’m writing this as a pause, as I’m very tired now :) . Maybe that you were asking yourself, why the different new pages were left unfinished suddenly… That’s simple: I’ve found a job three weeks ago, and I need to relocate in Toulouse for that. That’s a huge work and the forthcoming Solution Linux event in Paris next week makes this situation rather rock’n'roll! :D Don’t worry, I’ll manage this, as everything is planed in a millimetric way…

I’ll have the chance to be in charge of IT in Collège Nicolas Vauquelin (an high school equivalent) in Toulouse. That will be arround 300 computers (plus teachers’ personal computers) to manage.

The other information of this post is that I will represent KDE (not alone hugh…) at Solution Linux in Paris, CNIT Paris La Défence, between may 10th to 12th. That’s the second biggest european meeting about free and open source softwares after Linux Tag in Berlin. So maybe I’ll see you there!

Share

Internet IconAs a result of the KDE Release Party in Toulouse, I’ve decide to get involved in KDE source code. As I’m not familiar with it, I had to start with something simple. A good start was to integrate a  ”Get Hot New Stuff” functionnality  to Yakuake skin configuration page. Yakuake is a drop down terminal inspired by the Quake 3 console and “Get hot new stuff” (the link will lead you to developper documentation) is a simple way to graphically install supplementary stuff for KDE applications.

The patch is now ready and look like this:

diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 9b34cf3..f46592e 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -33,7 +33,7 @@ kde4_add_app_icon(yakuake_SRCS "icons/hi*-app-yakuake.png")

 kde4_add_executable(yakuake ${yakuake_SRCS})

-target_link_libraries(yakuake ${KDE4_KPARTS_LIBS})
+target_link_libraries(yakuake ${KDE4_KPARTS_LIBS} ${KDE4_KNEWSTUFF3_LIBS})

 if(Q_WS_X11)
   target_link_libraries(yakuake ${X11_X11_LIB})
@@ -42,3 +42,5 @@ endif(Q_WS_X11)
 install(TARGETS yakuake ${INSTALL_TARGETS_DEFAULT_ARGS})

 install(PROGRAMS yakuake.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
+
+install(FILES config/yakuake.knsrc DESTINATION ${CONFIG_INSTALL_DIR} )
diff --git a/app/config/appearancesettings.cpp b/app/config/appearancesettings.cpp
index 7ae00e9..a4b645c 100644
--- a/app/config/appearancesettings.cpp
+++ b/app/config/appearancesettings.cpp
@@ -37,6 +37,8 @@

 #include <unistd.h>

+#include <knewstuff3/downloaddialog.h>
+
 AppearanceSettings::AppearanceSettings(QWidget* parent) : QWidget(parent)
 {
     setupUi(this);
@@ -55,7 +57,10 @@ AppearanceSettings::AppearanceSettings(QWidget* parent) : QWidget(parent)
     connect(skinList->selectionModel(), SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)),
         this, SLOT(updateRemoveSkinButton()));
     connect(installButton, SIGNAL(clicked()), this, SLOT(installSkin()));
+    connect(getnewButton, SIGNAL(clicked()), this, SLOT(getnewSkin()));
     connect(removeButton, SIGNAL(clicked()), this, SLOT(removeSelectedSkin()));
+
+    getnewButton->setIcon(KIcon("get-hot-new-stuff"));

     m_selectedSkinId = Settings::skin();

@@ -223,6 +228,17 @@ void AppearanceSettings::installSkin()
         failInstall(i18nc("@info", "The installer was given a directory, not a file."));
 }

+void AppearanceSettings::getnewSkin()
+{
+  KNS3::DownloadDialog dialog("yakuake.knsrc", this);
+  dialog.exec();
+  KNS3::Entry::List entries = dialog.changedEntries();
+    if (entries.size() > 0) {
+      populateSkinList();
+    }
+
+}
+
 void AppearanceSettings::listSkinArchive(KIO::Job* /* job */, const KIO::UDSEntryList& list)
 {
     if (list.count() == 0) return;
diff --git a/app/config/appearancesettings.h b/app/config/appearancesettings.h
index 1363f70..02397ec 100644
--- a/app/config/appearancesettings.h
+++ b/app/config/appearancesettings.h
@@ -70,6 +70,7 @@ class AppearanceSettings : public QWidget, private Ui::AppearanceSettings
         void updateSkinSetting();

         void installSkin();
+       void getnewSkin();
         void listSkinArchive(KIO::Job* job, const KIO::UDSEntryList& list);
         void validateSkinArchive(KJob* job);
         void installSkinArchive(KJob* deleteJob = 0);
diff --git a/app/config/appearancesettings.ui b/app/config/appearancesettings.ui
index a951568..fa7754a 100644
--- a/app/config/appearancesettings.ui
+++ b/app/config/appearancesettings.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>307</width>
-    <height>355</height>
+    <width>467</width>
+    <height>435</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_3">
@@ -154,17 +154,7 @@
       <string comment="@title:group">Skin</string>
      </property>
      <layout class="QGridLayout">
-      <item row="0" column="0" colspan="2">
-       <widget class="QListView" name="skinList">
-        <property name="contextMenuPolicy">
-         <enum>Qt::NoContextMenu</enum>
-        </property>
-        <property name="horizontalScrollBarPolicy">
-         <enum>Qt::ScrollBarAlwaysOff</enum>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="0">
+      <item row="2" column="1">
        <widget class="QPushButton" name="installButton">
         <property name="enabled">
          <bool>true</bool>
@@ -174,7 +164,7 @@
         </property>
        </widget>
       </item>
-      <item row="1" column="1">
+      <item row="2" column="2">
        <widget class="QPushButton" name="removeButton">
         <property name="enabled">
          <bool>false</bool>
@@ -184,13 +174,30 @@
         </property>
        </widget>
       </item>
-      <item row="2" column="0" colspan="2">
+      <item row="3" column="1" colspan="2">
        <widget class="KLineEdit" name="kcfg_Skin">
         <property name="frame">
          <bool>false</bool>
         </property>
        </widget>
       </item>
+      <item row="2" column="0">
+       <widget class="QPushButton" name="getnewButton">
+        <property name="text">
+         <string>Get New Skin...</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" colspan="3">
+       <widget class="QListView" name="skinList">
+        <property name="contextMenuPolicy">
+         <enum>Qt::NoContextMenu</enum>
+        </property>
+        <property name="horizontalScrollBarPolicy">
+         <enum>Qt::ScrollBarAlwaysOff</enum>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
@@ -198,15 +205,15 @@
  </widget>
  <customwidgets>
   <customwidget>
-   <class>KColorButton</class>
-   <extends>QPushButton</extends>
-   <header>kcolorbutton.h</header>
-  </customwidget>
-  <customwidget>
    <class>KLineEdit</class>
    <extends>QLineEdit</extends>
    <header>klineedit.h</header>
   </customwidget>
+  <customwidget>
+   <class>KColorButton</class>
+   <extends>QPushButton</extends>
+   <header>kcolorbutton.h</header>
+  </customwidget>
  </customwidgets>
  <tabstops>
   <tabstop>kcfg_TerminalHighlightOnManualActivation</tabstop>
@@ -214,6 +221,7 @@
   <tabstop>kcfg_Translucency</tabstop>
   <tabstop>kcfg_BackgroundColorOpacity</tabstop>
   <tabstop>skinList</tabstop>
+  <tabstop>getnewButton</tabstop>
   <tabstop>installButton</tabstop>
   <tabstop>removeButton</tabstop>
   <tabstop>kcfg_Skin</tabstop>

A file named yakuake.knsrc must be added in the app/config directory of the yakuake source directory. Here it is:

[KNewStuff3]
ProvidersUrl=http://download.kde.org/ocs/providers.xml
Uncompress=always
TargetDir=yakuake/skins
Categories=Yakuake Skin

I hope this will be commited soon to Yakuake official source code. For now you can try to apply the patch and compile it if you want “Get Hot New Stuff” before the next Yakuake version get out. To do that try this:

git clone git://anongit.kde.org/yakuake
cd yakuake
wget http://jeff.levasseur.tuxfamily.org/files/yakuake-gethotnewstuff.patch
wget http://jeff.levasseur.tuxfamily.org/files/yakuake.knsrc
mv -fv yakuake.knsrc app/config/
patch -Np1 -i yakuake-gethotnewstuff.patch
mkdir build && cd build
cmake ./ ../ -DCMAKE_INSTALL_PREFIX=$KDEDIR
make
su -c "make install"

Make sure that the Yakuake package from your distribution is uninstalled before and the KDEDIR environement variable is set to your KDE 4 installation prefix (most of the time /usr or /opt/kde4). You will be asked for your root password after the last line have been validated. Enjoy!

Share

Rencontres Mondiales du Logiciel Libre 6 au 11 juillet 2010A month ago I was at the 2010 edition of the RMLL in Bordeaux, France. I was one of the guys representing KDE in the associative village. This post will tell you what happened there and what were my impressions. RMLL is the biggest event regarding free software movement outside Paris. For this event, KDE was represented for the first time. The event was from 6th to 9th of July in Bordeaux I university in Talence and on the 10th and 11th of Jully on the Garonne river’s dock in Bordeaux city center.

Who was here ?

Unfortunately, the aKademy 2010 taking place in Tampere, Finland was running at the same time, so it was hard to find any developers to be at the RMLL. In fact we was only KDE translators and fans. So the staff was :

Staff of RMLL’s KDE stand
Name Present from To Role in KDE
Geoffray Levasseur Monday 5th of Jully Sunday 11th of Jully Translation, beta-testing and bug repporting
Hélène Dervillez Monday 5th of Jully Thursday 8th of Jully User
Ludovic Grossard Wednesday 7th of Jully Friday 9th of Jully French documentation translation coordinator
Philippe Nenert Monday 5th of Jully Thursday 8th of Jully User

I wish to thank Jimmy Pierre and all the guys from the OpenSuse stand who helped me on the weekend when I needed to leave the stand from time to time.

What the non-KDE users think?

There are three kind of non-KDE users. Those that still don’t use a free system, mainly using Windows or Mac-OS, those using an other desktop environment and those who were using KDE before and change to an other desktop environment.

Those who never used Linux or BSD are always very impressed by the quality of the environment and surprised by the number of application we are purposing, especially Windows users. Most of them didn’t know anything about KDE but were interested in free software. Multi-desktop, Plasmoids and 3D graphic effects are considered far more impressive than what they can see with Windows, breaking some myths like “Linux is ugly”… So, many good points but the myth “Linux is hard to use” is harder. When demonstrating with some software, they agree with the global easeness and power to use those softwares but some questions like “will I be able to install the XXX software I like” and I always answer that this will not be a problem because the equivalent YYY exists (and is very often better) and they sometimes are scared of  changes. Globally they agree to try as they see the advantages, mainly financial, the philosophic argument being more like a bonus. Live CD example had more success than the dual boot one even if every body agreed that it’s a good idea.

People already using Linux and/or BSD have more knowledge about KDE. There’s one exception: freshly converted users. In France, I have a problem with some LUGs that don’t ask what the user want and always install a f****g Ubuntu while install-party! This is why many new Linux users don’t know anything about other Linux distributions and nothing about KDE (or any other desktop environment). They, so, are doing the same mistake as the computer vendors that in the same way don’t give the choice with an other too much known operating system. Nevertheless, those people are always pleased with the KDE environment and many says that they will try by installing the needed packages or even by trying an other distribution (OK, OK my promoting effort was quite more in favor of OpenSuse than KUbuntu but for a good reason: much more better integration). The experienced user always know KDE, tried it, and made the choice according to their taste and priority. They always agreed with the quality of some of our application mainly K3b (nearly always in fact), Amarok, digiKam and the PIM suite.

The very delicate point is with people that was using KDE 3.5 and stop using it because of KDE 4. Most of them tried KDE 4.0 or 4.1 and were very disappointed by the new desktop considered as heavy and unstable and more of this, they did not accept the loss of some functionality and applications. Most of the time, they think that they’re not very happy with their current desktop environment as they’re waiting for something like KDE 3.5. In fact, there is a lack of communication from us because many false ideas are running. Konqueror can’t be the universal tool because it’s no longer the file manager, I don’t want/need 3D effect, I don’t like the new menu/desktop, where are the desktop icons…. I’ve heard all of these many times. Why not creating a KDE 3.5 theme for those users? That’s simple: make Konqueror as default file manager, disable 3D effect, put the old fashioned menu as default and activate the desktop icon layout of Plasma. I was able to show this to those people and they enjoy it. I advise them to choose something like Mandriva where default settings are much more like those of KDE 3.5. About lack of functionality and stability and performance issue they note that those problems are now solved.

KDE users

No need to convince someone already convinced… Curious of what they like or not, what is their favorite or hated applications I did ask many questions. The result was very aligned… What they like about the desktop is the global coherence inside KDE applications and the desktop, the beautiful and effective things they can have with Plasma and KWin (same as the opportunity to impress friends who are still with Windows ;) ) and the very good quality of the applications. Speaking about applications, the most cited are K3b (I was impressed by its popularity even with non-KDE users), Amarok, digiKam, Gwenview and the PIM suite (mainly KMail).

What they sometimes don’t like is the slowness of the desktop and the lack of stability with KWin and Plasma (too much crash), the too much discontinued support with Plasmoids (mainly with some exotic ones they can have with Mandriva or OpenSuse). About applications that need more love (yes, I sometimes read the developer’s interviews), the most cited is Kopete (mainly about audio/video support) and Dolphin. and Konqueror (mainly their stability, and Flash support for Konqueror). Some developers told me that the new KDevelop 4 has very poor versioning system integration. A feature  that  many KDE 3.5 aficionados miss is the ability to log in as administrator with a button with some configuration modules. Some people told me that they miss Quanta.

Photos

Here is some souvenir…. Enjoy!

Share

Internet IconYaPeTaVi has recently been updated to SVN revision 7. This is a preview reflecting the change in the engines and with new non-visible functionalities. That means that the engine was improved but not yet the skin… Errr, at least it’s ready to compile! So, there’s still some works to do, but the biggest is done (for reference the size of the source code have been increased by around 30%). Enjoy! ;)

Please note that there’s a little change in the compilation so consult the YaPeTaVi page to proceed correctly.

Share

News iconI know I’ve been away for a while, but that was for some very good things. I’m working a lot about big articles and projects and you will have the results very soon. For the most impatients, here is the road map:

  • YaPeTaVi is actually in a big evolution. I’m working on big structural changes on the project that will lead to very good improvement. First, the filters configuration page will change totally. The actual system is going to disappear making place to a list view and contextual form system. Additionally, many more information will be available such as second and third ionisation energy, a brand new discoverer list with short biography, some pictures with descriptions for each element (photo in bitmap and electronic configuration in SVG). Last but not least a more user-friendly interface, with a new contextual help system. More is still to come
  • The part II of the article « Building KDE 4 from trunk » is in preparation phase. After some work and many hours of compilations, I’ve decided to change my first idea that was to send a new post on this blog with uptated information. As there’s huge possibilities and many good experiences, I’m working on a big and complete alternative tutorial to the one given on the official KDE techbase website. Unfortunately, as I’m mainly working on Debian, the tutorial will probably be a bit Debian specific. That why this page will be updated regularly regarding your feedback and advices
  • Then you probably remember my article about building a router with a good old computer and Linux. An update will soon come with support of uPnP (universal plug and play) which is a very safe and practical way to automatically configure router regarding the application you are using. Unfortunately this is taking time as I need to do many research to do this correctly.

This is a huge and very interesting program, so, see you soon…

Share

Lazarus LogoI’m actually trying to convert a Delphi component to Lazarus. The work is running Ok but I have some difficulties finding multi-platform equivalents working with FPC/Lazarus. This must be complicated as those functions are about shell integration and each shell have it’s own approach.

Here is the typical code giving me headaches :

//this windows specific function should be hard to convert
//we should need here something using mime types, anyway many more code
//should be required
procedure GetFileExtensionShellDescription(Ext: string;
  var FileTypeName: string; var ShellImageIndex: Integer);
var
  I, J: Integer;
  T: string;
  L: TImageList;
  sFI: TSHFileInfo; //this is windows specific but an other type could be equivalent
  Icon: TIcon;
  PCh: PChar;
  P: PFileDescriptionRecord;
begin
  FileTypeName := '';
  I := RegisteredExtensions.IndexOf(Ext); //this is a TStringList defined as global before
  if I = -1 then
  begin
    New(P);
    P^.FileType := '';
    Icon := TIcon.Create;
    for J := 0 to 1 do
    begin
      if J = 0 then
        L := ShellSmallImageList
      else L := ShellLargeImageList; //both are TImageList
      GetMem(PCh, MAX_PATH);
      GetTempPath(MAX_PATH, PCh); //those lines could be replaced by GetTempDir in FileUtil
      T := PCh + 'TEMP' + Ext;
      FreeMem(PCh);
      TFileStream.Create(T, fmCreate or fmOpenWrite).Destroy;
      //the following is the biggest problem... Impossible to find any
      //equivalent with Lazarus. Any ideas ? Mime types and FreeDesktop
      //implementation should provide this...
      if SHGetFileInfo(PChar(T), 0, sFI, SizeOf(sFI),
        SHGFI_TYPENAME or SHGFI_ICON or
        (SHGFI_SMALLICON * (1 - J) + J * SHGFI_LARGEICON)) <> 0 then
      begin
        Icon.ReleaseHandle;
        Icon.Handle := sFI.hIcon;
        P^.FileType := sFI.szTypeName;
      end;
      P^.OpenImageIndex := L.AddIcon(I);
      P^.CloseImageIndex := P^.OpenImageIndex;
      if J = 1 then
        I := RegisteredExtensions.AddObject(Ext, TObject(P));
    end;
    Icon.Destroy;
  end;
  with PFileDescriptionRecord(RegisteredExtensions.Objects[I])^ do
  begin
    ShellImageIndex := CloseImageIndex;
    FileTypeName := FileType;
  end;
end;

The problem seems simple, we just need to get system icons for every file extensions but nothing is currently available in Lazarus to do that. I know FreeDesktop is providing a common interface for all modern Linux desktop environment, to be able to do that, as many software that don’t have the same API can do that (ex. Gnome applications running under KDE use KDE theme). Is there a way to project a such implementation which is the base for desktop integration ? This should be a very good added value to Lazarus…

Share

France Logo

Please note this post became obsolete. Instructions bellow should work on old system, otherwise please don’t use it. An updated more complete tutorial will be available between march 25th and 30th of 2011.

Creating a Linux router using a good old computer is a very good way to create securised subnetwork. Unfortunately, posts with clear explanations of the procedure are not always as simple as it should be.

To do it you need a very simple computer. Personally I’m using P3 600 MHz with 327 MB of RAM and a 20 GB hard drive. This is very powerful for this use, but this machine is an HTTP and FTP server as well. For example my previous router was made using Pentium 200 with 48 MB of RAM and 500 MB hard drive and that was running well under a Debian Etch. Concerning network interface you need an Ethernet network card in more of what you need to access the internet, which is probably a second Ethernet card. You’ll also need an Ethernet hub connected on this network card. If you want wireless, I recommend a third network card (and a second sub-network), where you’ll only have an access point connected. If you can’t (or don’t want to) have a third network card you can still connect it to the Ethernet hub but that’s less secure.

All the following instruction will suppose a Debian Lenny or Etch installed on that machine (which is a good choice) with a working Internet connection. You must install only the base system. It’s not recommended to install X server or any graphic software cause security is the main goal of those kind of routers and nothing else.

Once the base system is installed you need to install (as root) the following package :

  • dhcp3-server which is giving automatically IP addresses to your sub-network client’s
  • dhcp3-client is needed if your modem is providing you dynamic IP addresses or if this modem is a router himself (generally installed by default)
  • iptables that is acting as a firewall and routing (using NAT) solution (generally installed by default)
  • iptables-persistent that will keep your iptables settings and restore it if you need to restart your router
  • nano is a simple to use editor (generally installed by default)
  • w3m (or any other text web-browser) to test internet connection on the router
  • Any other server service you would have, like Apache, proFTPd, BIND…

First I must define some terms to be precise. Imagine the following configuration :

  1. eth0: is connected to your modem (internet zone) with address 192.168.0.1
  2. eth1: is connected to your private Ethernet network with address 192.168.1.1
  3. eth2: is connected to your WiFi access point (optional WiFi zone) with address 192.168.2.1

Of course you will have to replace with the good values for your configuration and with the network address you want to have (must start with 192.168). The internet zone is automatically configured using dhcp-client launched inside the init script but not for the two other network. Unless you assign the good addresses while installation, you must configure it manually by editing the file “/etc/network/interfaces”:

# Begin of /etc/network/interfaces

# Configuring the loopback interface
auto lo
iface lo inet loopback

# Primary network interface (internet zone)
allow-hotplug eth0
iface eth0 inet dhcp

# Private network
iface eth1 inet 192.168.1.1
iface eth2 inet 192.168.2.1

Now we have to modify /etc/dhcp3/dhcpd.conf to enable the DHCP (Dynamic Host Configuration Protocol) server:

# Begin /etc/dhcp3/dhcpd.conf

# Use ad-hoc style name server updating procedures
ddns-update-style ad-hoc;

# Configure client's dns settings: replace 212.27.40.24x with your ISP DNS servers and
# optionally add your DNS server (192.168.1.1 here) if you have your own.
option domain-name "jeff.levasseur.org";
option domain-name-servers 212.27.40.241, 212.27.40.240, 192.168.1.1;

# Configure lease time (in seconds)
default-lease-time 600000000;
max-lease-time 720000000;

# eth1 subnet configuration: this will give address from 192.168.1.10 to
# 192.168.1.99 and it's the only thing you may change. Note that you
# can have several range, and ranges with only one address.
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.10 192.168.1.99;
    option routers 192.168.1.1;
    option broadcast-address 192.168.1.255;
}

# eth2 subnet configuration: here you have an exemple of multiple range
subnet 192.168.2.0 netmask 255.255.255.0 {
    range 192.168.2.2 192.168.2.10;
    range 192.168.2.100 192.168.2.199;
    option routers 192.168.2.1;
    option broadcast-address 192.168.2.255;
}
# End /etc/dhcp3/dhcpd.conf

Now you need to restart the DHCP server with:

/etc/init.d/dhcp3-server restart

You should test the DHCP server by reconfiguring the network and pinging the server on one of the client machine. For example with Linux:

dhclient eth0
ping 192.168.1.1

If dhclient is giving you a good IP address and ping returns no packet transmission error, you’re DHCP server is well configured. With Windows, you should use the “Control Panel” to configure the network settings of the client. If you use a WiFi hotspot you have to configure it before doing this test.

At this point the network is working fine but you still have no access to the Internet cause interface eth0 must “translate” addresses to eth1 and eth2 to allow access. This is done using iptables which is at the same time a firewall and an network address translator (known as NAT). In the console type the following:

# Forward incoming link address from eth0 to eth1 and eth2 only
# when connexion is already established
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,REQUIRED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth2 -m state --state ESTABLISHED,REQUIRED -j ACCEPT

# Forward everything coming from clients and going to internet including request...
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT

# Activate iptables's nat
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Enable Linux kernel packet forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# Restart DHCP server
/etc/init.d/dhcp3-server restart

Now your internet access will work fine with a very good protection level. Nevertheless, if you want to tune your Iptables configuration, then the next step is to buy a book… That’s all folks !

Share

Internet IconAs I was saying in a previous article I project to port all my old software from Delphi to Lazarus. The first on to come will be YaPeTaVi for Yet another Periodic Table Viewer. It was formerly a simple molecular mass analyzer and become, after some brain-storming and a nearly full rewrite of the application, a full featured analysis software. It’s project to include the following functions for the first beta version:

  • Periodic table viewer with colorization support depending on atomic block or family, or gradients for discovery dates, melting point, boiling point, electronic affinity, covalent radius, Van Der Waals radius, electronegativity and first ionization energy.
  • List supporting sorting options for detailed element information and a link to the appropriate Wikipedia article.
  • Graph system representing numerical values on two axis with multiple range selection.
  • Multi-filtering system available for periodic table, list and graph.
  • Molecule (or ion) database with information.

I’m also thinking of several improvements like electronic configuration viewer, more controls on graph widget and isotope information.

You can actually download source code via SVN (the only available version is an early prealpha) by using one of the following command:

svn co svn://svn.tuxfamily.org/svnroot/geofperspage/gppsvn/trunk/yapetavi

If you are a Windows user you may use TortoiseSVN to do so. Alternatively you can browse the code at the address: http://svn.tuxfamily.org/viewvc.cgi/geofperspage_gppsvn/trunk/yapetavi/ of the SVN repository. You will need a recent SVN version of Lazarus, FPC version >= 2.3.1 and the optional TChart component installed (it’s distributed with Lazarus anyway but not compiled by default). If you need help, about compiling or anything else just contact me.

If you want to help you’re more than welcomed. In more of the improvement I’ve listed, I need some test on Windows or MacOS and an idea to organize information on elements isotopes.

A page on this website will give you access on all the usual information (changelog, documentation, detailed compiling/installing instruction…). The news will stay on this blog.

Share

Internet IconIt’s so great to be back on the Internet… especially after an half and 2 month being disconnected. How it is possible to need so much time to get a connection? Well this is simple: incompetence of the ISP I choose to establish it.

I decide to subscribe to a fully degrouped (eq. of unbundled in US) connection with the french ISP SFR, cause it was the only one present in my city at the time I was taking my new flat. When the technician came he saw that there was no wire for my flat between my building and the repartitor 20 meters away. He left saying me that they will come back to place the missing wire. They never came back and SFR was not able to treat my folder to make it. After two month SFR give up and ask me to give them back the modem. In their letter they were writing that DSL connection are not available in my area! But, my neighbors do have…

The same week I learned that the ISP Free was installing equipment for full degrouping (unbundling) in my city. I subscribe and two weeks later, here I am without any problem.

Thanks SFR for such an incompetence, it made me subscribe to my preferred ISP!

Share

KDE LogoSeveral month ago I was running a Debian Lenny/Sid and used to have KDE 3.5.x running. KDE 4.0 was about to be released but it was not usable for production. So I decided to run KDE 4 following the techbase website instruction. Today I’m running KDE 4.2.4 from Sid Debian repositories. Nevertheless, KDE 4 support under Debian is still a very big mess. Many software are still not available for KDE 4 even if a stable version exists for it (e.g. Amarok or Kile). Moreover, the stability of the base desktop is awful and many bugs are Debian specific (the OpenSuse version is very stable). I don’t want to leave Debian cause my system is still quite more fast and reliable than in the past with OpenSuse.

An other point is that I need a development release (from SVN) of KDE 4 to be able to make some tests. After many discussions on KDE developers IRC channel, I was convinced that SVN version of KDE 4 (actual trunk is for future 4.4 version) is stable enough to be used for production.

Now here are my plans…

The Qt version provided by Debian (4.5.1) have dependencies with Phonon, and I need to build a SVN version of Phonon (Debian version is to old). So I need to remove all Qt dependent software, using aptitude or synaptic under a non KDE session (I use Xfce to do so). Please note that all Qt or KDE based software must be closed before uninstallation, elsewhere you may have a strange reaction of your system. When Aptitude or Synaptic show you the list of software it is about to uninstall, it’s better to note it to be able to retrieve all you need. You will have to compile and install all these software manually.

The KDE techbase website is providing very good compilation and installation instructions but it is about to install it under a special user account that I don’t want. I will have to change various things. First the best way to set environment variable for all users is to create an init script. I’ve decide to run it mainly under run-level 3 because the X server can be ran manually anyway even if we are not run-level 5. So I create the file “/etc/rc3.d/S40kde4“:

# Begin /etc/rc3.d/S40kde4
if [ ! -d /tmp/${USER}-kde4 ]; then
mkdir /tmp/${USER}-kde4
fi
export KDEDIR=/usr/
export KDEDIRS=$KDEDIR
export KDETMP=/tmp/$USER-kde4
export STRIGI_HOME=${KDEDIR}
export QT_PLUGINS_DIR=$KDEDIR/lib/kde4/plugins:$QTDIR/lib${QT_PLUGINS_DIR+:}$QT_PLUGINS_DIR
export PATH="${PATH}:${KDEDIR}/bin"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH+:}${KDEDIR}/lib/pkgconfig"

# End /etc/rc3.d/S40kde4

You can change the base path if you want, but the one I use is respecting Debian guidelines. Note that KDEHOME variable is defined by Debian in an other script so it is not safe to redefine it. When the file is saved (you must be root), you have to make it executable and it’s also more safe to copy the file to be executed to some other possible run-level. This is done by executing the following commands as root:

chmod -v +x /etc/rc3.d/S40kde4
cp -v /etc/rc3.d/S40kde4 /etc/rc2.d/
cp -v /etc/rc3.d/S40kde4 /etc/rc4.d/
cp -v /etc/rc3.d/S40kde4 /etc/rc5.d/

It is not necessary to copy in directories for run-level 0, 1 or 6 (respectively halt, single user and reboot). Then you need to update your general profile and user session, if you don’t want to reboot:

/etc/rc3.d/S40kde4
source /etc/profile

Before processing any of the next steps, you have to install all the build dependencies by following the steps provided here.

If you have any error message at this point, you should check your configuration and the previous steps. Once this is done, you are ready to compile, but to make it more easy it is better to create an automated compilation script. I made this one, called “kdemake.sh“:

# Begin /usr/bin/kdemake.sh
if test -n "$1"; then
                # Source folder is defined via command line argument
                srcFolder="$1"
        else
                # srcFolder is the current dir
                srcFolder=`pwd`

# default build directory is a build subdir inside the source folder
# -DCMAKE_INSTALL_PREFIX is forcing install prefix to the above definition
# -DKDE4_BUILD_TESTS=TRUE is optional and build test suite
# -DCMAKE_BUILD_TYPE=debugfull is optional and build full debugging information
cmake ${srcFolder} ${srcFolder}/build/ -DCMAKE_INSTALL_PREFIX=$KDEDIR -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull
cd ${srcFolder}/build/

# nice make -j3 is forcing make to use two processor (for dual core) replace with -j2 if you have mono-processor system
nice make -j3 && sudo make install
# note that sudo will ask you root password to install

# End /usr/bin/kdemake.sh

Make the script executable with:

chmod -v +x /usr/bin/kdemake.sh

If you run this (very simple) script, it is supposed that all the build directories have been created as child of the source directory… So, here is an example for compiling kdelibs package :

svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
cd kdelibs
mkdir build
kdemake.sh

This has to be done for first compilation then you only need to update and compile what is needed (this is why cmake is so fun), by doing this:

cd /kdelibs
svn up
kdemake.sh

If, like me, you prefer do this manually, just forget it. However a good idea is to create a variable containing systematic cmake parameters (this way you can pass some other parameters as you wish). For me, I call it “CM“. The other very useful thing is to create an alias for make, called fmake for “fast make”, allowing it to use the two processor of your dual core if you have one (the problem is that fmake will not accept parameters make used to accept because of nice):

export CM=-DCMAKE_INSTALL_PREFIX=$KDEDIR -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull
alias fmake=nice make -j3

You can add those lines to the init script above, that way it will always be available. Then you can do the same stuff as above, this way:

svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
cd kdelibs
mkdir ../build
cd ../build
cmake ../kdelibs $CM
fmake
make install

The minimum KDE system is kdesupport, kdelibs, kdepimlibs and kdebase. You must compile it in that order due to dependencies. To install the full KDE suite you have to compile kdeadmin, kdeaccessibility, kdeartwork, kdebindings, kdeedu, kdegames, kdegraphics, kdemultimedia, kdenetwork, kdepim, kdeplasma-addons, kdesdk, kdetoys, kdeutils, kdevelop, kdevplatform and kdewebdev. You can compile some of these or everything in no particular order. The only exception is kdevplatform needed by kdevelop and kdewebdev that must be compiled first. After that, you can explore the websvn of KDE to find more software that you may be interested in. Check the playground and the extragear directories, koffice directory for the KDE Office Suite and l10n-kde4 for localization in your language.
When everything will be built for me, part two will be there as report of the experience (along with yours as comment).

That’s all folks… for the moment!

Share

Lazarus LogoI was very good in Delphi programming until 2002. I was also using Borland Pascal 7 a lot mainly with my studies. This was very fun programming for me and very interesting. When I totally forget Windows, I was forced to forgot Delphi programming at the same time. Of course, there was Kylix but it was not a very good alternative:

  • Closed source, and very expensive
  • Not able to run on my Suse Linux 9.1 (I think) I was having at this period
  • On my Red Hat machine it was very unstable

That’s for all those reasons that a small team decide to start programming their own version of Delphi, from scratch. The Lazarus project was born. Today I can use it very nicely and all the essential function of Delphi are present and even more. Some other functions are still missing (the project needs more developers) but everything is possible to do with it.

If you know something about Pascal programming, you can help with Lazarus development here.

Now I rediscover programming pleases and will port some of my old soft for FPC/Lazarus. This is a huge work for one of it but the others will soon be available. So see you soon!

Share

France LogoOne week ago I was drinking to the health of the french minister of the culture, Mrs Christine Albanel, cause the “Hadopi” law, its dear baby, was definitely buried by the constitutional council, after having been abused by the European parliament. The reason was that a sanction, whatever it is, can not be taken by the legislator or anybody else than a judge. But the minister was not stopped and decided two days ago to purpose a new law… Hadopi 2!

For those who don’t know, Hadopi is supposed to be the new French legislative arsenal to protect our artists from illegal download. This law should create a new governmental agency, named Hadopi, able to spy users. For the moment, spying internet users by watching what they are doing with their connection require an authorization from a judge and must be done by the appropriate police service. Here no police, no judge, no instruction, just technocracy. It’s the open door for mass spying… If an illegal activity is detected on your connection, then you will receive a warning e-mail (the e-mail address is given by the ISP). If a new suspicious activity is detected you receive a second e-mail, then if that happen a third time the internet connection will be shut down without delay by the ISP for a minimum delay of one month. Of course no judgment, no proof that the faulting user is the proprietary of the connection, no recourse available, and cherry on the top of the cake: the same organization will have role as police, justice and investigator… All the reason why the constitutional council make this law unconstitutional!

So, now we have Hadopi 2 on the road. What will change? Nothing in fact, just that a judgment will be pronounced by a judge using a facility in the french law: “l’ordonnance pénale” approximately translated in “penal ordnance”. I will call it next “simplified procedure”. So what’s this? In France trials are overflowed: no way to use a real judgment, too expensive and nothing is more dangerous than a system where justice have money enough to do a good job… The solution is to use the same system than the one we use for road infraction.

When we are doing a road infraction the proof are easy to establish, and the punishment is not requiring in most of the case prison. In that way the suspect is judged without being present in a trial. The judge can decide three things. If all the proofs are present and if there’s no doubt on the identity of the suspect, the punishment is given and the suspect have 45 days to call the decision. Elsewhere, the judge can decide that the supposed punishment is not appropriate and ask for a real trial (particularly if prison is required) or that there’s not enough proofs and the ordnance is abandoned (nothing happen). See the 495th article of penal procedure codex for details (in french).

In the case of counterfeit offense, this is a very bad idea. First, this procedure can only work with very simple offense to prove, but a counterfeit done with computer is not really as simple than speed excess. The tribunal must have all the proofs:

  • That the work was protected (we can download free content with BitTorrent or a Mule)
  • That the downloader known that he was downloading something protected (file names are not always explicit enough or it’s nothing to do about the content of the file)
  • There’s no doubt about the identity of the downloader (an IP address is not a proof of identity)

So if the law is respected, all the folders created with Hadopi system, should be rejected by the judge for insufficient proofs. The tribunal would be forced to ask for police investigation, loosing all the simplification interest of this procedure. Worst, the proof will be given by a government agency, non-sworned in. But the constitutional council is saying that, in the case of simplified procedure, no police investigation is possible if the proofs have not been gathered by a sword in agent, i.e. only the police or parts of the army in France (Decision n° 2002-461 DC, 29th of august 2002). Of course, and for the same reasons, Hadopi cannot investigate itself: it will not be a police service, so, they can’t have any rights for investigate. Hadopi could only get IP address, e-mail address and an activity and identity report from the ISP.

The other point is that this law is against artist’s interest. The french penal procedure codex, prohibit the victim to ask for compensation, in the case of the simplified procedure (495th article, al. 9, precising that a compensation ask must require a lawsuit). So, rights owner will not be able to ask for a compensation for their damage. They must sacrifice their right to the repression thirst of their government.

Last thing, this procedure is not applicable to minors (495th article of the penal procedure codex, al. 8), so I see that from here: “No it’s not me, it’s my 12 years old son that was downloading!“…

To resume, this new version of Hadopi will give us very good moment of fun…

This post was mainly inspired by this article written by a lawyer. Very complete, in french.

Share

France LogoFrance is supposed to be a democracy and a country where liberty is one of its foundation. For how long?

After liberty-killing law like Hadopi, that was like a starter, the main course is coming with a new one: Loppsi (loi pour la performance de la sécurité intérieure meaning law for inside security performance). A member of the commission studying the project wrote about it here.

As he’s saying the worst problem is in 6th article:

Il s’agit d’« imposer aux fournisseurs d’accès à Internet l’obligation d’empêcher sans délai l’accès aux contenus illicites dont les adresses électroniques sont désignées par arrêté du ministre de l’intérieur sous peine d’un an d’emprisonnement et de 75.000 euros d’amende.»

It is translated this way:

It is about « to impose to Internet access providers the obligation to prohibit without delay access to illicit contents where electronic address are chosen by an arrest of the inside minister under liability for one year of imprisonment and 75.000 Euro of amends.»

In other words, one person will be able to interrupt access to a web site on all the French territory, without judgement nor control. This just make me think of China witch is using the same kind of things!

I think sincerely liberty will soon and soon become a luxury in France…

Share