Just a small update to tell everyone that I’ve joined Blue Systems and will be working on Kubuntu and KDE full time!
I’m looking out for a job, something that involves a combination of one or more of the following : Qt, KDE, VoIP (NAT traversal), and K/Ubuntu (Debian packaging). Feel free to contact me if you know of anything at rohan16garg AT gmail DOT com.
If you’re coming to Akademy, even better, you can meet me in person!
It’s been a long time since I blogged, primarily because I was busy with college stuff and working on a couple of cool projects. Now that I have some spare time, I can talk about some of the stuff I’ve done over the past 7-8 months.
At the Desktop Summit last year, George K. from the Telepathy team introduced me to Robert McQueen (A huge thank you! to George K.). I expressed my desire to intern at Collabora and Robert suggested a couple of projects, and libnice (A NAT Traversal library) piqued my interest.
As part of my internship at Collabora I worked on implementing ‘Dribble Mode’ in libnice. Now, I had absolutely no idea about NAT Traversal and had never worked with GLib, which made all this even more exciting!
Without going into too much detail (I’ll do a whole blog post about NAT traversal), dribble mode primarily works by allowing libnice to recieve remote candidates (candidates can be thought of as IP addresses, but that’s oversimplifying the concept of a candidate) while gathering local candidates. Implementing this was pretty trivial, but reading the STUN and ICE RFC’s to understand how NAT traversal works and familiarizing myself with the codebase took most of the time. Kudos to Youness for patiently explaining me what goes where!
Working with data packets and watching STUN requests/responses whiz by in wireshark was awesome to say the least.
I also faced a couple of hurdles in the beginning because the GLib binaries I was using were too new and the API had changed (I was using version 2.32 while nice used the 2.31 API) . So, after ifdef’ing some tests and code inside libnice, I managed to compile it.
(A huge help with fixing some of the broken code was clang, it throws awesome and pretty compile errors)
As of today, I have an outstanding merge request for this feature. Youness seems to be really busy, but I’ll make sure that this feature lands in the next release of libnice.
But, what does this mean for the average user? The biggest advantage that dribble mode offers is that two peers can start streaming data as soon as they have a working candidate pair, no need to wait for the other end to finish gathering it’s candidates. This means the frontend can start transmitting data even more quickly than before.
Project Neon has now reached a point where we can simply lay back and watch Launchpad delivering KDE goodness from git to end users. Something that was requested recently was VM builds for Neon. We’re working on that, and while we have the infrastructure to distribute the images setup (automated scripts to build and deploy images using Amazon S3) , we’re still having some issues with getting the config files just right to make sure that KDE starts up directly on boot.
These VM images should be helpful for people who want to try out new feature X on the latest and greatest KDE version but have a different OS/distro. We hope users will be able to find new and innovative uses for the VM images .
SyncEvolution, KDE and Synq
This is something that I have not talked about for quite a while, primarily because it was a bit hard to set up and getting configs right was a bit of a problem in my UI. However, with the new SyncEvolution release (1.2.99), everything (with the exception of SyncML with Google Contacts) works as expected, from the command line. I’m going to do a tech preview of my UI for SyncEvolution at the WebAccounts BoF and release my code right before Akademy ends.
My UI currently only supports SyncML templates, since KDE already has good DAV Groupware support. ActiveSync support is something that I’m investigating at the moment.
Oh how I absolutely love the technology behind VoIP calls. Peer to Peer communication is something I’m very passionate about, which is why I’m going to actively write more features for KDE Telepathy Call UI. A couple of things that I implemented over the last couple of weeks are Echo Cancellation and respecting the user’s preferences of webcam’s in Phonon.
As of right now echo cancellation is only supported for pulse sources and sinks. You can get this feature from either ktp-call-ui master or the 0.4 branch where it has been backported.
The Call UI also respects the user’s preference of webcams if the user has multiple webcam’s. Preferences can be configured in the “Multimedia” module in “System Settings”.
I also have a working implementation of holding calls in one of my personal clones, but hasn’t been merged yet because I have yet to figure out a way to display error messages to the user if holding the call fails. One of the discussions that I want to have at the KDE Telepathy BoF is about the future of P2P VoIP in KDE.
I’m also going to implement App Indicator support for the text-ui, just need to talk to Aurélien Gâteau about the implementation details at Akademy .
Last, but not the least, I’m coming to Akademy! Thanks to the e.V. for sponsoring me this year, I’m mostly interested in attending BoF’s such as the KDE Telepathy BoF, the KDE Author’s BoF and the WebAccounts BoF. I’ll also attend the QML workshop by KDAB and pick up some QML skillz.
KDE was selected for the awesome KDE Doc Camp Sprint here in Mountain View. Our primary aim is to write a beginner’s guide to KDE Development. The booking is coming along quite nicely, we have fleshed out a table of contents and a couple of chapters.
Andy Oram from O’Reilly Media is helping us with the book and a big thanks to him for reviewing all our work and making corrections.
Update 1 : Team members include myself, Karan , Supreet & Valorie. The book itself will go into publishing via lulu , so you can buy the actual hard copy of the book. All proceeds from the sales will go to the KDE e.V.
Phew, what a week, I’m so glad it’s over. To begin with, I had exams this entire week, which essentially meant I could not contribute to either KDE or Kubuntu , and seeing how I absolutely hate coursework, it felt like an eternity
But, at the end of the week, I started working on a couple of things that I targeted to complete before the weekend ended ( yeah, I find coding helps me relieve stress, weird ) . So, I started off by packaging a couple of things for Kubuntu, for eg. digikam 2.1.1 ( Landing soon in Oneiric ! )
Next up was Telepathy KDE, the awesome guys who are working hard to bring a new collaborative framework to KDE, since they had a sprint going on in Cambridge ( which i could not attend due to these darned exams ) , I got super charged by the constant stream of Planet KDE posts and bug mail ( a ton of bug mail at that ) and tried to finish off this awesome feature which allows you to save custom presence messages. I had no knowledge of KConfigEntry and after fiddling around a bit, I finally implemented everything. Only 2 bugs need to be sorted out and then i’ll be putting them up on the KDE Review Board for merging. Here’s a screenshot of what the feature looks like :
I also managed to set the currently selected status as Bold + Italicized, so that’s going to be released as a part of the 0.2 release.
And last but most certainly not the least me and Harald started implementing a iCal file parser in Qt. It was loads of fun and the code can be found here on my github repository. The aim is to write a QML frontend to parse UDS iCal files and make a frontend in QML that displays the UDS Schedule. The parser still has a long way to go, but for now, it gets the job done. It can also be used for other stuff that i leave up to your imagination
I also started reading the ICE RFC because I recently got introduced to NAT traversal and found it to be quite fascinating. The RFC itself is quite exhaustive and I probably won’t be able to finish it before the end of the month.
Oh, we were also hit by an earthquake a couple of hours ago, I couldn’t even feel it whereas the media is making a big hype about it here, there was a similar incidence a couple of weeks back as well, another earthquake, and that was the one I could actually feel.
So, that was my week, how did yours go?
During conf.kde.in Dinesh introduced me to SyncEvolution, a tool that you can use to synchronize your PIM data, i was quite impressed with the tool but was quite annoyed by the fact that it had no KDE frontend to add a config, i had to use the command line in order to manually configure each and every account painstakingly.
Dinesh helped me quite a lot after that, helping me fix some problems with my configs and we even managed to do a sync of our contacts over the internet. So far so good, fast forward a couple of weeks just before GSoC, Dinesh told me that i should apply as a participant this year and make a frontend for SyncEvolution and i personally thought it was a awesome idea!
The idea got selected in the final 51 and finally after 13 weeks of coding, wrestling with the DBus server and some initial problems with the figuring out the correct key value pairs, i was on my way to making the first objective of my GSoC proposal, a KConfigModule.
- KConfigModule to configure your SyncEvolution accounts
The KConfigModule is central to my GSoC project, it allows you to add a SyncEvolution account. You can also pass a bluetooth MAC address to the KCM and it will filter the list of available profiles based on the MAC address.
- A QML Plasmoid which lists your SyncEvolution profiles
The QML Plasmoid lists your configured SyncEvolution profiles and when you click a profile, it even starts a sync!
- A KStatusNotifierItem
A system tray entry that again lists all your configured accounts and starts a sync when you click on a profile, even has a entry to configure a new SyncEvolution account.
The entire thing needs a bit of a brush up, some small code optimization’s and stuff, so you can expect a full blown project repository soon!
I would also like to thank Dinesh for putting up with my silly questions , Lydia for managing a ton of students in both SoK and GSoC and the entire KDE Community for this wonderful opportunity, i’ll be sticking around hacking away on KDE one bit at a time.
PS : Integration with bluedevil is also on its way
Hello there! Thanks to the KDE e.V i’m in Berlin attending the Desktop Summit! It’s absolutely great to meet developers and i was especially thrilled to meet Patrick Ohly who works on SyncEvolution, Sascha Peilicke and the Telepathy KDE guys!
On a side note, I will probably have an announcement on the progress on my GSoC project by the end of the Desktop Summit
Hi there! This is my first post on the planets ( Ubuntu and KDE ), so I’ll be a bit surprised if this works the first time.
I’m Rohan Garg, a Kubuntu and KDE contributor. I also am the co maintainer for the awesome Project Neon and a GSoC participant this year, so expect quite a lot of posts on that as well. Apart from that, i mostly spend my time fixing up whatever i think needs fixing in KDE and Kubuntu in general. My main area of interest in KDE is Telepathy KDE which is an emerging new project to integrate IM and collaboration features into KDE .
On another note, my GSoC proposal this year focuses on bringing a GUI for PIM data sync to KDE using syncEvolution , which provides a SyncML framework to build clients or servers. My mentor is of course, the awesome Dinesh Manajipet who fixed the Akonadi backend for syncEvolution last year.
Basically syncEvolution provides you with a way to sync your PIM data from say, a Google Account or a Nokia Ovi Store account OR even a Smart Phone/Mobile Phone* ( many other configurations are available ) into your KDE Address book and vice versa.
On the Kubuntu front we have an action packed release cycle with a new package manager ( Muon replacing KPackageKit ), a focus on improving Kubuntu on ARM and touchscreen devices ( as Harald Sitter documents it in this blog post ) and loads of other stuff!
This post is getting a bit long for a ‘Hello Planets’ post so I’ll be doing a separate post for each of the projects I’m involved in, in a couple of days
In the end, all I would like to say is this :
* Conditions Apply ( depends on what phone we are talking about, won’t work on a Nokia 1100 for example )
Thanks to sheytan for the artwork, you rock my friend.