FUD and facts

Mono is a very controversial topic in Free software world. We have no shortage of proponents and opponents. There are people who want to clean the FOSS world by removing mono from the picture and there are developers claiming that they are comfortable with mono, so it’s fine for them to use it.

Now imagine a situation when you try to “get the facts” but the information itself is wrong? Guy Van Sanden wrote a post about Get the facts on mono which attracted a lot of comments. The follow up, Cleaning mono from your system (Ubuntu) was full of huge mistakes. If you want to spread FUD, please do it properly. As he said, entering this command

$ sudo apt-get remove –purge mono-runtime mono-common libmono0 mono libmono1.0-cil libmono2.0-cil

will clean all your sins and you will attain salvation. The catch was probably he copy-pasted from somewhere else. Just by a quick glance today morning I could make out that the whole command won’t work. There is no package named “mono”. Lower down the comments Debian/Ubuntu mono packager Jo Shields leaves a comment explaining why he is *wrong*.  mono-common too does not exist. libmono2.0-cil doesnt have any Microsoft namespaced packages. As per the description of this package

This package contains various Mono libraries for CLI 2.0:

  • Mono.CompilerServices.SymbolWriter
  • Mono.Http
  • Mono.Web
  • OpenSystem.C

Apart from that it looks like he did not even try out mononono since all the comments point it out and he actually acknowledged that it doesn’t work.

Flames

All over these years I met two kind of people who talk about Mono

  1. MONO IS GOING TO DESTROY FOSS AND LINUX. ALL MONO PACKAGES VIOLATE MICROSOFT PATENTS AND CAN KILL YOUR CAT AND WILL BLEED YOU TO DEATH
  2. Hey, are you sure all the packages/components are protected by CP? Can you provide some hints on how packaging is done to avoid or lessen the patent risks? These are the patents #xxxxx and #yyyyy which mono can possible infringe. What care can you take to avoid them?

The sad part is that most of the people I met use language 1 and their statements contains a lot of speculations and hardly any proof. Finding people of kind 2 is tough, but they are overshadowed by the people of kind 1. If you are one of the person of kind 2, come over on IRC and let’s have a sane discussion on mono based on facts and proofs rather than speculation and FUD. I would love to be influenced. By the time I simply ignore trolls of kind 1

Hate and Love

There was a time when I take any development from a critical angle.  Like many others the decision was either white or black (Love or Hate). Well, I did not spread and FUD but black-white did not last long. I gave up hating anything. Now I don’t hate any technology, any language, any library etc. I have my like and dislike which does not map to love and hate.

Due to Android-Google-Java-Oracle incident you can see people suggesting that Java is patented which people should not use it. I don’t share that armchair-advisor kind of mentality. If I want to use it, I will use it. If it’s not fit for my use, then I won’t. The would have more to do that just hating technology.

For me technology is a tool for getting my job done and making my life easier. It isn’t a religion which I need to follow. I nearly stopped caring about haters. Why? I remember once when David Siegel recalled “Haters gonna hate” in an interview.

Strong passions is fine since loving something doesn’t automatically means hating other things. There are other colours in this world apart from black and white.

Posted in Planet, Planet FLOSS India, Planet LUG Manipal, Thoughts, Ubuntu | 16 Comments

Release: Zeitgeist-sharp 0.1.0.1 “Stark”

How many of you love Tomboy? How many love Banshee? F-Spot? Some of you might not but some of you might swear by it. Yes, for people like you – how about if your favourite app is sweetened by the spoonful of zeitgeist love? After call for testing, the zeitgeist-sharp team was unable to find any major issues with the library. So, on behalf of the zeitgeist-sharp team, I am happy to announce the first release of zeitgeist-sharp 0.1.0.1 “Stark” which is the client wrapper over Zeitgeist’s DBus API.

So what does this mean? This means that sooner of later, you will see zeitgeist integration with these apps. The work is basically divided into two parts – Dataprovider plugins and Dataconsumer plugins.

Dataprovider

The word dataprovider needs no special explanation. It is basically a plugin/addon whose sole work is to “push events” in the daemon. This data is then available for different kinds of work ranging from checking history or any complex data mining activities.

Dataconsumer

It is basically those applications which consume the events pushed in the daemon. You can actually have a list of all the tracks you listened till now in decreasing order of count and also the exact time when you hit Play for that specific track. You can check when you added a track, when you deleted and a gazillion of other activities. Let your imaginations fly.

Packaging

I would like to thank Mirco Bauer(meebey) and Jo Shields(directhex). meebey was the one who did created the autoconf based build. Jo Shields is the brave man who is handling the packaging. Thanks a lot – Debian CLI Team rocks. Thanks for your efforts in packaging.

Future

My hopes from zeitgeist is really high such that you can call it unrealistic. We really need people who can write dataproviders. Here I am not calling people who any language and not just mono. If you can think/want to write a dataprovider for any app, contact us. We will guide you. It will be fun. We have bindings for mono, C/Vala and Python as of now. The java bindings is in development. If you want to contact us, please come on IRC channel #zeitgeist on Freenode and catch any of us.

  • Seif Lotfy: seif or seif_ or seiflotfy
  • Manish Sinha: m4n1sh or manish
  • Mikkel Kamstrup Erlandsen: kamstrup
  • Siegfried-Angel Gevatter Pujals: RainCT
  • Markus Korn: thekorn
  • Micheal Hruby: mhr3

UPDATE: There can be a bit of confusion in the versioning. The ABI version is at 0.1.0.1 but the release version is at 0.1.02 . As long as ABI isn’t broken release versions are fine. 0.1.0.2 has some patches against 0.1.0.1

    Posted in Linux, Planet, Planet LUG Manipal, Ubuntu, Zeitgeist | 1 Comment

    Want Zeitgeist love for Banshee/Tomboy/F-Spot ? – Call for Testing

    Introduction to Zeitgeist

    I hope many of you must have heard about Zeitgeist, an event logging framework which is becoming mature day by day. In the language of Zeitgeist developers, here is the definition

    Zeitgeist is a service which logs the users’s activities and events, anywhere from files opened to websites visited and conversations.
    It makes this information readily available for other applications to use.
    It is able to establish relationships between items based on similarity and usage patterns.

    Zeitgeist sits as a daemon and activates a Session bus (DBus) over which applications can send their events. Using a great DBus API, events can be logged, retrieved and also monitored asynchronously. If you want you can also write extensions for the daemon(like full-text-search and blacklist). It is developed using python and uses nepomuk ontologies to establish relations between various events.

    API Wrappers

    The daemon is useless if the apps dont push data into it. So, some of the developers of zeitgeist engine have a python client binding which wraps the bus and gives a higher level view of the API. Authors of Python wrapper are Seif LotfyMarkus KornSiegfried Gevatter and Mikkel Kamstrup Erlandsen.

    There is one wrapper which is complete and is called libzeitgeist. It is C/Vala binding over Zeitgeist API. It is written by Mikkel Kamstrup Erlandsen and Michal Hruby

    Are all apps written in python? Is Banshee/Tomboy/F-spot written in python? One great aspect of FOSS is that all the developers are free to choose the language and technology of their choice. Banshee/Tomboy/F-spot devs chose their technologies. The technology chosen is just a part of the reason an application can be great. The real work is in actually making a great application in which Banshee/Tomboy and F-spot devs have succeeded.

    You might be thinking that Mono apps would have had zeitgeist integration by now? The answer is sadly no. Seif Lotfy had once tried implementing Tomboy integration. The problem faced is that the API wrapping code has to be replicated in all the apps. Solution: Make it a separate library named zeitgeist-sharp

    Once the library matures, the efforts on integrating zeitgeist in mono apps reduces considerably and you can see all your favorite mono apps being powered with Zeitgeist. Banshee can have last.fm style logging on what music you have listened. This information contains the tracks played by other players which you have used on the computer (like mpd or Rhythmbox or Clementine)

    The Solution

    One fine day, Seif pinged me and asked if I can write a mono wrapper over the API since the daemon team is too busy. I created most of the wrapper functionality with constant support from Seif. I was later joined by Mirco Bauer(meebey) who is on Debian CLI Team. He did the QA and writing the build scripts. Later I wrote the unit tests.

    We are about to release the library, but as all of you know, code is never perfect. To achieve as much perfection as possible, we need you help. If you are free, you can test out the code. The process is very simple. Get these packages. The version in the brackets are preferred ones

    • MonoDevelop (2.4)
    • Monodevelop-debugger-mdb (2.4.3)
    • monodevelop-nunit (2.4)
    • ndesk-dbus-glib devel (0.4.1-3)
    • ndesk-dbus devel (0.6.0-4)
    • mono-devel (2.6.7)
    • bzr
    • gtk-sharp

    If you are on Ubuntu 10.10, just one command can suffice

    sudo apt-get install mono-devel monodevelop monodevelop-debugger-mdb libndesk-dbus-glib1.0-cil-dev monodevelop-nunit bzr

    Get the trunk code by

    bzr branch lp:zeitgeist-sharp

    1. Goto the folder, double click on the Zeitgeist.sln file.
    2. Click on Build>Build All
    3. Click on View> Unit Testing
    4. Click on Unit Testing dockable window and and click on Run Test button. Alternatively you can double-click on the first element in the tree expander
    5. All the unit tests should pass and should show Tests: 84 Failed: 0 Ignored: 0

    Here are the screenshots

    Open Zeitgeist.sln in MonoDevelop 2.4How to show the Unit Test dockable window

    How to run the Unit Tests

    The expected output after running unittests

    All the tests should pass, so that we can be confident of the first release. If a test fails, please right click on the failure message, click Copy and file a bug. Please check whether the bug has already been filed. Please note that this is not a release.

    License: The code is released under MIT/X11 License.

    If you have time and have lots of excitement, then you can catch us at #zeitgeist on Freenode. I am m4n1sh, seif goes by seif, seif_ or seiflotfy and Mirco as meebey

    Hoping on getting a lot of community love.

    Posted in Development, Linux, Planet, Planet FLOSS India, Planet LUG Manipal, Ubuntu | Tagged , | 14 Comments

    So should I fork?

    As the same time, there’s often a hypocrisy in these communities. When a change is suggested, half the developers shout “show me the code”; when the code is written another half complain about the style or how it’s the wrong way to do it; and when the code is released independently because an upstream merge is just too difficult, yet another half complain about the project being forked. However, the fork allows the code to prove itself in the real world and not simply in theoreticals, and what more proof is needed?

    via a commenter on a famous Linux portal

    Posted in Linux, Open Source, Planet, Planet FLOSS India, Planet LUG Manipal, Reviews | 3 Comments

    Which license gives us more freedom?

    It’s late Saturday night. Though I have returned from PyCon India 2010 day-1, there are still a few thoughts on my mind.

    Which license do you choose for your open source projects? Strong-copyleft? Permissive? Do you choose LGPL which I consider somewhat between between GPL and Permissive licenses.

    I used to be a strong advocate of GPL and strong-copyleft licenses. Now “strong” is missing. I nowadays prefer using MIT/X11 license. If the project is a library of something like that GPL sucks (my opinion). It actually limits the freedom. GPL is fine for projects which consist mostly of UI code. LGPL is something I have never tried before. If I don’t like GPL, then my second choice is MIT.

    The most confusing and debated aspect of licensing is whether “sharing of modified code” is actually limiting freedom or guaranteeing freedom? Even though it looks nice, it doesn’t work out to be so good all the times. Sometimes companies keep distance from GPL as it is dangerous since one fine day the upper management might question the people working on the project for the reason of releasing the source code? The case was simple – they were complying with licensing requirements.

    The biggest evil I find with GPL is that you cannot link any GPL libraries/module to your application and release it under GPL incompatible license. Why? GPL incompatible licenses are not open source licenses? There might be some legal or moral reasons behind it, but I don’t care so much, as I am not a lawyer.

    Now coming to permissive licenses. Now since licenses like Apache and MIT give you more freedom, so there is a chance of misuse. This means that if someone took my code, close-sourced it, so my code becomes less-open? Well I don’t share this view, but highly experienced lawyers do think so. (Alert: Links to TechCrunch, click at your own risk)

    From now onwards I have decided to go the way of MIT/X11 license for most of my projects. In any case I am not so good with UI programming, so GPL doesn’t come into picture. Most of my projects are basically libraries or modules or anything which doesn’t have a UI. I don’t even create command line interfaces for a few libraries which I have created.

    Good night. Tomorrow is my talk at PyCon India on the topic on launchpadlib and using Launchpad API using python.

    Posted in Planet FLOSS India, Planet LUG Manipal, Thoughts | 4 Comments

    Ubuntu Hour Bangalore

    I have noticed that Ubuntu community based activities in India are lot less than expected and Fedora leads the game here. To give a boost to Ubuntu, Nigel proposed to hold an Ubuntu Hour for Ubuntu users/power-users to meet. Apart from ubuntu-in mailing lists, rest everywhere the activities are pretty much nil.

    Nigel sent a mail to ubuntu-in telling that he was organizing a small meetup. Initially I was also not very much  hopeful of a huge turnout, but to my surprise 6+1 people turned up.

    Nigel blogged about it on his weblog on the turn of events. Initially he was sitting alone with a laptop with Ubuntu sticker for confused people. Initially four of them were sitting inside the Cafe Coffee Day on Richmond Road, Bangalore when I turned up. Since I had never seen any of them, I was not sure whether I should ask them or not. Nigel suspected that I was “Manish” as he recognized me by my pic. After talking for an hour we left.

    Just before leaving, I found Ritesh waiting for us. I had sent a mail to him telling that there is a meeting of Ubuntu users and as a Debian Developer does he want to attend? Well, he got lost and came only after we left.

    After everyone left, me and Ritesh went inside again to have a coffee. In the next one and a half hours, we talked about Ubuntu and Debian communities, their policies, their cooperation, the plus and minus points of both the systems. We also talked on apt-offline, a tool which Ritesh himself developed for offline package management. He is also a maintainer of laptop-mode-tools in Debian. He gave me a lot of insight into kernel development, APT and a plethora of other technologies.

    The day was fun filled and we Ubuntu people expect to meet every fourth Saturday of every month. Meanwhile I might meet Ritesh again this Saturday to finish the work on apt-offline, so that the changes me and Abhishek made on our forked repos can be merged back upstream.

    Above Pic: Arjuna, Nigel, Ganesh, Harish, Manish, and Venkatesh

    Above Pic: Manish, Ritesh, Harish, Ganesh, and Venkatesh

    Posted in Meetups, Open Source, Planet, Planet FLOSS India, Planet LUG Manipal, Ubuntu, Uncategorized | 4 Comments

    Ubuntu Developer Week

    After Ubuntu user days ended on July 11, Ubuntu Developer week started the next very day. I was more interested in following the latter since it was my wish to know the basics of Ubuntu Development esp Packaging

    You can have a look at the Ubuntu Developer Week Wiki page

    My main interests are

    1. Getting started with Development 1 and 2Daniel Holbach (dholbach)
    2. Desktop Team overview – Sebastian Bacher (seb128)
    3. Authoring Upstart jobs – Steve Langasek (slangasek)
    4. Packaging like a Ninja – Rohan Garg (shadeslayer)
    5. Operation Cleansweep, reviewing patches – Nigel Babu (nigelb)
    6. Forwarding bugs and patches upstream – Pedro Villavicencio (pedro_)
    7. Daily Builds and You – Jorge Castro (jcastro)
    8. Making your application shine with application indicators – Ted Gould (tedg)
    9. Kernel Triage – Jeremy Foshee (JFo)
    10. Improving Ubuntu In An Evening – K. Vishnoo Charan Reddy (vish)
    11. Django and you – Micheal Hall (mhall119)
    12. Adapt an upstream – Jorge Castro (jcastro)

    Progress

    • On 12th , I attended 1 and 2, but missed 3 as it was in late night. I do have the IRC logs.
    • Today on 13th, I even missed 4 as I was too exhausted. Again logs are there to rescue.
    • Tomorrow on 14th, 5,6,7,8,9 would be there which I would try to attend at all cost.
    Posted in Development, Ubuntu | 2 Comments