Search This Blog

Thursday, June 20, 2013

NetworkManagerQt

After reading dfaure's blog post, specifically his complaint about libnm-qt requiring NetworkManager 0.9.8, I was compelled to write post. Firstly, I must say that today marks four months that NetworkManager 0.9.8.0 was released, it should be packed by distributions already. NetworkManager 0.9.8.2 is two weeks old now.

NetworkManagerQt (aka libnm-qt) is a work in progress library and I am working on to make it ready for its first release. There are some useful features in NetworkManager 0.9.8.x that does not exist in 0.9.6.x:


  • wifi ap-mode for more stable and secure wifi connection sharing. This is the main reason for using NetworkManager 0.9.8;
  • bridge support;
  • more connection states to correctly handle notifications about... guess what? Connection states.


Even Plasma NM 0.9.0.9 now depends on NetworkManager 0.9.8.x because of bug 320533. Ok that 320533 is a small bug, if you do not want or cannot upgrade NetworkManager to 0.9.8.x you can still use Plasma NM 0.9.0.8, there is little difference between Plasma NM 0.9.0.8 and 0.9.0.9. However, I think it is reasonable that NetworkManagerQt depends on the latest stable NetworkManager version. After all NetworkManagerQt is not a stable library yet, we do not even keep binary compatibility for now. Sure we are going to keep binary compatibility from first NetworkManagerQt release on though.

I plan to keep NetworkManager 0.9.8.0 as dependency for NetworkManagerQt 0.9.8.0 (first release), so this problem should be mitigated as distributions continue to pack NetworkManager 0.9.8.x. Minimum NetworkManager required is going to be bumped only when really necessary, which was the case for the wifi ap-mode.

Sunday, June 16, 2013

Plasma NM 0.9.0.9


Plasma NM 0.9.0.9

SHA256Sum: d6a7603df2a48e14cef4c44dcaee5773d7ed3cad5b8780307b356df4639231ca

This version requires NetworkManager 0.9.8 for connection activation error notification to work properly. You can even compile it against NetworkManager 0.9.8 and run it with NetworkManager lower than 0.9.8 but the mentioned notification is not going to work properly if you do it.


This version is also bigger in size because the ModemManager backend was moved from kde-workspace's master branch to networkmanagement's nm09 branch. It will be installed as "ModemManager backend 0.5". For KDE <= 4.10.x users this means you will have to ModemManager backends installed (one from kde-workspace and another from Plasma NM). The one in Plasma NM should have higher priority by default. As long as you have not changed backend priorities using systemsettings -> Information Sources everything should work. If you have then make sure "ModemManager 0.5" has higher priority than "ModemManager 0.4".


Changelog:

320533: Fix connection failed notification triggered despite successful connection.
317700: Attempt to prevent crash when restarting NetworkManager.
319257: Fix updating gsm access technology and allowed mode.
320153: Add missing icons for kde-workspace >= 4.10.60 (future kde-workspace 4.11). This does not affect 4.10.x users.
. Show IPv4 gateway in interface details.
. Use UTF-8 for wifi SSIDs.

The following languages have more than 80% of strings translated:

bs ca cs da de el es et fi fr gl hu ia it kk km lt nb nds nl pl pt pt_BR ro ru sk sl sr sr@ijekavian sr@ijekavianlatin sr@latin sv tr uk zh_CN zh_TW

Also read some very usefull information about how to use and avoid problems when using Plasma NM in my past posts page.

Monday, June 10, 2013

My work in basysKom

As you probably already know I work for basysKom, a German company that also employ other KDE developers and strongly supports Plasma Active. You can even download Plasma Active live/installation images from basysKom's servers.

I work for basysKom since late 2011 and one of my first assignments was to contribute to Plasma Active, but some of my work for basysKom reached Plasma Desktop as well.

Another big contribution to KDE came last year when basysKom sponsored me and other developers to rewrite Ark (KDE's archive program). All the changes we did are in basyskom branch in Ark's repository. I will talk about the changes we implemented in another post.

Now you must be asking why those changes are not in Ark 4.10 already and even not merged into (the yet to release) Ark 4.11. Well, at least they are listed  in kdeutils 4.11's schedule. The fact is that reviewing all 284 commits in basyskom branch takes a lot of time. Ark's maintainer also asked us to edit several commits, which slowed down the reviewing process even further. Only today I have finished rewriting the commits according to Ark maintainer's comments (or most of the comments).

The new branch now contains 181 commits and:


  1. Comply with kdelibs's code style;
  2. Use the correct data structure names (QVariantList instead of QList);
  3. Do not generate compiler warnings;
  4. Use kDebug() instead of qDebug() and kDebug(1601), where 1601 is Ark's debug area;
  5. Removed unneeded empty lines;
  6. Most of the "undesired" massive text reformatting were removed as requested by Ark's maintainer;
  7. Several commits were squashed (merged) when it makes sense, then the total number of commits is now way smaller;
  8. Another reason for the smaller number of commits is that I removed of the features we (from basysKom) implemented: the "fix file name encoding" feature, which is an heuristic to guess the file name encoding and convert it to UTF-8. The heuristic works for German language only so I decided to remove it and rework it later to make it support other languages, if possible (guessing file name encoding is very error prone);
  9. Another reason for the smaller number of commits is that I removed/edited the commits that added/updated German translation files. This was a requirement by the time we implemented those changes. However, that was not according to KDE's policy so I removed them.
Unfortunately, I have not been able to do all the changes asked me to do, such as rewriting all the commit's messages in git-format. I am constantly rebasing the branch so I cannot edit the commit's messages or I would lose the only thing I can use to compare the original commit with the new commit in the rebased  branch. Another change I have not done yet is removing the copy of KNewPasswordDialog and KIO::RenameDialog classes that resides in kerfuffle/kdelibs. We needed to implement some UI changes in those dialogs, copying them were the fastestes approach. Now we need to discuss which of the changes in them can go to frameworks5.

By the way, the rebased branch is in one of my scratch repositories now. I must say that editing all those commits in the past months has been an extremely boring task :-/, it resumes to 0 features added, 1 feature removed and a lot of text editing, no developer likes that. Here I must give basysKom a big "thank you" for sponsoring part of that boring task and for sponsoring all the work we did in Ark last year.

I am not confident that the commits will make it to Ark 4.11. I have done part and now I need help to test the end result. If you want to test the new Ark you will need to clone the rebased branch and compile it yourself. The compilation process is:

  • git clone git://anongit.kde.org/clones/ark/lvsouza/ark2
  • cd ark2
  • git checkout ark2
  • mkdir ../ark2_build
  • cmake -DCMAKE_INSTALL_PREFIX= ../ark2
  • make
  • make install
The new Ark mainwindow looks like this:


When you open a file (or archive in Ark's jargon) it will look like this:


Yes, 7z support is one of the new features we implemented in Ark :-) We also implemented (read-only) support for split archives (AKA multi volume archives). All the new features are listed in the CHANGES file in the rebased branch. You can also see the list of all contributors to Ark in app/main.cpp file, including the four basysKom developers (me included) that worked in this project.

Stay tuned for more post about the new Ark.

Wednesday, June 5, 2013

I’m Going to Akademy 2013

After missed Akademy last year because of my daily work I am happy to say I'm going to Akademy 2013 :-) Today I have bought my flight tickets after two days trying (problem with by credit card). Damn those tickets are expensive and that two days delay made them even more expensive :-( The dollar climbing fast against the Brazilian Real does not help either. Well, now is waiting for the bill to come next month :-/

One of the things I want to do by Akademy date is releasing libnm-qt, libmm-qt and plasma-nm (new applet for network management). Unfortunately, due to personal issues in the past months I could not work on Plasma NM as much as I used to. I am still not pushing many commits to the new Plasma NM repo (git://anongit.kde.org/plasma-nm), just testing, searching for bugs and warning other Plasma NM developers about the problems I find (specially regressions compared to the (now) old (new as in "not released yet") applet in git://anongit.kde.org/networkmanagement's master branch :-/

networkmanagement repo contains three applets now. One that I release from time to time (nm09 branch), a new applet still using QGraphicsView (NM/0.9.1 branch, never released and unmaintained) and a version of that last applet made in QML (master branch, used in Plasma Active for instance). Well, the code in all those three applets are large and complex to deal with, so some developers decided to create a new applet in git://anongit.kde.org/plasma-nm. The new applet is almost all made in QML (even the applet in networkmanagement's master branch is mostly C++). It should also be easier to maintain and its source code is way smaller compared to the old applet. But we are still working on to port/polish features in the old applet to the new one.

I am running both applets at the same time in my notebook for several weeks now, it works for debugging, but that is not exactly a supported configuration. The secret agent in the new Plasma NM repo also is more complaint to NetworkManager's specification, but also not well tested. By the way, when reporting bugs to the new applet use one of the plasma-nm-* components instead of "Network Management".

Some distributions has started creating packages for the new applet, so you can try those packages or compile it yourself (libmm-qt and libnm-qt are required). NetworkManager 0.9.8.0 is also required by libnm-qt and the new applet.

See you in Bilbao :-)