Instantaneous status on Linux, Windows (GSOC 2009)
Tomasz Buchert
thinred at gmail.com
Tue Mar 10 19:44:22 CDT 2009
Hi!
My name is Tomasz Buchert. I am a student from Poland interested in joining
this year's Google Summer of Code. I am particularly interested
in project "Instantaneous status ...". I would like to improve (rewrite?)
inotify extension to make it more portable and robust.
Here is my proposal:
1) Make notification server interface OS-independent. This may
involve use
of TCP sockets (instead of Unix Domain Sockets) because they are
available everywhere. Alternatively I may write specific code for
every OS +
nice abstraction to treat each implementation transparently. This
means,
for instance, that Unix Domain Sockets would be used to communicate
with the server on Unix-like OSes, Named Pipes on Windows and so
on. Motivation is
that while TCP sockets are portable, there are issues like
firewalls and port allocation.
Possibly many methods of communication would be available and the
user
should choose the favorite one.
2) I don't have Apple computers right now, so I would be able to take
care
of Windows and Linux implementation. Actually I am thinking about
3 implementations
of server code:
I) Linux - this would be probably partially rewritten code
of inotify extension.
II) Windows - this will have to be implemented,
III) Generic fallback implementation - when no notification
API is available then
repository is sequentially rescanned by the server (in
fact doing what normal status does)
and providing this information instantly. This emulates
notification API and should still
provide boost to dirstate algorithms (because repository
scan is performed in the background).
However, because of the performance issues, this one
should be much more intelligent than the latter ones.
I must admit it is quite rough draft of what should be done, but I await
your feedback.
I think that this approach is flexible and will allow not only to speed
up mercurial on Windows but also
on any other system which does not support fs notifications.
I also send few words about my motivation and myself (my CV is here:
http://pentium.hopto.org/~thinred/files/CV.pdf).
I am experienced computer scientist and was awarded few times during my
academic education.
I currently study Computer Science at Poznań University of Technology
(IV year) and Mathematics
at Adam Mickiewicz University in Poznań (III year). I am specializing in
Computer Networks and Distributed Systems.
However I am very much interested in Version Control Systems and am,
most recently, a fan of Mercurial. It is even possible
that my master's thesis will concern VCSs.
Before Mercurial I have been using Subversion in my projects. Mercurial
seems to be much
better solution because of its distributed fashion. I started to use
Mercurial in all my projects some time ago and began
to advertise Mercurial to my friends and coworkers. It's a hard job to
convince people that there can be something better
than Subversion, though.
I am also a big fan of Python language. I find it very "mathematical"
and powerful. I also like the development
process of this language which is really democratic one. I have used
Python in my past projects and am very satisfied with it.
Actually, I became interested in Mercurial because it is written in Python.
I chose "Instantaneous status..." project because it concerns
interesting features of operating systems and
this is a topic I am interested in. I believe I am the right person to
take care of this project.
Don't hesitate to contact me with any question.
Regards
Tomasz Buchert
More information about the Mercurial-devel
mailing list