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 :-)


Saturday, May 25, 2013

Interesting apps for Samsung Galaxy S2

aCalendar: Works ok, no force close (fc), shows my contact's brithday's without any need to configure that (may it synchronized with my google's calender, do not know). Interesting app to have installed.
Advanced Task Killer: Quick way to close apps, helps preventing apps from wasting battery.
AirDroid: Control your Android from any browser. That is usefull to use a laptop's keyboard to type SMS or exchange files to/from the phone for instance.
AndChat (Free): For those who still use irc this is really good irc client.
Andro12C financial (free): If you need to calcule amortizations this is very handy calculator.
BusyBox: Command line for Android, very useful when used together with 'adb shell' command from a laptop.
CamScanner -Phone PDF Creator: Scanner app. I was not very faithful about this app before I tried it. It really did a good job in my tests, the app crops and tries to undo image distortions (because of shaking hand) so the final image is a perfect rectangle, I was not expecting it to do that. The final result is really good as long as you can make the camera to correctly focus the paper. In my case I enabled macro focus, anti-shake and configured the camera to focus on the part of the paper that has letters in it (if you try to focus a empty part of the paper the camera does not correctly focus).
Coffice: Calligra Office from KDE :-) I am a KDE developer so this is a bias review  hehe. However I am not a Calligra developer so do not ask me any details about its source code because I do not know. This apps reads OpenOffice/LibreOffice documents, I have not tried to open Word or Excel documents but I guess it is capable of it too. The installation takes more than usual space because it needs to download Qt libraries (Coffice is written in C++, so it is not a native Android app, which are usually written in Java).
ColorNote Notepad Notes: I had to find a new one after I installed Chameleon in my Samsung Galaxy S2 since Chameleon does not come with a note app.
CPU Spy Plus: Usefull for detecting if the CPU is not in deep sleep, which usually means some app is taking CPU and consequently battery power.
English Dictionary - Offline: English dictionary, handy.
GetRIL: Test if the modem driver (the one used for 2G/3G audio and data connections) matches (is suitable for) the library (called ril) Android uses to handle it. If they do not mach it can mean the modem may not be using some features to save power or even the modem is not working properly. My current ril does not match my modem's firmware and I have not seen any real issue yet, so do not take the words above as a garantee of problems if the modem and ril do not match.
File Manager: Advanced file manager for advanced users :-) Allows mounting /system as read-write if the firmware is rooted. Just do not mess with files in /system or you will have to re-install Android. In case you mess with /efs even re-installing Android will not be enough to make the phone works again with your operator's network. Be carefull.
Globo News: This one is for Brazilians or anyone that can listen to Brazilian Portuguese. This is an app that receives video streams from the biggest Brazilian news tv channel (kind of a CNN for Brazil).
GSam Battery Monitor: Shows how much battery each app or system component used, also estimates how long the battery is going to last until needs to be recharged. Very handy for battery hungry apps users or just to identify why the battery does not last long.
MoboPlayer: Video player. Plays mp4 and rmvb, which are the most interesting ones for me, probably plays other formats too.
Network Monitor Mini: Show download/upload speeds on the screen all the time (it is always visible). I like to see in real time how my operator network's speed varies, just for curiosity :-)
Network Signal Info: Another app just for curiosity hehe. Show signal strengh for wifi and cell radios with graph.
Nova Launcher: App launcher, I like this one better than the default aokp (Android Open Kang Project) one that comes with Chameleon.
Offline dictionaries: Offline translation dictionaries (includes English <-> Brazilian Portuguese).
Palmary Weather: Weather app with detailed weather information, such as hourly weather forecast. Very cool.
Pianist HD - Finger Tap Piano: Very cool piano app, try it.
Screen Filter: Creates a shadow to make the screen darker. Theoretically that helps saving battery for oled screens (does not work with TFT screens used in Sony's phones for instance).
Speedtest.net: Another diagnostic tool, this one measures network speed and is probably well known by many people.
Titanium Backup ★ root: Very handy app to backup other apps and their configurations. Android already saves Android's apps list on your google account, but as far as I can tell it does not stores apps configurations, so this one does all the job you need to fully restore your apps after a firmware re-install for instance.
TrackID™: Play a small sample of any song with this app opened it will (if there is Internet available) detect which song is being played. Very cool.
Trainer PRO Run, walk & bike: I like riding a bike and as a curious person I wanted to know how much time, how far and how many calories I spent when doing my usual bike circuit.
TuneIn Radio: When I get bored with my in the air fm radio app I like to use this one to listen to other radios :-)
WiFi TXpower: Decrease (or increase) wifi card's tx power. Decreasing tx power helps saving power and if the access point is very close (a few meters without any wall in between) that also helps decreasing radio interference. Increasing tx power helps signal strength if there are obstacles between the phone and the access point.
Z - Device Test: Diagnostic tool, shows a lot of details about the device, very interesting.
ZEDGE™: Allows downloading wallpapers, ring tones and other stuff to customize your device. Very cool.

Chameleon v3.0.2 for Samsung Galaxy S2

Last month I decided to install a new firmware in my Samsung Galaxy S2. There is some time that I am watching the comments about Chameleon. What interested most about it is the fact that it preserve the fm radio receiver app from Samsung. In despite of what most people think I really like to read fm radio  when I am travelling and and online radio is very costly when I outside my country (Brazil) and 3G connection takes much more battery juice than in the air fm radio.

Reasons apart I installed Chameleon and I kind of miss or dislike some things compared the original Samsung firmware:


  • the ring and alarm tones that comes with Chameleon are not for my test. That is not nothing that Zedge could not fix.
  • the alarm app requires more taps to configure.
  • the message app uses white background. I like dark themes for oled screen devices (helps to save power).
  • I also does not like the Google seach/voice incorporated into the homescreens so I installed Nova launcher instead since there is not way to disable that.
  • Thanks for jazzk to add a option in Chameleon 3.0.2 to disable the crtoff effect. I really does not like it.
  • I rather prefer the swype keyboard than the default Google's one. The Google one is not as accurate as swype and show less keys.
  • it does not come with a note app by default. ColorNote Notepad Notes is a good one that I installed.
  • for some reason I think my secreen's minimum brightness is now greater than Samsung's original firmware, that means the battery lasts less then it used to be. I have not measured that to confirm.
Now the things I like in the firmware:

  • Fm radio support :-D .
  • it is smooth and fast.
  • I like the darker theme and icons compared to the original Samsung firmware.
  • I like romcontrol feature to change and reorder launchers in notification area (it could have more options like powertoggles has though).
  • the Samsung camera app is present in this rom. I am used to it so it is good that I do not need to learn how to use a different one.
Overall I think this is a great firmware and worth trying, specially if you want to get rid of the bloatware that comes with Samsung's firmware.

Friday, April 19, 2013

Solid Forge 2

Some of you may have noticed that there are some KDE sprints happening right now. One of them is Forge 2, the Solid sprint. If you do not know what Solid is you should be ashamed. Everytime you configure a network connection, change screen brightness, use a bluetooth device, insert a usb stick and Device Notifier pops up it is because Solid is working to make that happen for you. Solid abstracts the computer hardware and makes it simpler to create programs that helps the user to control their computer's hardware.

As the maintainer of network management in KDE I am really interested in making things work better and better in Solid, not only for network management. The sprint started last Thursday and I finally met the guys from RedHat, which by the way are hosting Forge this year. I was particularly interested in meeting them because they have been doing a good work in improving NetworkManagerQt library (yes, former libnm-qt changed its name again) and creating a new applet for NetworkManager. Both the current applet (in networkmanagement repository's master branch) and the new one (in plasma-nm repository) share NetworkManagerQt library. One of my wishes for NetworkManagerQt was to move the dbus parsing code from networkmanagement to it. Now that is a reality thanks to Jan Grulich (one of our RedHat hosts). I also need to thank Lukáš Tinkl and Daniel Nicoletti for their work on improving NetworkManagerQt.

The list of things to improve in the new applet and in network management in general includes several items. We are going to discuss those items and tackle them in the next months. It also good to know that there are some GSoC candidates interested in working in KDE's network management :-) This year looks promising for KDE's network managment.

PS: Today we finally removed Solid::Control from kde-workspace (yeah!!) One step ahead to simplify libsolid.