Hurray! It’s finally out: NetworkManager 0.9. Thanks to a ton of help from almost 150 contributors and countless testers we’ve reached a new level of awesome. Let’s drop some recap on y’all:
Fast User Switching
This release debuts full support for fast user switching, a long-requested feature that makes the networking experience on multi-user computers butter-smooth. As a result of the simplified 0.9 architecture, each user gets their own network applet and each applet can control networking independently, provided that user has permissions to do so. If you switch and the new active user doesn’t have permissions for a connection, it’s terminated. It’s as simple as that and works just like you’d expect.
Optimized WiFi Roaming
When connected to a large unified WiFi network, like a workplace, university, or hotel, NetworkManager 0.9 enhances roaming behavior as you move between locations. By using the background scanning and nl80211 features in wpa_supplicant 0.7 and later, you’ll notice fewer drops in connectivity and better signal quality in large networks. Most kernel drivers will now provide automatic updates of new access points and enhanced connection quality reporting, allowing wpa_supplicant to quickly roam to the best access point when the current access point’s quality degrades and not before. Yay! Fewer dropped frames when you’re watching the YouTube Top 100.
Are you one of the 70 million and growing WiMAX users? Got an Intel WiMAX card in your laptop? Great! NetworkManager 0.9 lets you jump on blazing fast WiMAX speeds while you’re on the go. Put that hardware to work: simply pick your provider from the menu, and you’ll be connected automatically when WiMAX is on.
Wait, you haven’t taught little Tommy the value of hard-earned cash? Well until you do, you can restrict your metered 3G to everyone but Tommy so he doesn’t run up the bill playing stupid Flash games or poke around with your work email over the VPN. Or if you’re a sysadmin, you can roll out the same network configuration to multiple users and be sure that unauthorized users can’t connect to networks they shouldn’t be able to. The combination of connection permissions and flexible PolicyKit-based authorization lets you manage your computer the way you want.
No longer do we have multiple settings services storing information in different formats and locations. Instead, all network connection information is stored by NetworkManager itself leading to faster network connections and simpler configuration. Applications now have one place to look for network configuration instead of two; one place to update instead of two; one place to monitor for changes instead of two; you get the picture. More features in half the code, yo.
Passwords for any connection can now be stored securely in each user’s session or in privileged system connection storage. If you’re a bit paranoid you can choose to enter any password every time you connect instead of saving it. For system administrators this means you can have one connection for all users even if each user’s password is different or they use On-Time-Pad tokens. By default sensitive secrets (like VPN and 802.1x passwords) are stored in the user’s session while generic ones (like WiFi passphrases, etc) are stored system-wide to balance privacy and usability. If you’ve got a different idea of balance, it’s trivial to open it up or lock it down just as much as you like. If you’re on a mobile device and you just don’t care, you can leave everything to NetworkManager and ignore user sessions completely.
Simplified D-Bus API
Consolidation of the API makes it radically simpler for applications to respond to network changes, be smarter about what networks you’re connected to, and how you’re connected to them. It’s trivial to figure out if you’re at home or at work and to do the right thing, so now there’s really no excuse to make your application do what your users expect. And it’s easier to write cool new network applets and configuration UI too. Go wild. Make your apps sing.
const NMClient = imports.gi.NMClient; client = NMClient.Client.new(); if (client.state == NetworkManager.State.CONNECTED_GLOBAL) print "You're connected!"
Developers and Distros
Because it’s a change in D-Bus and libnm-glib API, we’ve prepared a migration guide for developers. If your app just cares about whether you’re connected to the network and how, here are some example patches. Distro packagers should check for the latest versions of chat, backup, browser, mail, etc programs since they probably have had NM 0.9 support for months. As always, there’s a bunch of developer information and API documentation on the website and wiki. If you don’t find what you’re looking for, tell us how to improve!
120 Proof for the Future
But this much awesome just isn’t enough. Always looking forward, NetworkManager is primed for great new features like connectivity detection, captive portal auto-login, network zones, automatic firewall and proxy management, new hardware support, and more. As a result of the API cleanup done for 0.9, NM is ready for the next wave of great features that will actually make your life better. A faster, more robust release process will ensure these features get to you more quickly. If we’ve done our job, you won’t even notice that NetworkManager is there; but it will be, saving the planet one network at a time.