Search This Blog

Thursday, October 27, 2011

New home for libnm-qt

Today I have finished to move libnm-qt and libmm-qt to To compile them do (in this order):

. git clone git://
. mkdir libmm-qt_build
. cd libmm-qt_build
. cmake -DCMAKE_INSTALL_PREFIX=/usr ../libmm-qt
. make && make install

. git clone git://
. mkdir libnm-qt_build
. cd ../libnm-qt_build
. cmake -DCMAKE_INSTALL_PREFIX=/usr ../libnm-qt
. make && make install

Compiling master branch is still the same:

. git clone git://
. mkdir networkmanagement_build
. cd networkmanagement_build
. cmake -DCMAKE_INSTALL_PREFIX=/usr ../networkmanagement
. make && make install

I must say this new Plasma NM + libnm-qt is working quite good, no big problems in the last days. I will start to port the usability changes to master branch early next month, for now there are other things that require my attention.

Monday, October 24, 2011

Plasma NM: libnm-qt working

I thought it would take me more time to make Plasma NM work with libnm-qt :-) I have just commited the last bugs fixes for the bugs I have found so far and Plasma NM/libnm-qt works. There are no visual changes, so there is no point in showing a screenshot :-P

Updating my post about the work to port Plasma NM to NM-0.9 we have:

  1. Create the new Solid's NM-0.9 backend outside kde-workspace repository so that we could change it freely without KDE's freature freeze/ABI restrictions. (DONE)
  2. Make it compile against NM-0.8.999. (DONE)
  3. Remove #ifdef COMPILE_MODEM_MANAGER_SUPPORT and #ifdef NM_0_8 from the source code. (DONE)
  4. Make everything compile/work when the old NM-0.7 backend from KDE SC 4.{6,7} is installed. (DONE)
  5. Create code to import existing NM-0.8 connections to NM-0.9. (DONE)
  6. Make it really work with NM0-0.9.0. (DONE)
  7. First Plasma NM release. (DONE)
  8. Convert code to use libnm-qt instead of Solid::Control::*Nm09. (DONE)
  9. Finish to implement libnm-qt and libmm-qt. (DONE)
  10. Apply usability changes. (IN PROGRESS)
  11. Implement the new interface types: LTE, Wimax and OlpcMesh. (IN PROGRESS)
  12. Fix "paper cuts" bugs (IN PROGRESS)
  13. Improve VPN support. (TO BE DONE)
  14. Improve support for Pppoe (DONE), Cdma and IPv6. (TO BE DONE)
  15. Improve notifications support. Hmm after some thoughts and testing I honestly do not know how to improve it. (TO BE DONE)
  16. Implement automatic proxy re-configuration. I think this should be done in NM itself to make it work with system connections and with non-KDE programs, such as Firefox, Chromium, Opera, etc. (UPSTREAM)
  17. Implement option to run scripts before and after connection's (de)activation like in WICD. I think this should be done in NM itself so that it works with system connection. (UPSTREAM)
Libnm-qt works very well in my notebook, it can be considered stable now. I may release Plasma NM 0.9.0 final (no libnm-qt) probably next week if no other important bug appears. Talking about bugs, yesterday I fixed the last crash bug assigned to Plasma NM in Now we only have one major bug (related to importing old settings from Plasma NM for NM-0.8), several normal bugs and wishes.

None of the remaining 27 bugs are related to crashes and they are mostly wishes, so please, distributions, use Plasma NM 0.8.95 instead of shipping outdated Plasma NM versions full of bugs that were fixed months ago. I also need more people testing the three releases I already made. Of course 0.8.95 is the most important one, so report bugs in 0.8.95 so that I can release a really rock solid Plasma NM 0.9.0.

Sunday, October 23, 2011

Plasma NM: master branch

I have just converted master branch to contain the Plasma NM code for NM-0.9 ported to libnm-qt and libmm-qt. The branch compiles but I have not tested it yet, I will do it tomorrow (it's very late at night here in Brasil).

Anybody willing to help to stabilize this version do the following:

1. Compile libmm-qt and libnm-qt in this order (libmm-qt is a dependency of libnm-qt). Update 27/10/2011: read new instructions:

. git clone git://
. mkdir libnm-qt/{libnm-qt_build,libmm-qt_build}
. cd libnm-qt/libmm-qt_build
. cmake -DCMAKE_INSTALL_PREFIX=/usr ../libmm-qt
. make && make install

. cd ../libnm-qt_build
. cmake -DCMAKE_INSTALL_PREFIX=/usr ../libnm-qt
. make && make install

2. Compile Plasma NM's master branch:

. git clone git://
. mkdir networkmanagement_build
. cd networkmanagement_build
. cmake -DCMAKE_INSTALL_PREFIX=/usr ../networkmanagement
. make && make install

Have fun... or not :-)

Saturday, October 22, 2011

Plasma NM 0.8.90

New version after the first release:

Plasma NM 0.8.90

MD5Sum: 25cfce5072bf0658a2b33b76d2df80b5
SHA1Sum: 9336049eb00f5e4fe7434e710eeb0bdfc22e0984

No usability changes yet. Here is the changelog:

. fix crash in the plasmoid if kded4 crashes or restarts.
. prevent crash when stopping NetworkManager.
. fix updating the last used timestamp.
283776: Make Network Manager show signal strength in system tray also for mobile broadband connections.

. make changing connection item's font on activation state change work again.
283663: fix status tray strength indicator does not update when network manager extender is opened.
283647: use QIntValidator instead of inputmask to make the pin dialog prettier.
283720: fix GSM signal strengh position in connection list and add tooltip for it.
283583: make OpenConnect VPN plugin optional.
. fix some translatable messages.

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

ast bs ca ca@valencia cs da de el en_GB es et fr hr hu it km ko lt nb nds nl pa pl pt pt_BR ro ru sl sv tr uk zh_TW

Plasma NM: what is going on (libnm-qt and libmm-qt)

As I wrote during the last Solid Sprint we are working to bring libnm-qt and libmm-qt to Plasma NM. Libnm-qt is a Qt-only  wrapper around NetworkManager's API and DBus interface. Libmm-qt is the same for ModemManager's DBus interface. Both libraries were created by Will Stephenson for NetworkManager 0.8 and ModemManager 0.4. Ilia Kats ported libnm-qt to NetworkManager 0.9 API during the Sprint. Thanks to both for working on that.

This week I have started to port Plasma NM to libnm-qt, I had to do some changes in libnm-qt and libmm-qt to allow Plasma NM to compile against it, nothing that special. There is still a long road to go, according to cmake I can compile about 31% of Plasma NM's +57K lines source code, not counting the auto-generated .cpp and .h, nor the .xml files used to generate them. Some parts of Plasma NM are going to be refactored since libnm-qt implements them itself. Fortunately, that also means Plasma NM's source code is going to shrink a bit.

libnm-qt is basically the Solid's NM backend (networkmanagement/solidcontrolfuture/solid/networkmanager-0.9) refactored to work as a public library instead of a private backend of networkmanagement/solidcontrolfuture/libs/solid/control/network*. The same is true for libmm-qt, kde-workspace/solid/modemmanager-0.4 and kde-workspace/libs/solid/control/modem*. All this means we are finally getting rid of Solid::Control classes (a goal from last year's Solid Sprint). KDE SC 4.8.0 is not going to use Solid::Control anymore, but libnm-qt and libmm-qt are going to be dependencies for any KDE program that needs to list network interfaces (kinfocenter for example). Update 23/10: removing Solid::Control::Network* now would also remove part of Wicd's support, so for now I will not remove Solid::Control until we figure out a way to support NetworkManager, Wicd and possibly Connman.

The final goal with libnm-qt and libmm-qt is to move than to NetworkManager's repository so that NM guys can help to maintain them. That is for next year, probably. We still need to get the libraries ready before that happens.

Now applications can retrieve network status (online, offline) using either kded's networkstatus module, which does not depend on libnm-qt and works for NetworkManager and Wicd, or libnm-qt.

You can find both libnm-qt and libmm-qt in git:// Be warned that sometimes I do break their ABI.

I am also going to release Plasma NM 0.8.90 (0.9.0_rc1) today. I am just waiting for the tar bal to reach Stay tuned for the announcement.

So that is what is happening in KDE's Network Management front :-)

Thursday, October 13, 2011

Plasma NM: bugs closed after 4.7.1

I almost forgot to post the bugs fixed since my last post. This list covers bugs closed after 4.7.1 until the release of 0.8.80 (AKA 0.9.0_beta1):

283204: set default GSM's "password" flag to AgentOwned to prevent the password from not being saved at all and, consequently, the secrets dialog appearing at each connection attempt.
. enable autoconnect by default for WiFi connections.
. make defaultroute overlay icon really appear over the network icon in the network list.
. improve connection sorting performance.
272181: prevents wifi security icon misplacement.
. hide wifi shared connections and item if wireless is disabled.
282584: limit connection's name to 20 characters when exibiting them in connection list.

. momentously change system tray network interface to the activating interface. Turn back to the default route interface after the activating interface stops changing state. Eventually the new default route interface will be the activating interface, but if the activating fails it will likely not.
. several performance improvements in plasmoid's startup.
. use the interface with default route to update system tray's icon.
271766: fix overlay not shown when adding plasmoid.
254070: prevent two crashes due to dangling pointers when NM stops.
. fix crash in OpenConnect when trying to connect to an empty/unset host.
. rework VPN status overlay icon.
. reimplement hover events in vpnInterfaceItem to get proper highlighting of VPN connections in the UI.
249319: fix networkmanager plasmoid icons too small when in panel.
. fix resize/paint problems when Plasma NM is used on desktops instead of panels.
282282: mark some OpenConnect secrets as NotSaved, since they are changing every session.
. save/restore "Show More" button state across reboots. Also change the default state to true (or checked), which is list all networks available.
268026: show interface details instead of deactivating the connection when clicking on an active connection.
190342: enable hover effects on system tray icon.
281962, 282085: improve error message for wrong NM version.
. add wifi's band and channel info to interface details.
. fix saving secrets for system connections (they were being marked as AgentOwned).
. detect adhoc mode when creating wifi connections with networkmanagemnet_configshell.
204170: make DSL connections (PPPOE) work. Still needs improvements.
. improve NM version dectection during compilation.
. fix crash when suspending with wifi enabled and afterwards resuming with wifi disabled.

Resuming there are 3 crash fixes, 11 bug fixes and 13 improvements. The, not yet released, 0.8.81 is going to include more small improvents and more complete translations, which are already available if you compile branch nm09 yourself.

As I stated before, master branch is going to hold the new Plasma NM development version and not the code for NM-0.8. Please update your build system to point to branch nm08 if you want to compile Plasma NM for NM-0.8. Plasma NM for NM 0.8.x is also deprecated and unmaintained, so please upgrade to NM-0.9 and Plasma NM 0.8.80 as soon as possible.

Friday, October 7, 2011

Plasma NM: first release

Yes, that is right, we have the first release of Plasma NM and from now on there is going to be regular Plasma NM releases.

During Solid Sprint I accepted the job of being KDE's Network Management maintainer. I would like to thank Alex Fiestas and Will Stephenson (former maintainer) for trusting me for this job. One of the tasks of a maintainer is releasing software, so here it is:

MD5Sum: 0ec58c1f119d0fe2be5045c6cc1dfe9c
SHA1Sum: 4c60e4cd30f69a2bc47091b7472040e0f69c4404

0.8.80 means 0.9.0_beta1 (first beta version of Plasma NM compatible with NetworkManager-0.9.x). There are translations for 49 languages in the tar ball, though they are not 100% complete yet:

ar ast bs ca ca@valencia cs da de el en_GB eo es et fi fr ga gl hr hu is it ja km ko lt lv mai ms nb nds nl nn pa pl pt pt_BR ro ru sk sl sq sv th tr ug uk wa zh_CN zh_TW

This release is basically what is in nm09 branch as of October 01 and does not contain the usability changes I have blogged about. I plan to release 0.9.0 final with most complete translations as possible. The usability changes will probably go to 0.9.1 along with libnm-qt port.

Thursday, October 6, 2011

Solid Sprint: day 3

Well, day 2 almost did not finish for some of us since Alex Fiestas, Ilia Kats and me stayed at the office and almost did not sleep.

After long ours of work we did a break by 3:00 am and Ilia Kats showed us his skills in biology. I have not mentioned it but Ilia is finishing his bachelor course in biology and started to use Linux just one year ago :-O He explained to us the research he is doing at university about protein degradation. The chat was very interesting and Alex Fiestas and me continued asking him about other curiosities we have heard about biology. In the end we had good lessons about how proteins work, how to activate and deactivate them, how they are degradated, how to measure how much time the degradation process lasts. All this to research how we get old. If Ilia succeeds maybe we will have a fountain of youth in the future :-D Ah, we also learned (in details) how our immune system works, how vaccines force our imute system to get stronger, how the HIV virus disables it, how DNA works, what happens with our chromosomes when we get older. Very interesting indeed.

Ok, turning back to the silicon beings. I almost finished to implemented the new main window. I hope you like it:

The "Enable Networking" check box and "Show More" button are now in the system tray's right click menu. "Show More" has also been renamed to "Show unsaved networks":

And now the new (unfinished) details window:

I am going to implement the new create connection's window in the next days. Since the usability changes are big I will add then slowly to keep the current code working without losing any functionality. The idea is to hide advanced features/configurations to let the most used ones visible and simpler to use by "Penny" :-)

Another big change in Plasma NM is the replacement of Solid's NM backend by libnm-qt. Libnm-qt does not bring any user visible change, but it is important for us developers. The replacement has been postponed several times and now that Ilia made it compile against our branch nm09 I think it is the time to really finish the job and incorporate it in the "official" Plasma NM. I want to move to libnm-qt before we continue with the usability changes to make my life easier. I am being selfish here for a reason: Ilia is going to start a new semester at university, which will make me almost alone to implement the most important changes in Plasma NM. I plan to finish the transition to libnm-qt next week, then I will apply the new main window changes.

VERY IMPORTANT: currently networkmanagement's master branch holds the Plasma NM version for NM-0.8. A new branch nm08 was created and it holds the Plasma NM for NM-0.8 from now on. The master branch is going to hold the new libnm-qt when I finish to port it to nm09 code. So distributions, pay attention to this change and update your package build system to point to the correct branch.

Update: my "employer", which does not use KDE and does no pay me to work on KDE, gave me a new task with a tight schedule. I will have to postpone everything related to KDE for at least 15 days. I also need to review all the feedback I have received about the usability changes. I am going to change some things to accommodate the new ideas, so probably there will be no new Plasma NM this month.

Monday, October 3, 2011

Solid Sprint: day 2

Saturday started with us continuing the discussing about the usability changes in Plasma NM. Then we started coding :-) I worked on implementing the mock-ups and Ilia Kats worked on getting libnm-qt into shape to be committed to nm09. Since the usability and libnm-qt changes are extense I think it is best for us to finish one to concentrate on the other. Doing it in parallel would not work.

I also accepted the job of being the new Plasma NM (or Solid Network Manager) maintainer. I am even going to have a e-mail :-D More on that in the next post.

Solid Sprint: day 1

Well, I must say that I like that usability study we are doing. It has already given me good ideas on how to really improve  Plasma NM GUI. I hope the users agree with the changes we are going to implement.

Today we have spent all day in the usability experiment, we already have some mock-ups (no spoil) :-) Dario and Alex have fixed a lots of bugs in the meantime. They even recorded a showcase to show you how to use one of the new Powerdevil features (more on that when they publish the video).

Tomorrow I think we are going to start coding the usability changes. Until now we have discussed the needs of our "personas" and how to fullfill them. Tomorrow we will start doing what we hackers really like: coding :-) Stay tunned.