VCS Wars: I have my own place

Till date I have used many version control systems with widely ranging usage periods. There are a few which I would like to try out in the future, but that would happen when I start caring more about my VCS than the code.

The first VCS I used was SourceSafe for a very short duration, then Team Foundation. The real taste of VCS was from subversion. Then I moved to git and bzr and of late used Rational Clearcase

SourceSafe and Team Foundation

I got the pleasure of using SourceSafe once when I had to get a few files. I did it only two times as far as I remember. It was for getting some legacy code for reference as far as I can remember. Now as people who have to deal with it call it a PAIN, so I am lucky to have never dealt with it again.

Team Foundation this was my first real source control system on which I laid my hands on. I still remember the shelving capabilities and a few more features. Anyway not interested anymore.

Subversion

This was the first version control system which I used for learning. Even though it was centralized version control system, I still found it superior to TFS (probably I learnt what it was or I never tried our TFS properly). A reason why I was able to learn it was it was simpler than its brothers which were of distributed nature. Still branching is one thing which I was never able to understand properly using svn.

Last year 5 of subversion developers met and decided on the future of their baby. They came to the conclusion that by somehow putting themselves in DVCS planet would be useless. They have a place of their own. I still see subversion having the biggest foothold in corporate sector amongst all the open-source VCS/DVCS

Rational Clearcase

Probably the (or one of the) crappiest VCS/DVCS (no clue where it fits in) I have ever used till date. Just put some 20 files, each of 300 lines and hit Check-in, go for coffee, return and find that the check-in hasn’t completed. Okay fine, I exaggerated. Whatever be the case, Clearcase is alive just because it has IBM behind it and then know how to stuff their crap on enterprise sector. (Lotus Notes anyone?)

It is said that Clearcase handles binary files better than other VCS. I can find very limited use-cases for this feature. What is the advantage when it cannot handle regular text files properly?

Sadly, Clearcase also has a place of it’s own.

Mercurial

No experience till date. Used it once when I wanted the latest code of django-piston. It is used by Python (don’t contribute), Mozilla(don’t contribute there), OpenOffice (no interest in Office Suits). This sums up my experience of hg, so it’s better to keep my mouth shut on something I never used rather than quoting from external sources.

Git

Git is fast. Git is lovely. Git is wonderful. As people say “Git won the DVCS wars in 2008 and left every other DVCS high and dry”. It’s branching and merging awesomeness is unmatched. It is Fast. To me, git became so widespread due to many reasons and one of the very important one is – github. It was because of github, most of the people got a place to host their projects and share it with their friends. It is a social network for programmers.

So as powerful git is, it comes at a price. It is pretty tough to understand. If you never had any experience with any version control system, you might need to put in extra effort. The concept that multiple branches are contained in the same repository together and the concept of remotes had made me dizzy when I started using git. Till date I keep on telling people that git tracks changes and not files. This is apparently visible when you find your file in both the list of “Changes to be committed” and “Changed but not updated”.

I always held the opinion that git is a spaceship – Incredibly tough to control for people who don’t know what to do. Once you learn how to control it, its a pretty smooth journey.

So now asking the same question for git?Does it have it’s place. Yawn! Isn’t the answer obvious?

Bazaar

These days I am spending most of my time on Bazaar (next is Git as usual). The initial impressions are the it is slow (due to additional runtime costs?) It has it’s own share of problems like slowness etc which everyone talks about. You will find a lot of people using it as a punching bag. Google for it, it is useless to rehash the old thing again.

I am going to talk a bit on the good sides of Bazaar. First it has a lot of good UI tools. I mean Bazaar Explorer is really great when compared to any other Git UI tools. I know most power users like command-line, but I use Bazaar Explorer to commit as I keep a diff and commit window open side by side, look at the changes and write the commit messages. I think many more newcomers might find easier to adopt bazaar since it has better UI tools. For Git, gitk looks pathetic, giggle looks fine, but is still behind, only gitg is of the quality I expected. Still gitg can be improved a lot.

Second advantage that bazaar got is that it is easier to use. I have taught bazaar to a few of my friends and they were pretty quick to pick it up. I found that bzr adjusts better to my workflow. Since in bazaar every branch rests in a separate directory, I have found less head-banging amongst the developers.

I found that a lot of advantages of bazaar are tied with it’s launchpad integration. I have never used it outside launchpad. It would be great if someone using it on GNU Savannah might explain their experience.

We in Zeitgeist development use bazaar a lot since it is hosted on Launchpad.  Me and Federico are the two people who know git pretty well (Federico is the champ). Since zeitgeist alone is nothing more than a white elephant, integration of zeitgeist in applications leads us to use git also when sending patches. There are cases when “I have many changes in the source but git diff isn’t showing anything”. Probably git has too much power and sometimes it can lead to panic. It takes time to learn and utilize the full power of git.

I still find bazaar to be a great DVCS for people who don’t have much experience using a Version control system or are not so much technical. The target audience can probably include artists too. This is why I say “Bazaar has it’s own place and trying to compete with git is useless“.

Conclusion

One of my close friend told me – DVCS is religion, never talk about it publicly. You invite wrath.

A bit of autotools bashing

Even programmers need to have some fun.

<m4n1sh> mhr3: I loath autotools

<m4n1sh> the best line in Makefile.am is

<m4n1sh> # end of magic

<m4n1sh> the whole thing is magic

<mhr3> m4n1sh, apparently you’re doing magic

<mhr3> autotools themselves are nice and clean if you dont

<m4n1sh> I am still to come across a single build system which doesn’t play with your blood pressure

<mhr3> yea.. there isn’t one

<mhr3> it’s number one feature of all of them

<m4n1sh> is that the basic requirement for all of them?

<m4n1sh> or stop pathetic programmers from creating pathetic applications?

<mhr3> don’t know if it’s requirement, but surely it’s the first feature that gets implemented in any of them

A Re-Introduction to Zeitgeist

While the Zeitgeist team has assembled together at Aarhus, Denmark for their 2011 hackfest, I am sitting at home due to shortage of time for Visa application. This hasn’t stopped me from continuing my work and mythbusting is also a very much-needed action.

Recently I came across a post on Linux Insider in which the author has written up a post named GNOME Activity Journal: Not a Big History Buff.

Instead of screaming and accusing of spreading FUD (which isn’t a sure shot solution for every problem), I thought I might reply with the solution. Putting it nicely as a blog post might help everyone.

WARNING: This is a tl;dr post.

The post has many errors, some minor misnomer and few factual errors. I would like to clear and doubts and for some points – add more commentary.

1) Architecture and component description

The Activity Journal was first introduced as GNOME Zeitgeist. It is a tool for easily browsing and finding files on your computer. It keeps a chronological journal of all file activity and supports tagging and establishing relationships between groups of files.

Right now Gnome Activity Journal(also called simply as Activity Journal) is a separate component from Zeitgeist. Zeitgeist is an umbrella term. The engine is the core component which logs events and exposes them via a DBus API. Activity Journal fetches this data from the Engine’s DBus API using the Python bindings.

Zeitgeist does not provide support for file tagging as Zeitgeist is not a file tracker. It is an event logger.

2) Logger or file search?

It is a history logger but not a true searching tool.

True. Use find command for searching files. You can search within the file if some event contains that file (like file was opened, close, modified). This functionality is provided by Zeitgeist fts extension. fts – Full text search.

3) Work of Activity Journal

Activity Journal is a tool for browsing and finding files on your computer.

Activity Journal is well.. an Activity Journal and not a file search tool.

4) Zeitgeist in GNOME3

The concept behind Zeitgeist is planned as an integral part of the upcoming release of the GNOME 3 shell.

Sadly, Zeitgeist is not a Gnome Project. Gnome-Activity-Journal  was rejected in a meeting in May 2010 and was announced by Vincent Untz on Wed, 2nd June 2010.  Since Activity Journal was rejected, so it did not make much sense to take in Zeitgeist engine too. Later, Seif asked whether we should apply again, but most of the team was not much interested as by that time Zeitgeist modules had not undergone any massive change which could got zeitgeist accepted in Gnome.

My take on re-application was “Don’t re-apply just for the sake of re-applying”

5) Zeitgeist and Gnome-shell

GNOME shell developers are touting this as one of the major changes in the new shell’s GUI

Citation needed!

Zeitgeist does have integration with Gnome Shell but still, any integration work takes time. Keep your fingers crossed.

6) Storage of events

The application stores your file access history in one central database for quick access. Any application can easily add its own data to the mix. But I found that not all programs are invited into this database.

Zeitgeist is written in Python and uses SQLite as database. This database is kept at $XDG_DATA_HOME/zeitgeist/activity.sqlite and can be opened with Sqliteman (at your own risk)

Yes, any application can add its own data to the daemon. These plugins in every applications are called dataproviders or datasources. Many of the dataproviders are present and most of them are packaged in Zeitgeist PPARhythmbox and Banshee dataproviders are upstream.

If you see that not all files are present in the database, you should understand that those applications are not pushing their information in the daemon. A plugin/extension/addin/addon is needed for that application whose work is to push the events to the daemon.

Thirdly, events in the daemon can also be pushed passively by zeitgeist-datahub which is a zeitgeist-extension and runs along with the daemon. It pushes data from GtkRecentManager to zeitgeist daemon. So all data which is available in GtkRecentManager is also present in zeitgeist daemon provided datahub is running along with the daemon (by default it does)

Zeitgeist is not magic. Some way or the other the event has to be logged. It is logged by many way or the other. Either by datahub or explicitly by extensions. We try out best to have extensions for every application, but still it would take some more time to come up with extensions for all major applications.

7) How events can be logged?

It is certainly a better option than looking through a file manager window filtered by date. But the journal app fails to track all of my files.

Reason is as explained. Try opening a file via command line – it doesn’t show up in zeitgeist daemon since datahub cannot find that event. Those files needs to be present in GtkRecentManager.

8 ) Dataproviders

For example, I use Note Case Manager to keep all my notes and gathered snippets of information. Activity Journal shows no record that I opened the Note Case database.

Then you need a plugin for Note Case Manager. I use Tomboy and you can see that it is tracked by the Tomboy dataprovider.

9) Not everything is logged

Also, the journal ignores files opened under Wine.

Yes. Wine is not supported. It is planned but not a very high priority as most people use Wine mostly for playing Games. We have limited manpower and endless list of action-items.

10) Where are events logged?

The tracking occurs even if you do not open the journal app.

Yes. This is because Journal is just a front end. The zeitgeist engine keeps on running even if you close the Journal. The events are not logged in Journal but in engine and journal fetches the data from the engine. Hope this makes it clear.

11) Activity Journal plug-ins

The Blacklist Manager lets you add and remove items from the Zeitgeist blacklist. It, too, appears to be worthless, as you cannot actually do anything with it.

The Blacklist API in its current form is sort of useless. I admit it as I have been assigned to work on it. We have still not reached on a grand consensus on the API since it is hard to come up with a good one. I was supposed to implement in this hackfest but could not attend.

12) Availability of Journal plug-ins

So far, it seems no other plug-ins are available to download and add. The journal’s interface has no menu option to import or create plug-ins.

True. If you can think of a functionality, please file a bug against gnome-activity-journal project on Launchpad and set it to Wishlist. We can implement them if feasible.

13) Extra Dataproviders for web usage

The skimpy online  documentation suggests that the journal will also track Web sites visited.

(The link is broken). It can track the websites you visited if you install the Firefox or chrome dataprovider. Right now none of them are packaged as we found it a bit tough. We are progressing towards it.

14) Pinning

I never figured out exactly what pinning a file does.

Pinning a file makes it accessible for your “Today” since people work on the stuff within the last 2-3 days which people want to keep in view. It is useful to pin stuff so that if you are not using them, they will always be visible for you.

15) Current version of Activity Journal

However, a more developed version within the GNOME 3 Shell or an improved version beyond 0.5.0.1 for the current GNOME shell might add to this app’s importance in my computing routine.

Activity Journal 0.6 is out. Download it or install it from our Zeitgeist PPA.

16) Further clarification and Ubuntu Developer Week session

Me an Seif are taking a session on Rocking with Zeitgeist during Ubuntu Developer Week. Be there if you want to ask any questions. Note down the timings:  Tuesday 1st March 19:00 UTC.

Dream desktop: Slowly moving closer and closer

This is just the tip of the iceberg. Zeitgeist holds immense possibilities as I explain others

Using Zeitgeist you can keep a log of all the files you opened with exact times, create statistics, learn your workflow and make yourself more efficient. Zeitgeist does not log only files but any activity or event like receiving calls, dropping calls, starting a track in your favorite media player. The possibilities are immense. The sky is the limit

We have many more new dataproviders including XChat. If you have patience, wait for a release or if your hand is itching, you can get them from Zeitgeist PPA

In case you face a problem, ping us on #zeitgeist on irc.freenode.net or ask the question on askubuntu.com with zeitgeist as the tag.

Techrights/Boycottnovell – Bane or boon? An experience

Yesterday I was browsing through  the internet when I came across this link with the quote

“Microsoft has pushed DirectX into Intel’s silicon,” explained to us a reader

Can there be a limit on sensationalism? Dr Roy cannot escape his responsibilities by quoting misleading facts. Now, instead of cribbing all over, I headed to their IRC channel and met schestowitz and explained him the case. He did agree that that quote is not exactly true. Still that article is not edited to reflect the truth.

Roy was very polite and patient while I expressed my opinions, which is actually a good thing. Since it was a weekend and I could not go out due to some personal reason, I decided to stay on the channel just to know their real motives.

Microsoft employees are devils

This is a common belief that Microsoft employees are working day and night to destroy the world. Arn’t all the policy decisions taken by the top execs.  How many of the employees actually nod everytime Ballmer says Linux is cancer? Probably physically yes, they do nod. How many care?

Then MinceR jumped in and started proposing that they are evil/unethical people. I tried my best to explain that they need to earn their bread and butter. A vast majority of the software programmers don’t care about FOSS ideologies nor Microsoft’s ideologies. For them employment is a contract – you pay me, I work for you. Every person has a family to feed and a life to live. Social and peer pressure is also a factor why people want to work for Microsoft/Google/Yahoo etc. The dream of a better future is also a reason. I don’t paint every Microsoft employee as a devil.

Name calling is nothing new on #techrights/#boycottnovell , even I got flared, but I ignore those comments. It never came to my mind that some people think they have a right to be not polite. A strange right I never heard of.

Tobacco Industry

Roy thinks that tobacco industry is responsible for people’s death. I don’t disagree 100% as these industry cannot be completely absolved of their responsibilities. If people smoke and die, isn’t it the person’s fault. Guns don’t kill people, people kill people. You cannot drop a nuclear bomb somewhere and blame nuclear technology for the devastation. Lastly remember that tobacco industry works only because we consume tobacco. It is a simple demand-supply equation.

I was even advised to go and read the principles of Gandhi(Ghandhi), which is strange since I was born and brought up in the country of Gandhi. If you want to take a page out of Gandhi’s struggle, look at civil disobedience, esp the Dandi March. He never needed to abuse or spread violence for achieving his target. Civil disobedience in FOSS world is to use FOSS products exclusively. Gandhi even called off Civil Disobedience when violence started occurring.

David Nielsen

So there is a common understanding that David being abused was good for the whole world.  Look at the statement which David got

Matthew Woehlke: I’m going to guess a lot of that “disrespectful personal mail” revolves around the use of mono? And why shouldn’t it?

So there is a clarification that disrespecting is a right. There is also an explanation that this isn’t a harsh reply.

If this wasn’t enough, then you can even find out of context cooked-up statements like

MinceR once again, m4n1sh explains that verbal abuse is the greatest crime one can commit
MinceR presumably right ahead of copyright infringement. :>
MinceR murder is way behind

I have no clue how this all comparisons were made or I ever used murderer and copyright infringement ever. By the way nothing special, this is expected.

At that moment it was only sebsebseb who was actually talked rationally. He did explain his stand and took the pains to read the backlogs before discussing further.

Identica

As I am not on identi.ca, so sebsebseb told me “People on identi.ca don’t like omgubuntu“. Actually I don’t find any reason to be on identi.ca. Just because it runs FOSS? Identi.ca is the smaller brother of twitter which lacks wit and sarcasm. There is no humour in any dents. Twitter community rocks. identi.ca community needs to improve themselves. StatusNet software for running identi.ca is great, but that hardly matters if you don’t have a good community.

I wanted to pass some links on how identi.ca is sort of usless, but I would reserve them for further use.

OMG Ubuntu

So the crime OMG Ubuntu committed is that they don’t scream and run around the room crying “Mono is crap and a threat”. I have seen all kinds of reviews on OMG Ubuntu including applications written in C, C++, Python, Vala, C# or any other language out there. It’s a news site and does it work as required. You cannot be impartial by leaving out Mono applications and calling yourself great. Leave that decision of using mono applications on the authors. They probably have more brains than you actually think.

They are pissed off at David writing blog posts about Banshee on OMG Ubuntu. Joey is not a programmer not any super-techie guy. Everyone does his fair part of job. One great comment is

the entirety of omgubuntu is juvenile, ignorant, and not worth our attention

That comment holds good for techrights actually. I firmly believe that you cannot say anything without annoying people. If you are being opinionated you will hurt sentiments. People love to get annoyed and take offence.

Conclusion

I chuckle when I am called stupid, and weird comments like qu1j0t3: he’s reaching for any insult he can hurl at us especially I never used a single abusive word. When 4 people were answering at once with huge messages, it takes time to reply. When I could not, I got this compliment

he can’t pay attention, both of his neurons are occupied with worshipping m$.

The usage of constant M$ makes me laugh. That’s all you can do to promote free software?

schestowitz needs to make it clear whether he agrees with all these abuses and  dogpiling? Otherwise people will consider all these comments to be the views of techrights community.

Does FOSS community need techrights? Is it bringing good name to the FOSS community? To the non-FOSS world are we looking extremist?

Now excuse me, I have to go and get some work done unlike techrights activists. I have a few assigned bugs, a few packages to build (learning) and write some documentation for my personal pet project.

Got my Ubuntu Membership

Hi everyone,

If everything  is setup fine, this should be my first post on Planet Ubuntu.

A bit about myself. I am a long time Ubuntu user from Bangalore, India. I studied in Manipal Institute of Technology, Manipal. Started my working like last year in July. I have been one of the founders of Linux User’s Group in my college alone with friends Ayush and Shubhendra. [first meet pic]

I have done lots of work in spreading Ubuntu during my college days. Many of my friends are running Ubuntu for which I provide support. Even my brother, cousins and many relatives have been attracted to this wonderful distro.

These days I work mostly in Zeitgeist Team. My work started with creating the CLI bindings for zeitgeist so that awesome apps like Tomboy, Banshee and F-Spot can have zeitgeist integration. The integration with tomboy and banshee is nearly done. Next up is f-spot. I have been trying to get into the engine more and more these days. Thanks a lot to the Zeitgeist team. It rocks! You too are invited to be a part of it. You’ll get lots of warm hugs.

A few projects apart from zeitgeist which attract my attention are Elementary Project and Novacut. Thanks to the founder of NovacutJason Gerard DeRose who taught me packaging(including basics). Thanks to Elementary guys who told us that FOSS applications can too look beautiful and artistic.

My next aim is to become a MOTU. I am slowly learning packaging better and better each day. Some years back I used to do bug triaging, but now I am actually interested in squashing them.

Lastly thanks to the excellent Ubuntu community. Love you all.

Zeitgeist daemon extensions explained

While working on this Zeitgeist bug #612344 I recalled that Stuart Langridge had once quoted

Zeitgeist has extensions. These aren’t brilliantly documented yet, but you can drop a Python file into .local/share/zeitgeist/extensions and if it’s got the right sort of class in it then that class will get run as a part of Zeitgeist.

Sometimes it is said that code is the best documentation. This becomes the only solution when there is no documentation available on wikis or help pages. When working on that bug, I started hunting for documentation on the web. After a few minutes I understood that looking at the extension code is the best way to go ahead.

How extensions are searched and loaded

Every extension needs to inherit Extension base class which is present in _zeitgeist.engine.extension namespace. So basically the first line has to be

from _zeitgeist.engine.extension import Extension

When the daemon is started, it looks for the environment variable named ZEITGEIST_DEFAULT_EXTENSIONS to hunt the extensions which are supposed to be loaded. If this is not set then extensiondir variable contains the path of all the extensions. You can know about this

>>> from zeitgeist._config import extensiondir

>>> extensiondir

‘/usr/share/zeitgeist/_zeitgeist/engine/extensions’

It even searches for the extensions in your local path. This means an extension can be enabled globally as well as locally. The path in your local home directory is the one fetched by

>>> from _zeitgeist.engine import constants

>>> constants.USER_EXTENSION_PATH

‘/home/manish/.local/share/zeitgeist/extensions’

All these files are then scanned for class which inherits Extension class.

The structure of an Extension

Extension has a few methods

1. pre_insert_event(self, event, sender) – The control passes through this method before every time an event is going to be inserted. So the method gets the instance of the event and the dbus Busname of the client which logged the event. If it wants to block the event from being inserted, this method simply returns None. The fields of the event can also be modified if required (probably useful for privacy control). Before using the event, please check it for None since another extension which has the event instance might have set it to None.

For this hook, the event enters one extension and the output of this extension(ie. event) is then passed to another extension.

2. post_insert_event(self, event, sender) – Same as pre_insert_event except that it is called after the event has been inserted. In this method the nothing needs to be changes or returned as the event has already been inserted.

3. get_event(self, event, sender) – This method/hook is called everything an event is fetched and to be sent to the client. This hook also behaves like pre_insert_event in the sense that the even returned from this method is then passed to other extension’s get_insert_event and can be changes similarly to pre_insert_event.

4. pre_delete event(self, ids, sender) – This method/hook is called before an event is to be deleted. Please note that the input argument is not event but a list of event ids. Event id is the unique way to identify an event within a zeitgeist database instance. It does not return anything

5. post_delete_event(self, ids, sender) – This method/hook is called after the event having the event ids in the input argument ids has been deleted. It returns nothing.

Example extensions

By default zeitgeist has two official extensions which is shipped with the daemon. It is

The project Zeitgeist extensions is for hosting the extensions. One excellent extension for zeitgeist is full-text-search extension which can also be installed in Ubuntu by installing the package named zeitgeist-fts-extension

Right now Blacklist, Datasource Registry and fts also expose their functionality via DBus. For that, the only magic you have to do is to also inherit dbus.service.Object

Conclusion

I don’t think writing zeitgeist extension is a rocket science from any angle. All your need is patience and courage to poke the zeitgeist engine developers on IRC.

Happy hacking!

Zeitgeist in my blood

For the last three months, I have been working with the Zeitgeist team for achieving the goal of a semantic Linux desktop. Right now I am not much involved in the daemon, but not for long.

Basics

Daemon is just one part of the solution. A server is of no use if there isn’t any client to use it. Similarly now what zeitgeist needs is a deep integration with most of the applications and the shell. Unity is already on it’s way rocking ahead with Unity Places. There are many applications for which plugins have been developed to push events to the daemon. Apart from these Banshee plugin is there in banshee-community-extensions and Rhythmbox plugin is already upstream in the source tree.

The awesome team

I think this is my first experience working in an open source project with a team. Believe me, the team is awesome. To put it straight – MIND BLOWING. Mikkel is the architect who is the role model for being always right. Seif is always encouraging. Markus Korn’s keen eyes on details and the knack for extreme review sessions make sure that the mistake I commit is always the first and last time. Same goes for Micheal Hruby.  Siegfried does a lot of heavy-lifting and is the person I catch first when some information is needed about the daemon/API/backend.

The development process is pretty much democratic. Before any new feature is added or before something is finalized a lot of discussion takes places. There is a voting in spirit with democratic values. This is a sign of QA. No one is allowed to push a change to the trunk without any other person reviewing it. The patches are then fine tuned and ultimately the merge happens.

Seif’s role is that of a manager. No! I am not talking about the managers in your office. Manager role here is about keeping an eye on the overall thing so that every other person can concentrate on their work. He is also our community manager. That’s why you can see his face everytime zeitgeist is involved. Even though he started the project, we don’t have a benovalent dictator.

back to top

Role

When I started contributing, everyone in the team mostly worked on python and C/Vala applications. This left a gap for integrating zeitgeist in CLI based applications. Randel Barlow had tried sometime back, but he hit the rock(ndesk-dbus) and stumbled over. (Die ndesk-dbus). I took over the work of creating a CLI wrapper over DBus API. Finally after some lengthy hack sessions and constant hair-pulling, I managed to finish the work with help of Mirco Bauer who created the build script(autofooling in our language). All the time during the development, ndesk-dbus was at the receiving end of my rage.

back to top

Packaging

Jo Shields came into picture when he did the necessary work for packaging the library. Well, after the decision to make Banshee the default media player for Natty. most of the focus has shifted to slim down Banshee. This needs a lot of work and the Debian CLI team became very busy. The only work left was packaging the library.

Yesterday I caught Jason Gerard DeRose on #novacut and asked for help to package it. Even though he had never packaged CLI based applications, he offered his help to the best of his capabilities. I worked till 5 in the morning to get the build working. His step-by-step guidance and explanation made me his instant fan. Jason – we need people like you. Seriously! Be convinced that novacut will receive all the help possible from me.

Here is the PPA. This is my first package(for Maverick and Lucid), so please be calm. It should not screw up your system. Be relaxed! The name of the package is libzeitgeist0.1-cil and if you want to build the dataproviders yourself, then you need to get libzeitgeist-cil-dev

back to top

Banshee and Tomboy Dataprovider for the impatient

If you love Banshee and Tomboy and feel that they need Zeitgeist love, then here is a dirty solution. I am providing the binary files for it. Manually dropping the files in the respective locations is a bad practice. Actually getting these dataproviders packaged can take some time, so for those people who can’t wait can try downloading both of these files. Remember to delete them when these are packaged. I will warn you again next time when the package will land.

Banshee dataprovider [code]: Put the file in /usr/lib/banshee-1/Extensions

Tomboy dataprovider [code]: Put the files in ~/.config/tomboy/addins

back to top

Disclaimer

If you want to submit your objections to mono, please go and talk to mono developers. For a non-techie end user, mono hardly matters. For them having an application with better desktop integration matters. I work for them. I serve them. Again if you think my work is going to be the reason for the upcoming apocalypse on this planet, do feel to contact me via Launchpad page. Please keep your mails polite.

You can ignore the title of this post if you were about to take it literally.

back to top

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.

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