Posts

Showing posts with the label GNOME

GNOME+Rust Hackfest #4

Image
Last week, I had the pleasure of attending the 4th GNOME+Rust hackfest in Thessaloniki, Greece. While other folks were mainly focused on the infrastructure work , with my Rust being extremely rusty as of late, I decided to do something that tests the infra instead. More specifically, I took up on Sebastian's challenge of "Maybe someone should write a gst-inspect replacement in Rust". I am happy to report that by the end of the hackfest, I already have an implementation that covers 30% of the typical usage of gst-inspect. This implementation also comes pre-built with paging by default (which I only recently added to the current gst-inspect) and colored output ( MR on existing gst-inspect still pending review). I did run into some rather interesting issues though but there was always someone who could help me out. One specific one was on how best to pipe the output in Rust to a pager. This took more than a day and my implementation was mostly very similar to the one I

Recently in Geoclue

Image
After I started working for Collabora in April, I've finally been able to put some time on maintenance and development of Geoclue again. While I've fixed quite a few issues on the backlog, there has been some significant changes as of late, that I felt deserves some highlighting. Hence this blog post. Leaving security to where it belongs   Since people's location is a very sensitive piece of information, security of this information had been the core part of Geoclue2 design. The idea was (and still is) to only allow apps access to user's location with their explicit permission (that they could easily revoke later). When Geoclue2 was designed and then developed, we didn't have Flatpak . Surely, people were talking about the need for something like Flatpak but even with those ideas, it wasn't clear how location access will be handled. Hence we decided for geoclue to handle this itself, through an external app authorizing agent and implemented such an agent

My journey to Rust

As most folks who know me already know, I've been in love with Rust language for a few years now and in the last year I've been actively coding in Rust. I wanted to document my journey to how I came to love this programming language, in hope that it will help people to see the value Rust brings to the world of software but if not, it would be nice to have my reason documented for my own sake. When I started my professional career as a programmer 16 years ago, I knew some C, C++, Java and a bit of x86 assembly but it didn't take long before I completely forgot most of what I knew of C++ and Java, and completely focused on C. There were a few difference reasons that contributed to that: Working with very limited embedded systems (I'm talking 8051 ) at that time, I quickly became obsessed with performance and C was my best bet if I didn't want to write all my code in assembly. Shortly before I graduated, I got involved in GStreamer project and beca

GNOME ❤ Rust Hackfest in Mexico

Image
While I'm known as a Vala fanboy in GNOME, I've tried to stress time and again that I see Vala as more a practical solution than an ideal one. "Safe programming" has always been something that intrigued me, having dealt with numerous crashes and other hard-to-debug runtime issues in the past. So when I first heard of Rust some years back, it got me super excited but it was not exactly stable  and there was no integration with GNOME libraries or D-Bus and hence it was not at all a viable option for developing desktop code. Lately (in past 2 years) things have significantly changed. Not only we have Rust 1.0 but we also have crates that provide integration with GNOME libraries and D-Bus . On top of that, some of us took steps to start converting some C code into Rust and many of us started seriously talking with Rust hackers to make Rust a first class programming language for GNOME. To make things really go foward, we decided to arrange a hackfest , which took place

Lessons on being a good maintainer

What makes for a good maintainer? Although I do not know of a definite answer to this important but vague and controversial  question, maintaining various free software projects over the last many years, I've been learning some lessons on how to strive to be a good maintainer; some self-taught through experience, some from my colleagues (especially our awesome GNOME designers) and some from my GSoC students. I wanted to share these lessons with everyone so I arranged a small BoF at GUADEC and thought it would be nice to share it on planet GNOME as well. Some points only apply to UIs here, some only to libraries (or D-Bus service or anything with a public API really) and some to any kind of project. Here goes: Only accept use cases There are no valid feature requests without a proper use case behind them. What's a proper use case you ask? In my opinion, it's based on what the user needs, rather than what they desire or think they need. "I want a button X tha

Geoclue convenience library just got even simpler

After writing the blog post about the new Geoclue convenience library , I felt that while the helper API was really simple for single-shot usage, it still wasn't as simple as it should be for most applications, that would need to monitor location updates. They'll still need to make async calls (they could do it synchronously too but that is hardly ever a good idea) to create proxy for location objects on location updates. So yesterday, I came up with even simpler API that should make interacting with Geoclue as simple as possible. I'll demonstrate through some gjs code that simply awaits for location updates forever and prints the location on console each time there is a location update: const Geoclue = imports.gi.Geoclue; const MainLoop = imports.mainloop; let onLocationUpdated = function(simple) { let location = simple.get_location (); print("Location: " + location.latitude + "," + location.longitude); }; let onSimple

New in Geoclue: Location sharing & convenience library

Apart from many fixes, Geoclue recently gained some new features as well. Sharing location from phones If you read planet GNOME , you must have seen my GSoC student, Ankit already posting about this . Basically his work enabled Geoclue to search for, and make use of any NMEA providers on the local network. The second part of this project, involved implementation of such a service for Android devices. I'm pleased that he managed to get the project working in time and even went the extra mile to fix issues with his code, after GSoC. This is useful since GPS-based location from android is almost always going to be more accurate than WiFi-based one (assuming neighbouring WiFi networks are covered by Mozilla Location Service ). This is especially useful for desktop machines since they typically do not have even WiFi hardware on them and have until now been limited to GeoIP, which at best gives city-level accurate location. This feature was included in release 2.3.0 and

Life update

Image
Like many others on planet.gnome, it seems I also don't feel like posting much on my blog any more since I post almost all major events of my life on social media (or SOME, as its for some reason now known as in Finland). To be honest, the thought usually doesn't even occur to me anymore. :( Well, anyway! Here is a brief of what's been up for the last many months: Got divorced. Yeah, not nice at all but life goes on! At least I got to keep my lovely cat. Its been almost an year (14 days less) that I moved to London. In a way it was good that I was in a new city at the time of divorce as its an opportunity to start a new life. I made some cool new friends, mostly the GNOME gang in here. London has its quirks but over all I'm pretty happy to be living here. One big issue is that most of my friends are in Finland so I miss them very much. Hopefully, in time I'll also make a lot more friends in London and also my friends from Finland will visit me too. The best thin

GUADEC

Image
So its that time of the year! GUADEC is always loads of fun and meeting all those the awesome GNOME contributors in person and listening to their exciting stories and ideas gives me a renewed sense of motivation. I have two regular talks this year: Boxes: All packed & ready to go? Geo-aware OS: Are we there yet? Apart from that I also intend to present a lightning talk titled "Examples to follow". This talk will present stories of few of our awesome GNOME contributors and what we all can learn from them.

Location hackfest 2014 report

So the Location hackfest 2014 took place at the awesome Mozilla offices in London during last weekend. Even though some of the important participants didn't manage to be physically present, enough people did: John Layt (KDE) Hanno Schlichting (Mozilla) Mattias Bengtsson (GNOME) Jonas Danielsson (GNOME) and some participated remotely: Bastien Nocera (GNOME) Garvan Keeley (Mozilla) Unfortunately Aaron McCarthy of Jolla couldn't attend remotely either as he lives in a very incompatible timezone (AU) but we had a lot of productive discussion with him through email that still continues. Some very fruitful discussions we had: Why Mozilla doesn't make wifi data it gathers for its location service , available for everyone to download? Hanno explained in great detail how making this data available would seriously compromise privacy and even safety of people. One good example given was someone getting out of an abusive relationship and not wanting to be traceable by the

Berlin, DX hackfest, Boxes, rain & sunshine

Image
I just flew back from Berlin where I spent the last week, mainly to participate in the GNOME Developer Experience hackfest . As you can see from blog posts from other awesome gnomies , the hackfest was a pretty big success. I focused on the use of virtual machines (as thats right up my alley) for making application development as easy as possible. I talked to Christian , who has been working on an IDE for GNOME about his idea of a simulator VM which allows the developer to quickly test their app in a pristine environment. We discussed if and how Boxes can be involved. After some discussion we decided that we probably don't want to use Boxes but rather create another binary that re-uses the existing virtualization infrastructure: libvirt, qemu, spice (and maybe libosinfo) etc. Another way to make GNOME development easy through VM would be what we already have on a very crude level: Distribution of ready-made VMs with all the development environment setup. Continuous alre

Location hackfest

Image
I'm organising a hackfest in London from May 23 to 25 2014. The plan is to improve our location-related components and to get them useful to other OSs: KDE , Jolla and hopefully also Ubuntu phone . If you are (or want to) doing anything related to location and want to attend, please do add yourself to wikipage as soon as possible so I can notify our hosts if we'd need a bigger room. Oh and if you need a place to stay, do contact me! I'm thankful to awesome Mozilla folks for hosting this event and providing an awesome open geolocation service to everyone.

Boxes 3.12

Image
I just rolled out Boxes 3.11.92 , which is going to become 3.12 in a week. Apart from lots of fixes and minor improvements like addition of keyboard shortcuts for improved accessibility for example, there are some note worthy changes against 3.10: Dropped use of clutter and clutter-gtk: While it was a good idea to mix gtk+ and clutter at the beginning of the project to make most of the animations and transparency controls possible, Gtk+ gained new API over last few years to make most of what Boxes needed, possible. So I decided to attempt to remove clutter* from the picture and I'm glad to report that my attempt was a success. This means: Less animations: Some of the animations we had are still not possible with Gtk+ (at least not in any easy/nice way) so they had to be dropped but they are nothing really essential to how Boxes work and were only good for impressing first time users. I'm talking about box thumbnail flying around the window for transitions between d

Geoclue 2.1.1

Image
I just rolled out Geoclue 2.1.1 ! Since my last post with Geoclue update, there has been lots of changes. You can find a list of all the changes here but here are the highlights: Modem geolocation: If you got a 3GPP modem, geoclue will now be able to use that to locate you (with neighborhood-level accuracy) using opencellid.org . Additionally if your modem has GPS capability, geoclue can use that as well and as you know GPS is the most reliable geolocation source. One issue with GPS currently is that it takes a while before it can get a lock on and reason for that is that we currently have no support for A-GPS . I'll be talking with Aleksander Morgado during the weekend about how we can add that support but if I've understood correctly, it will need more work in ModemManager than geoclue now that it has all these other sources. Geoclue locating me using 3GPP source WiFi geolocation: In my last relevant blog post, I mentioned that we'll be implementing this

GNOME 3.10, 3.12 and me

Image
Wow! Its been months since I last blogged. I have a good excuse and a bad one. The good one is that I've been extremely busy with trying to get some of things ready for GNOME 3.10. The bad one is that w/ me sharing all important events on all 3 major social networks, I don't feel too motivated to put all those into blog posts (yes, I'm very lazy). As you probably already know, I've been working on Maps, geolocation and geocoding apart from Boxes in 3.9 development cycle. Although there is still a lot of work to do in all these, I'm really happy with what we achieved in a short amount of time: Maps : There was  desire and design page for a map application for GNOME but I didn't see any implementation. I looked around and found out that  Mattias Bengtsson had already a repository so I helped him start the project. Currently it only allows you to some basic things you expect from a map application, like searching for places and finding your location but f

Last week in Gothenburg

Image
Just like every year, I'm a mentor in Google Summer of Code 2013. This year I'm mentoring two students: Mattias Bengtsson , who will be working on implmenting route search in Maps . Since the Maps project was actually started by Mattias himself before he even thought of SoC and he has been working on maps (in general) as his fulltime job for 2 years now, I feel very confident about him being able to deliver. Kalev Lember , who will be working on implementing the new date&time panel in GNOME control center. Kalev has been contributing to different GNOME projects and has been very active in Fedora packaging business. Having had the pleasure of pair programming with him last week, I feel very confident about him delivering his project as well. So I got two awesome students, what could be better? There is the coincidence that both of them are located in ̶G̶o̶t̶h̶a̶m̶ ̶C̶i̶t̶y̶ Gothenburg, the very same city where one of our designers, Andreas Nilsson lives in. Since

New in Boxes 3.8

Image
We just rolled out Boxes 3.7.92 and have now entered code freeze. This means that apart from translations and doc updates, Boxes is ready for the stable 3.8 release (due next Monday). So whats new you ask? Since Boxes 3.6, we have been hard at work, making Boxes an app that is so awesome that it makes you want to use virtual machines if you are not already. :) Boxes is now a lot more reliable, has improved and more impressive UI and has cool new features: Add USB redirection support in new VMs and option to add it into existing VMs. i-e You can use your USB devices (camera, flash drive etc) plugged into host from the guest operating system. Smartcard support . This means if you have an appropriate reader device, you can use that to read information from your smart cards (credit/bank cards etc) from your virtual machine boxes. Automatically download and installation of all virtio and QXL drivers, and spice-vdagent as part of Windows XP and Windows 7 express installati