Showing posts with label GNOME. Show all posts
Showing posts with label GNOME. Show all posts

Sunday, December 8, 2013

Tips for newcomers!

I composed a journal entry for the GNOME Journal sometime in June of 2011 but since the journal seems unrevivably dead, I thought, it's a good idea to share it on my blog.

Now that FOSS Outreach Program for Women internships is at it's verge of its action, what better time would it have been for this post to come.

Here it goes:

Becoming A New Contributor (Lessons from Empathy)

GNOME+Ubuntu was the first desktop and OS combo I ever used since installing the first linux distribution on my computer. GNOME made my transition from Windows very simple. As I explored more of it, I started to love the flexibility Linux provides and decided never to go back to the world of Windows which had always been hard on pocket. GNOME was my catalyst for this change!
Contributing to an Open Source project is more of a passion to learn and grow in an environment where all doors to knowledge are inherently open, rather than a compulsary chore that you are bound to complete in a set time duration. A community where everyone is willing to share his/her knowledge with you, without expecting anything in return, becomes an abundant, friendly sea which you are free to explore and collect the best of the pearls from, as you get to implement the aggregated knowledge mixed with your own skills and creative ideas and receive appreciation for every little effort of yours! The GNOME community is one such community I have witnessed :)

Getting started is the hardest part in any new endeavour. For a developer, the understanding of the development environment, having sound grasp of the developer tools and understanding the underlying APIs is what will lay the foundation for your contributions. The best way to learn them in fun manner is to exercise with them and to explore them as their need arises! GNOME's outreach program for Women and Google's Summer of Code are excellent programmes with which you can get in touch with experienced mentors who will help you overcome all sorts of fears of working on large projects with lines of code in some tens of thousands, and will be having a to-the-point answer to most of your queries. Also you'll simultaneously achieve a decent amount of stipend for your hard-work in return!
GNOME contribution becomes very easy for a FOSS enthusiast who uses it and takes it in high regard. You can contribute in many ways irrespective of you having a technical background. Contributions to GNOME can come in any of the designing, developing, documentating or marketing forms. I chose development simply as this was the most intutive way for me. I used to be just a daily user once. Slowly, I began reporting bugs as I experienced them and placing my desired feature for improvisation of applications I used and cared about. I also remember acting as a bugsquadder for a while.. And one fine day (which barely marked five months of first installing linux on my machine), I builded Empathy from source (thanks to Danielle and jhbuild :). It was tough for the first time and I started to code and debug using the Eclipse CDT IDE instead of using the in-built development environment Linux offers; I wish I had worked with "Beginning Linux Programming" by Niel Mathew and Richard Stones[1] or something similar beforehand! This book will prove an excellent reference if you are new at developing in Linux environment and want to boost up your development time through the fast and efficient tools your Linux distro has in store for you. After going through this, you will know how to be sure that your code is lint free and contains no memory leaks. My first developer contributions began with introducing improvements to my favorite application in GNOME- Empathy[2] which is mostly written in C programming language.

The foremost thing to begin is understanding the Git version controlling system[3] (GNOME uses that as do many worthy projects which you admire and use including the Linux kernel) which would be easy for anyone who had used any version controlling system in past (was not the case with me though). Next comes the APIs which the GNOME applications use. Most ubiquitous ones being, the GTK+ user interface API [4] and the core, GLib[5] and GObject[6] APIs. The An excellent mention over here would be the Andrew Krause's "Foundations of GTK+ development"[7]. For working on Empathy particularly, one has to understand the Telepathy specifications[8] aided with the Telepathy Developer's manual[9]. Yes they are huge but the approach should never be to understand all at once (I still keep unrolling them as need arises and when I feel like contributing more :).

People get to learn a lot with examples and I acknowledge the wealthiness of apt illustrations in almost all the important APIs you would need getting started ensuring a steep learning curve. To aid this, I also used to look up alternative full working examples for instance one might seek Tim-Philipp Müller's tutorial on GTK+ 2.0 TreeView[10] (you are right, I didn't came across the "Foundations of FTK+ development" till then).

The phase when I got involved in GNOME as a developer was a rocky one. GNOME was transitioning from version 2.32 to 3.0 and so were the many underlying core APIs. GTK 2.0 to 3.0 transition infused a series of API and ABI breaks rendering all applications built on top of it unbuildable and the developers were usually found adapting to the changes for most of the time. Albeit this, my starting was a lot eased with GNOME's Outreach Program for Women Internships 2010 and the supporting hand of an experienced Empathy and Telepathy developer, Danielle Madeley, who was my mentor. She was there to help me out whenever I got stuck and she is always ready to help even now! See how good and welcoming people of this community are! (One of the reasons I love GNOME so much! :)

Empathy is a multi-protocol messaging client which offers one-to-one and multi-user text chats and one-to-one voice and video calls over supporting protocols. At the first view of Empathy's code, nothing seemed familier to me except the C language constructs. I was clueless about how the pieces were put together. The overall design was utterly uncomprehendable with over 96k lines of code increasing at a tremendous rate. Now with huge applications like this, getting to know the entire application is not possible in a short duration if one has to be immediately productive so I decided to maintain my focus on multi-user chat features and bugs for the internship duration. Having sound knowledge of object oriented systems helps and with a little understanding of GObject one can begin to relate things, associate them and see how data flows among modules. Due to its object-oriented design, Empathy has all the advantages of any modular piece of work just like any other project based on GTK. Each file is a single class having certain set of private encapsulated data it works upon, and only a required subset of the data is accessible to other "classes" by means of public getter and setter "methods" while abstracting other data. Classes inherit other GObject classes and implement GObject interfaces. C immitating C++ ! Sounds cool, doesn't it? I was immediately a fan of GObject and its umbrella- generic C library, GLib, which besides Empathy is used by many other GNOME applications.

Owing to the fact that Empathy makes use of a lot of open source projects and libraries, one might wonder how can anyone actually begin to work without spending days of learning on it. The answer to it is Devhelp[11], a GTK+/GNOME browser for API documentation. It works natively with a library's gtk-doc generated documentation. It has this extremely useful search tool using which you can find the exact class/constant/function/signal you are looking for, almost instantly, for say, implementing some new feature. One easy way to keep devhelp updated with the latest documentation is to build the latest versions of libraries with "--enable-gtk-doc" option before installing and modifying the XDG_DATA_DIRS environment variable to include the "library_install_prefix/share" path before launching devhelp. Another useful tool is Git's grep tool using which you can locate the exact line of code you want to be at in a snap! So no more getting lost in the maze-like repository! Debugging and tracking sessions make one learn a lot! Among others, for debugging solely I got to experience new and useful tools like D-Feet[12], the D-Bus debugging tool to check values returned by methods on system/session buses and Wireshark[13] to monitor packets sent to and received from a network. Knowledge of these makes a prolific developer.

The work I completed under internship spanned a wide range of bugs the details of which have nicely been listed in my blog-posts[14] between December 2010 and March 2011. You can also track them from the slides of my talk titled "Contributions made by a newbie to the free desktop's Empathy" at GNOME.Asia Summit 2011[15]. All of my work branches have been merged upstream now and you'll be able to enjoy them in Empathy 3.2 :) Do let me know if you like and appreciate them. It keeps me motivated to contribute even more and gives me the satisfaction of impacting a large audience- the rare feeling which GNOME contributions can bring to someone!

Being a part of the GNOME community allows you to be with highly motivated people and think like them. If you are still wondering, or if there is still something stopping you from contributing, just know for once, that being here requires you to be ambitious and if you are here, you'll see yourself as a worthier person who is learning something new each day!

GNOME is lovable. GNOME reciprocates if you love it. Hope to see you soon; happy contributing!




LINKS
[1] http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764544977.html
[2] http://live.gnome.org/Empathy
[3] http://git-scm.com
[4] http://developer.gnome.org/platform-overview/stable/gtk
[5] http://developer.gnome.org/glib/stable/
[6] http://developer.gnome.org/gobject/stable/
[7] http://www.gtkbook.com/home.php
[8] http://telepathy.freedesktop.org/spec/
[9] http://telepathy.freedesktop.org/doc/book/
[10] http://scentric.net/tutorial/treeview-tutorial.html
[11] https://live.gnome.org/devhelp
[12] https://live.gnome.org/DFeet/
[13] http://www.wireshark.org/
[14] http://chandniverma.blogspot.com/
[15] https://live.gnome.org/GnomeAsia/2011Summit/Slides

Wednesday, July 31, 2013

Going on...

Ahoj Planet!

Good news is that the patches I presented in the last post have been verified and merged with a few changes:

The remove contact dialog looks like this now with the name of the group displayed-



Only one of Join and Leave chat menu-items gets displayed in the top of the 'Conversation' menu-



(and with these we move one step towards having ability to close a chat window without leaving a chat.)
Besides these, other works submitted for review are:
  • Show typing icon against composing members of a private MUC or a chat-room



  • With my patches, the search-bar will now hide itself when an action is selected from the contact-roster after search is performed. This will make it look smarter and will improve its promptness for the next search. See for yourself in action! (Bug 643183)
  • Submitted a patch to close Bug 698530 - adding contact to group does not cause them to leave Ungrouped until Empathy restart.

    There's so much to be done. Stay tuned for more polishing!

Friday, July 5, 2013

Back to shooting bugs!

I had been underground as I was not well. I was too tired and was advised rest from work.

When I came back I picked up my pending branch on telepathy-networking in gnome-chess since work begun should not be left incomplete. I realized that my branch had diverged from gnome-chess master to quite some extent :( so I decided to fix and complete that at any next stretch of peaceful time such as the GNOME India hackfest being planned. :)

Meanwhile, I'll continue with bug-fixing and triaging, since the tiniest things are also important.
I have proposed fixes for:

  • Bug 643755 - Create Join Chat and Leave chat menu items for the conversation menu in MUCs (multi-user-chats)
  • Bug 698840 - "top contacts" who are offline are incorrectly showing in Empathy's contact list
  • Bug 585440 - Deleting a contact in multiple groups (in Empathy's remove contact dialog)
                           


    I am currently looking into Bug 703487 - Show typing icon against composing members of a MUC, which was lost in obsoleting old code and needs to be redone using the new API.

Friday, March 15, 2013

Review on GNOME 3 Application Development Beginner's Guide

A couple of days ago, I got contacted by folks at Packt Publishing to provide a review about GNOME 3 Application Development Beginner's Guide, written by Mohammad Anwari who has over 13 years of experience in software development and has been working with Linux-based systems and applications in GNOME, and Qt platforms.


I haven't got a chance to peek into the chapters yet but I'll be getting a free e-book to charge my eyes from very soon. Advertisements declare about the book describing GNOME 3 development environment installation on many popular linux distributions, best-practices from mockups upto running applications, accessing data with EDS, i18n and localization, Unit testing framework in GLib, Gdk and Gtk+ and multimedia programming with GStreamer among others which seem a lot in just one place. I'll hopefully scan it soon and provide more precise reviews thereafter.

Friday, February 8, 2013

Status of GlChess in GNOME Games

A while ago, I was found working on GNOME games. GNOME Chess work is on a hault due to lack of reviews at Telepathy's end and the focus has shifted to Allan Day's designs for the control-center's Date and Time panel but the effect of my work on gnome-games module was still lacking a write-up.

The long due promotion type selection dialogs have been given the correct place in the game where they pop up right after the player has moved a pawn to the 8th rank(row). This work-branch has been merged to master and here's how it looks while playing:



So now one has to select his pawn's promotion type when required and not predict his requirements before the game begins. The corresponding setting in the preferences dialog which was also not working as expected, has been reduced in favour of this.

Thursday, September 27, 2012

GlChess and Telepathy DBus-Tube networking and the Hidden Inventor in Me


Premise

I began working on providing networking support to GNOME Games at the verge of GNOME 3.4 release. Now 3.6 release is around the corner and many people are happy about it. So am I, but more about the work I am doing and of which, sharing here with you, a glimpse. It began with a curious part of me which was left cliff-hanging and wanting to know more after a very live and exhilerating round of internship where I chose to work on Empathy- one of my favorite applications on the desktop!

I took the internships as a nudge for me to go ahead and try my luck diving into the huge pool of open-source developers I always wanted to be one of but was also a little scared of since there would have been no one to guide me or provide a walkthrough but after the internship, where I learnt equating page-turning software codes like page-turning a very interesting story-book which I always wanted to read, I understood what a blessing it was to have no one monitoring your moves! You hear of something interesting, you already know of something where you can apply this new interesting thing and VOILA! You have just created a new technology in your mind and you can create a brand new cool application based on it! All you have to do is to follow your instincts as you are totally FREE (as in freedom)!

First sight and a magnetic opportunity

So this very curious person, I, had witnessed a very powerful jumble of D-Bus and GIO - a  real-time communications service and framework named Telepathy, during her internship (back in 2011) which was perhaps some opportunist's, quite creative and apt exploitation of pending plans of DBusRemote with the added advantage of a hefty user base obtained from multiple presence and chat protocols it supports. I had no clue how I would make use of the new tool as I was glancing over this masterpiece, but I knew I wanted to know more of it!

Magically, roughly around that time, I was led to Robert Ancell's call for hackers to implement telepathy-networking for the GNOME-Games module he maintains. This required making use of telepathy's dbus-tube channels which when established with the remote contact would provide me a DBusConnection to communicate the way I want to with an application on a remote computer which your remote friend is logged in with. This technology in itself was amazing (yes, D-Bus-Remote!) and it was an awesome chance for me to satisfy my craving to explore Telepathy and to give a closer look to GNOME's nervous-system (the D-Bus messaging bus) and try my hand at a few other GNOME's latest technologies which wouldn't harm and only be additional assets to my skills.

Besides the things I have blogged about earlier, I learnt how to create libraries and use logging domains (which was very useful in debugging), write GSettings keys from multiple processes with dependency interactions in a controlled manner using delayed application, generating vapi files using gobject-introspection[1], use DBus messaging bus and export objects on it using GDBusConnection (in 3 different ways- low level method-calling and signal subscribing, higher level using Skeleton and Proxy objects, and the simplest of all, using Vala dbus-attributes which I could leverage, Vala being the language in which GlChess is mostly written and since I didn't want to create or manage another .vapi), creating asynchronous operations, creating GtkApplications from scratch and understanding their life-cycle, launching applications from code, making them handle command-line inputs in local and primary instances, parsing acceptable options using GOptionContext, creating telepathy-channels and making a tube-offer.

I hAcKeD into MissionControl (yay!!) - a daemon that is ALWAYS running on your favorite distribution with a well-known name of "org.freedesktop.Telepathy.MissionControl5" on the session bus and is the primary sense organ of the telepathy system. (If you got scared at this, rest assured, I am an ethical hacker as you'll notice if you find this interesting enough to read further!)

I also found a few bugs in telepathy-glib library, a GObject-based C binding for the Telepathy D-Bus API (which interfaces dbus-glib), which were generating a faulty telepathy-glib.vapi and thus hindering the Vala implementation I was working over, and made my debut commit (bfo bug# 55024) to it.


Opportunities exploited

I had seen that Empathy recognizes when a contact of mine has Vinagre installed on her system (and when I have Vino) and shows me an option to initiate a remote desktop session with her. I was impressed by the ability to know someone's capabilities just on the basis of what softwares (s)he has installed. Ideally I wanted something like that for games too. One should not have to run GlChess 24x7 or have it loaded in memory in order to receive chess-playing requests from online friends.

To confirm my use case, I peeked into MC-5 (mission-control-5 daemon) and found that on startup, the daemon looks for all d-bus activatable services (the ones with .service files installed in XDG_DATA_DIRS/d-bus-1/services/) and then checks which ones of those are activatable telepathy clients (ones with .client file installed in XDG_DATA_DIRS/telepathy/clients/) and registers them as activatable telepathy clients for the session. The capabilities of a contact are updated on all connection-managers at every recognition/modification of available activatable clients when MC calls.

This was cool and this was the basis behind how empathy-call works on the GNOME desktop. If you have empathy-call (UI application for handling telepathy's call channels and also a d-bus-activatable service) installed, your friends can always make a call to you which you can accept/reject. empathy-call is executed at runtime when after approval of an incoming call channel, the channel dispatcher in MC-5 wants to dispatch the channel to the call handler.

One fine day, I decided to try to fall into a need to have the above design implemented in GlChess. I knew this design would take a little more time and research on my part but I also knew that if not now, it would be implemented never! So, I started gauging the faesibility of this design and then I noticed that the design was flawed and aesthetically such an implementation of empathy-call shouldn't exist because there was no way for the advertiser of empathy-call to control his display of calling capability to his remote friends. He could only stop this advertisement by uninstalling empathy-call - that was inherently wrong. But that shouldn't stop me from implementing it and depriving users of such a cool feature! There must be a way created to make advertisement of an installed activatable service capability, to it's contacts, controlled by the user..  

(O-o-o Back in mind:  YAY!! I'll have more food for talks!)

The Hack: A roadblock cleared: That's what we have been waiting for...

...and it turned out, having this implemented wasn't very difficult! I already knew about GSettings by then and that I could easily read the serialized settings from multiple applications simultaneously. "Maybe something like a setting should suffice...", I thought to myself. I took a few Telepathy beans, a little GSettings setting sause, and shook them into a blender to create a recipe described in bfo bug# 53818. "EUREKA!!!", I yelled, while filing this feature-bug and necessity gave birth to invention! I am glad it received a positive and affirmative response from Telepathy developers and support from Robert with which GlChess is moving towards incorporating this highly sophesticated design approach to set an example and to begin a new trend for the next-generation desktop applications! It took me a registerful of notes to come uptil this level and atleast four charts to come out with this design. Developers will surely get smitten to this revolutionary design! Yeah, you are already allowed to think possibilities you can have with this!! Gnome-Shell doesn't implement it yet (it doesn't _really_ need it since it is already always running and loaded in memory throughout a user-session and wouldn't gain much with this apart from a possibility of an "advertise-call-capability" setting for example, which is also cool), nor do Empathy or Vinagre, but they are most likely the candidates which will benefit from it. This work, as a part of my telepathy-networking support suite of branches, is planned to be merged to GlChess master in 3.7 which will give it a chance to be thoroughly tested before being delivered to a release and will also provide many other desktop applications which are telepathy clients (like Empathy, GNOME Shell or Vinagre) a chance to implement this capability-advertisement-control concept, thereby finishing their implementations still-wanting attention (e.g. bgo bug# 576376) and GNOME users will experience a complete goodie package!!

Minor detours:

If you give a look at the WIP branch (or if you have already done that), you'll see that majority of the work was completed while some or the other freezes were in place. It turns out working on an intersection of multiple technologies is very tough when everything is unstable. Some of huge roadblocks and performance attenuators in my work this cycle were when I couldn't run empathy or any other application using folks after upgrading to Precise Pangola, without causing GNOME-Shell to freeze. Cause turned out to be showing signs of https://bugzilla.redhat.com/show_bug.cgi?id=760542, but on Ubuntu. I could work on Unity for a while but ultimately I had to test chat-handler launching for GNOME-Shell too and I was so badly suffering with it that I had made my mind to fix that bug (incase some of you saw me building shell out of my way and wondered what happened!). I had some folks messages in .xsession-errors just before the freeze and I hoped to get to the root cause using those. I built folks master. I tried to build GNOME-Shell master but I couldn't (no wonder - Mutter already broke its API in master) but to my relief, it turned out in the end that I could actually run my application with GNOME Shell 3.5.2 and Folks 0.7.1. But this happiness was also not long-lasting! Folks was changing very rapidly and I had to keep up with it. Games required Vala 0.15.1 and Folks was left behind, incompatible. Then folks made use of libgee-0.8 but the GNOME-Shell version I was working on made use of libgee-0.6 (which is named as gee-1.0, confusingly).

I was unable to run the newer GNOME-Shell due to: "Requiring Shell, version none: Requiring namespace 'Gee' version '0.8', but '1.0' is already loaded"

And everytime I tried to run the system-provided Gnome-Shell, I got a folks message: "Failed to reach quiescence normally (0 backends and 1 persona stores still haven't reached quiescence). Forcing IndividualAggregator quiescence due to reaching the timeout.", whenever my gnome-shell froze.

In the end, none of the folks applications ran on any window-manager including Gnome-Shell, Unity, Metacity and Compiz. To my relief, things got into a stabler mode closer to the end of the cycle and work started flourishing again... but I won't regret the delay caused by external factors since this is the prize which everyone had to pay, not just me, and this gap turned out to be a blessing where I could brainstorm and resolve a graver problem with telepathy-clients and come up with a design which would have otherwise taken a few more GNOME-years to materialize.



P.S.: This was a conceptual post.  You'll see more pictoral and diagrammatic posts in next blogging session. ;)
(Update: Added subheadings: will make locating keypoints easier in this so lo...ong post.)


Footnotes
[1] Games use a vapi file for a common support library written in C which is manually maintained by hand. I made a few additions to it but found manually editing of this file like a punishment so I generated the symbols myself and copied them to this handwritten vapi. The tool I used is secured here which may act as a live vapi generation tutorial.


Monday, April 16, 2012

GNOME.Asia Summit 2012 - Call for Participation

Hello all!

GNOME.Asia Summit is an annual conference for GNOME users and developers in Asia. The event focuses primarily on the GNOME desktop and devices that use GNOME, and also covers applications based on technologies underlying GNOME and GNOME development platform tools. It brings together the GNOME community in Asia to provide a forum for users, developers, foundation leaders, governments and businesses to discuss both the present technologies and future developments.


GNOME.Asia Summit 2012 will be the fifth Asian Summit to be held in Hong Kong and aimed at opening immense business opportunities for GNOME in Asia and create more awareness about GNOME in Asian countries.


Hong Kong Skyline



No waiting! Submit a talk now and add your name to the participants list.
If you have suggestions/ideas for BOFs/Workshops you wish to handle, send them in using the same web-form along with your details and an abstract of your idea or mail the details to organizers at asia-summit-list@gnome.org.

Know more!

Sunday, April 15, 2012

GNOME.Asia Summit 2012: Event planning

Hi there,

Being a member of GNOME.Asia committee and bearing a responsibility willingly chosen, I have been spending some time lately on gearing up planning for GNOME.Asia 2012 Summit which is going to happen in Hong Kong.

The event organizers working behind making things happen this year are few and relative newbies with little experience in organizing events at such huge scale but they are giving their best effort! If you are an innate manager with noteworthy leadership skills willing to take charge of things and be the power with yourself in terms of getting things organized then this post is aimed at you! If you are good at marketing and have a PGO blog, you are most welcome! There are a number of small tasks you can help out with too. You can be an artist, a Hong-Kong based GNOME user, a content writer, a translator, website manager or simply a fan of GNOME willing to help!

Despite of limited time and even though I will not be making it to the event this year, I have been helping out in the ways I can to make the event a success! We are looking for more cheerful volunteers (both onsite and offsite) who will be devoted to the success of the event and be committed to it until it ends!

Organization is fun when you have equally high-spirited people around you. Looking forward to more eager "Hi!"s on asia-summit-list mailing list. You sure are going to love being the force behind a great event!

Cheers!

Wednesday, March 21, 2012

GNOME 3.4 to be out within a week!

For preparation of the 3.4 release, git.gnome.org master branches have been frozen against last minute (and possibly erroneous) code alterations to save the precious stability from being hit. See release schedule.

Also did I bring to your notice a tiny API provided by our well-known pastebin?

Well, everyone who has an account there is provided a developer-key to use it. One non-pro account holder can paste as much as 512 KB of data at once. Apart from reconditioning the whole of Empathy's debugger for visible load-time improvements and introducing an "All" option in the service chooser, I used this API along with libsoup to provide a convenient toolbar button for pasting large and complex debug data into it in one go. Empathy will be shipped with a licence to use my Pastebin-API developer key in open.
Shots of how the work looks:



The better the debugger, the better the application! Try it live and do test it out thoroughly :)


My glchess-networking work will continue in a separate branch off gnome-games master.

Hooray!!! GNOME 3.4.0 will be wrapped and out within a week! (amazing isn't it: 3.4 is not yet out and they're already planning 3.6 :)


Tuesday, March 6, 2012

New things developing

[I hate procrastination. Even if I ever fall into its trap, it comes out to be beneficial at the end.]
It has been a long time since I last blogged about my work in open source.

I had mostly spend my time after coming out of my inert state (I was behind the veils partly with my beloved algorithms which I had left alone for a while) in expanding my horizons forcing myself against new things and finding myself mostly as a receptor with only inputs "ON". I had multiple projects going on simultaneously just to find myself aware when seeing anything new: seeking Bash and Make reference manuals more than ever before; teaching myself how to make full feature branches; goofing alot, literally A LOT with one bug report spanning 100 comments (which is also a perfect example evidencing changing requirements are poison), and thus learning more; adopting and experimenting with new tools; GConf/GSettings: (what on earth was that and their port: another window with a score of tabs); experimenting with Glade, a RAD tool for GTK+ interfaces; .mk files, .client, .manager, .desktop, .service and the desktop directory specification standard; installing icons and the Icon theme Specification; not to forget the DBus Specification, getting familiar with how i18n works, and many more which are not even coming to my mind right now! I apologize if you had been around and I had kept you waiting but without creating more suspense, I would like to share some cool new recent developments in my life.
  • I began working on providing networking support to gnome-games.
    It just began with an idea when I was planning to make a healthy-wealthy contribution to GNOME with the aim of putting to use what I had learnt until now and learn even more in the process. I had no clue of how I would go about it. My major hurdle was that games are written in Vala which is itself in a state of progress with very little and incomplete documentation and bindings to browse to find your way out, but with Robert Ancell's patience, things have happily began to develop. I'll soon be blogging with more on it.
  • I was given my brand new GIT developer account with my work vouched by Cassidy and now you can also contact me on vchandni@gnome.org for GNOME related issues: Thanks Cassidy and thank you Andrea Veri for setting it up for me.
  • I was made a member of the GNOME Foundation: Thanks to Marina, Fujii, Danni and Emily.
  • GNOME is being brought to Asia with the 5th Asian summit, this year in Hong Kong!

Friday, October 7, 2011

Danni, you made my day!

The grieving effect of Jobs' demise had just began to ruin my mood (he being one of my role models) when Danielle's honoring gesture made my day!

October 7th is Ada Lovelace Day. A day that showcases women in science and technology by profiling a woman technologist or scientist on your blog.

This calls me to write about an influential woman in technology I know of.
Though it won't be hard to figure out but if you ask me who is my Ada, she is-


Danielle was the one who introduced me to the FOSS developer world and continues to hold immense trust in me. An unprecedented optimist full of ideas and always ready to help. Oh she knows the Linux box inside out and has the answer to any system related issues I face ever! No doubt she loves penguins (the real ones) and is playing with them (the tux here) since the age of ten [edit: not age of ten but tenth standard] when her dad gifted her a Linux CD. She loves her work a lot and I have even caught her working on a Sunday!

She is a super skilled developer who is very patient (a rare combination because codes make people go crazy at times. ;)  When asked, how are you so patient, she says, "I also do my screaming locally, when there is no one to hear it, but occasionally my housemate."

Her hobbies are playing saxophone, photography and lately, swing dancing and playing netball too. And its worth mentioning, I have never seen a more concerned environmentalist as her before who even cares about the pests infesting her chilli plants [?].

Saturday, July 16, 2011

An Honest Declaration


I got involved with GNOME through the awesome program for Women Internships from December 2010 to March 2011. With that on end and with the fact that I had already completed my graduation I was expected to join any organization and be immediately productive. So was what I wanted to be but the "any organization" part does not suit me as I do not want to miss geniuses around me when I work in an office environment.

With the GNOME tag associated with my name, I was undoubtedly offered many positions from application to embedded development but with none I felt the level of satisfaction I got while working for GNOME. I began late compared to my more aware counterparts who started open-source contributions while still in University (and I really regret that) but I realize that to be where I want to be, there is no short-cut and I have to trace the complete path.

So, yes I want to be immediately productive and yes, I want to work with geniuses around me and to fulfill this craving of mine, I will continue providing services to GNOME as an honorary developer until I make myself worthy of being taken in by one of the many firms that have made GNOME what it is today! Although, this required me to convince a lot of people around me but I am happy that they are finally with me now respecting me and my reverberating ambitions.

Friday, May 6, 2011

Interested in starting and maintaining a GNOME user group (GUG) in your area? GNOME foundation will support you!

Hello all Brave boys and Smart Girls out there!

GNOME is a cool free desktop we all love and its always looking for smart, energetic and enthusiastic volunteers who can help in spreading word about it in various parts of the world! There is a big list of already existing GNOME User Groups but its still too small for what we have envisioned to achieve!

GNOME provides you support in your endeavor by providing you domain and monitory assistance in carrying out GNOME activities.

These links will help you kick-start and show the leader in you-

 I hope this quick list of ideas may also help you plan out your actions-
  • You should create a mailing-list on GNOME infrastructure for keeping people updated about the latest advancements and mass mailing all round the year.
  • Make a cool list of topics that you'll be covering at each get together and plan a theme or basic idea for each meet-up. You can get ideas from here.
  • You can also at times, invite an established FOSS identity which might not necessarily be part of GNOME and can get cool ideas to implement in GNOME from him or her.
  • You can definitely slowly incorporate hack-fests and documentation-fests as theme ideas provided you find people capable to take part in those.
  • Initially you may need to train a bunch of volunteers who can take care of introducing GNOME and GUG to large groups of people. They should better be clear, confident and convincing.
  • You will also need a group of technically trained people(or train them) who can identify and train potential contributors.
  • Do something that people can take back home with wellness in mind. Definitely keep some computers on which people can experience GNOME and maybe distribute a free GNOME3 CD to each member in the first get together and note their first response and suggestions to improve GNOME.
  • Keep in mind that part of the group is to involve new users and contributors and most of them might be having no idea of what GNOME is all about so you and your volunteers need to be patient in  handling them.
  • Celebrate GNOME Events :D
  • Never forget the GNOME Code of Conduct.

Rock on!

Saturday, April 9, 2011

Three Cheers for GNOME 3!!!

I am GNOME

Everyone is celebrating the GNOME 3 release with over a hundred launch parties being organized in different corners of the world. At this moment of applause, I want to extend my sincere thanks to the GNOME Foundation and the GNOME.Asia Committee for choosing India as the spot for the largest GNOME.Asia event ever! Along with the student training sessions, it has definitely sparked a lot of awareness amongst students here as can be seen from post summit follow ups answering which I have spent quite some time after returning from Bangalore.

To the students I want to say a lot of things have to be learnt and this is just the beginning. Your enthusiasm is going to guide you into being successful contributor. I have seen many of you newcomers actively showing up on IRC on #gnome-love and I want to see even more numbers and even more women contributors, at least all those students with whom I had a one-to-one talk!

Thanks to the GNOME Foundation for sponsoring me enabling me to attend it. Huge targets were achieved in a manner which was real fun! I saved a wonderful collection of memories from Bangalore hackfest and Asia Summit 2011: 


Slideshow requires Flash plugin to be installed

More of these can be found on http://www.gnome.asia/photos
For those who could not attend the summit or my talk in particular by any means, you can find my slides here.

Sunday, April 3, 2011

GNOME Asia Summit 2011 - Updates

Day 1 and 2 of the Hackfest begun from the Intel's HAL Airport Road office at Bangalore (thanks to Srinivasa for getting it arranged).
I got a surprise on the first day sent to me by Empathy maintainers, Guillaume and Xavier =)
 


Thank you both for this awing surprise! That was really motivational.

The Hackfest was kick started with a round table deciding upon the tasks to be accomplished during the five day event and ended with a wrap up of the entire day's activities done by each person to analyse the effectiveness and time utilization.

I volunteered to assist with marketing and organizing besides hacking.
In this while I had been trying to get more media contacts for interviewing our delegates and covering the event. Two of them from Linux format whom I contacted about a month ago actually arrived here on April 1. We were able to arrange discounted accommodation for them in the same hotel as where we stayed and they have been doing their job well without bothering anyone during working hours. I was made the newest addition to the GNOME Asia Organizing committee and tried to give my best to the role and provided my point of views and ideas whenever necessary, about possible ways of spreading awareness of GNOME in Asia, keeping the often overlooked facts in mind.

Hats off to the release team for worked really hard and preparing GNOME 3 ready for release ahead of time (not to mention the April Fool's prank was unexpectedly adorable ;) I had been observing the extensive amount of work a release requires and sleepless nights the release team members spent busy writing release notes.

For Empathy, I was able to begin making changes on my hugest branch for persistent chats which involved studying about Webkit and Pango. I followed up with the Usability team for their useful input on the design changes required to be done in Empathy for this and also discussed it with Allan Caeg. I reported and pushed a patch for a small MUC usability patch and with Fred Muller's help, found out two file transfer bugs in Empathy<->Pidgin interaction over which I'll be working soon after this to make him happy!

Before the summit, I got a peppy GNOME 3 T-shirt and Free Software promotional stuff including stickers I decorated my laptop with-




On April 2nd, the first day of the summit, I attended keynotes by Brian Cameron and Vincent Untz and also his next talk on Building GNOME on build service and SUSE studio which contained some notable points for me. After this, I spent some time at the help desks with students new to GNOME and Linux in general and tried to ease their Linux fear clearing their basic doubts about migrating from Windows to any Linux distribution and explaining its benefits. Tried my hands over OpenSUSE for the first time on a demonstration system and learnt about it from Manu Gupta who has been supporting it since over an year now.

I'll be giving my talk on "Contributions of a newbie to the free desktop's Empathy" tomorrow! Be sure to attend it on Track 2. Will be updating more pictures soon!



Monday, March 28, 2011

GNOME Asia Summit 2011 - Adventure Begins ;)

Hi!

Today I landed Bangalore, the venue for GNOME Asia Summit, 2011. My travel was sponsored by the GNOME Foundation. Other than Bharath Acharya, the backbone for the event, I met Srinivasa Ragavan, Pockey Lam, Vincent Untz, Andre Klapper, Frederic Peters and Frederic Muller, Allan Day, Ryan Lortie, Josselin Monette and Andreas Nilsson today! We had lunch together, walked up to a nearby mall and talked over a lot of stuff! It was fun! Hoping to meet the other Hackers and Marketing, Design and Release team members in the coming days.

GNOME Hackfest begins tomorrow. 

The week ahead is going to be busy but full of adventure! :D With lots of registrations for the summit already made and student registrations going free, a huge audience is expected for the launch party and GNOME 3 is catching the mood!


Will be adding on more related details as I get time.



Monday, March 14, 2011

Contact Blocking and Report Abuse to be available in Empathy3.0

Many users had requested this feature (bug) and it is now available for all to use.

Now Empathy supports blocking/unblocking contacts on per-user basis for connections that support contact blocking (for ex. gmail) and report abuse for connections that support this feature (though currently there are no connection managers implementing this). Danielle completed two branches for "Contact Blocking" and "Report abuse" last month and I recently re-based them to master for her which took some time since the branches had diverged  much.

Here a few snapshots of the interfaces introduced-

The Blocked Contacts can be viewed and managed with Edit->Blocked Contacts menu-item
in the main window to open up the following dialog

Blocked Contacts Dialog

...on which you can perform usual live search.

One can right click individual contacts in contacts' roster and on selecting "Remove" he'll 
notice this extra "Delete and Block" button, if supported.



The Contacts->Block Contact menu item in chat windows is a check menu-item that can be toggled


The subscription box provides a convenient way to right away block a contact without need to first add him or her.

Confirmation dialog that would pop up on each attempt of blocking a contact


On completion, Empathy was in string freeze while getting ready for release, and the ready-to-merge branch was too cool not to be available in this release, so Guillaume requested a freeze exception from the i10n team which was granted and the branch was finally merged! :)

Friday, February 25, 2011

Internship updates...

Hey people,

Didn't get chance to blog about what I had been doing lately so here's a compiled mix of it all.

Good news first:
  • Now Empathy multi-user chats are separated from the chat-room windows they are displayed in. i.e. users will be able to join/leave chats without closing the room [commit].

    I am working on the opposite i.e enabling the user to continue being connected to a chat when chat-room window has been closed (bug).

  • The /part command is working for chat-rooms and private MUCs (bug [commit])
    UPDATE: There was a small fault in part message construction in telepathy-idle. It was not sticking to correct format of PART messages as per RFC 2812 sections 2.3.1 and 2.3.2 which was preventing the full part message from being displayed to the members. It has been fixed in this bug now.

  • To prevent a user from deleting significant accounts like freenode from list of networks, a new "Reset Networks List" button was added in the IRC Network Chooser dialog (bug [commit])
New things I learnt in this phase:
  • Insight into telepathy-idle
  • Using Wireshark to monitor packets sent to and received from a network
  • Conflict resolution after rebasing.
    To help me gain more experience with conflicts, Danni has given me two massive branches to rebase.

There were some not so cool things also like, I started my work on notification for enabling/connecting a disabled/disconnected account when trying to connect to rooms affiliated to it (bug) but it eventually turned out to be blocked by this bug. There must be some comparison workaround used by Empathy to keep things working which I am yet to discover! A particular horrible thing was my hardisk snap and not having an up-to-date backup added to it but I was happy to be able to recover my data (thanks to Danni). It was another learning experience and I'll dedicate a separate post to it.

~

Gnome.Asia Summit 2011 will be held in Bangalore, India this time. I am happy to get a chance to speak about my internship experience in my talk- Contributions made by a newbie to the free desktop's "Empathy", in front of such assorted community of developers, documenters, marketing people, GNOME users and prospective contributors. I am particularly exited about getting a chance to see the biggies of this world! :D

Monday, January 24, 2011

Internship - Week 5

The much awaited "Save all' button feature of Empathy's debug window is now in a working state. :)

I started working over this one in my 'Save all' button branch as my second ever bug to be fixed for Empathy but insufficient experience in asynchronous programming and debugging caused it to stand by. This week I went back to it and with the past one month's experience, it was all play!

Here's a shot.



This "Save all" button will be useful when users face issues and are unsure of what part is causing a particular problem. It could be the connection managers, mission-control or parts of Empathy itself. So with this branch merged, instead of saving individual logs for each service selected using the service chooser, one will need to simply use this button and have a compiled log saved on disk.

I made another not much observable change in this branch too. The older save button used to fetch log messages from the model which was updated from the cache and was used to display the messages in the main view. To make both saving tasks work coherently and to avoid code reuse, I changed it to load messages directly from the cache like what our new "Save all" button does.

There was this another bug evident using telepathy-gabble 0.11.5, about which I also mentioned in my last post, where, in MUC chat window tabs the typing icon was not getting correctly updated [bug]. I begun with a patch for it but after discussing it over IRC, finally closed it as the typing icon in MUCs is no more relevant when the typing icon is displayed next to the composers now.

Featured Post

interviewBit Medium: Palindrome Partitioning II

Problem Name:  Palindrome Partitioning II Problem Description : https://www.interviewbit.com/problems/palindrome-partitioning-ii/ Problem Ap...