<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RabbitVCS &#187; Status Update</title>
	<atom:link href="http://blog.rabbitvcs.org/archives/category/status-update/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.rabbitvcs.org</link>
	<description>News and Discussion on RabbitVCS</description>
	<lastBuildDate>Wed, 09 Nov 2011 19:24:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>RabbitVCS v0.15.0.4 released, Ubuntu tarball installation info</title>
		<link>http://blog.rabbitvcs.org/archives/316</link>
		<comments>http://blog.rabbitvcs.org/archives/316#comments</comments>
		<pubDate>Wed, 09 Nov 2011 16:16:07 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Release]]></category>
		<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=316</guid>
		<description><![CDATA[hi all, so I&#8217;ve made yet another packaging related release with v0.15.0.4 which fixes some minor issues.  I also found out that if you are installing from the tarball on Ubuntu, then you need to add an argument to the setup.py call, otherwise it will ignore the system prefix and use /usr/local no matter what, [...]]]></description>
			<content:encoded><![CDATA[<p>hi all, so I&#8217;ve made yet another packaging related release with v0.15.0.4 which fixes some minor issues.  I also found out that if you are installing from the tarball on Ubuntu, then you need to add an argument to the setup.py call, otherwise it will ignore the system prefix and use /usr/local no matter what, which will cause many problems.</p>
<p>Ubuntu users should use the following command to install:</p>
<p>$ sudo python setup.py install &#8211;install-layout=deb</p>
<p>All other users should do:</p>
<p>$ sudo python setup.py install</p>
<p>Thanks,Adam</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/316/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A word on that pesky segmentation fault issue&#8230;</title>
		<link>http://blog.rabbitvcs.org/archives/312</link>
		<comments>http://blog.rabbitvcs.org/archives/312#comments</comments>
		<pubDate>Tue, 08 Nov 2011 14:36:44 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=312</guid>
		<description><![CDATA[hi all, I just wanted to explain why so many of you are getting segmentation faults when you try to run the nautilus 3 client. The pygtk world used to be quite simple and nice, with good documentation and well known best practices.  These were &#8220;static&#8221; gtk bindings that someone had to set up by [...]]]></description>
			<content:encoded><![CDATA[<p>hi all, I just wanted to explain why so many of you are getting segmentation faults when you try to run the nautilus 3 client.</p>
<p>The pygtk world used to be quite simple and nice, with good documentation and well known best practices.  These were &#8220;static&#8221; gtk bindings that someone had to set up by hand (including me for nautilus-python).  These bindings were a pain in the butt to maintain over time but they worked pretty well and were predictable (good for coding against them).  However, a couple years ago the pygtk maintainers decided to abandon these bindings and start from scratch with &#8220;dynamic&#8221; bindings that would execute the original C code of the gtk library, which would have the effect of dramatically reducing the amount of hand-written binding code the pygtk developers would have to maintain.  These new dynamic bindings have been released for a while but are still pretty new to the world, but for the most part they work pretty well.  As you might be able to tell, the original Nautilus extension used the static pygtk bindings to run, and the new Nautilus 3 extension uses the new dynamic bindings to run.<br />
Running Nautilus 2 with the static bindings works great, and running Nautilus 3 with the dynamic bindings works great as well, but problems start to occur when you try to run Nautilus (2 or 3) with both the static and dynamic bindings at the same time (this is possible).  Unfortunately this is what is happening for many of you right now.  Some extensions are written with the expectation that they can run with a mix of static and dynamic bindings, and if Nautilus 3 loads extensions that try to use the static and dynamic versions of a set of bindings at the same time, it will crash.</p>
<p>I&#8217;m not entirely sure what the solution to this is, though it will become less of a problem over time, as people switch completely over to the dynamic bindings.  However, for now, things will be a bit messy and you will have to decide which extensions you want to run.  Right now, the Nautilus 3 RabbitVCS extension uses dynamic bindings.  If you see the following error:</p>
<p>** (nautilus:2259): DEBUG: Syncdaemon not running, waiting for it to start in NameOwnerChanged<br />
/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0&#8242; failed<br />
import gobject._gobject<br />
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for type `PyGtkGenericCellRenderer&#8217; is smaller than the parent type&#8217;s `GtkCellRenderer&#8217; class size<br />
from gtk import _gtk<br />
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion `node != NULL&#8217; failed<br />
from gtk import _gtk<br />
Segmentation fault</p>
<p>Then it means you have another extension running that is trying to use the static bindings.  If you see this error (check in ~/.config/rabbitvcs/RabbitVCS.log) and your Nautilus isn&#8217;t able to run, first disable all nautilus-python extensions, then try to run RabbitVCS again.  Then one-by-one, enable your other extensions until Nautilus crashes again.  You should then report the issue either to myself or to the maintainer of said extension.</p>
<p>Hopefully this will resolve itself within a year or so, but until then it will be a somewhat bumpy ride.</p>
<p>Adam</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/312/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>February status update</title>
		<link>http://blog.rabbitvcs.org/archives/293</link>
		<comments>http://blog.rabbitvcs.org/archives/293#comments</comments>
		<pubDate>Thu, 17 Mar 2011 23:16:22 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=293</guid>
		<description><![CDATA[Things have calmed down somewhat since the v0.14.2.1 release and I&#8217;ve been wanting to post an update on my RabbitVCS-related goings on.  So what have I been up to? Well, some of you may have heard about GNOME 3, which is scheduled to be released within a month or two. Unfortunately, the current versions of [...]]]></description>
			<content:encoded><![CDATA[<p>Things have calmed down somewhat since the v0.14.2.1 release and I&#8217;ve been wanting to post an update on my RabbitVCS-related goings on.  So what have I been up to?</p>
<p>Well, some of you may have heard about GNOME 3, which is scheduled to be released within a month or two. Unfortunately, the current versions of both <a title="nautilus-python" href="http://projects.gnome.org/nautilus-python/">nautilus-python</a> and RabbitVCS are completely broken in <a href="http://www.gnome3.org">GNOME 3 </a>because PyGTK has not and will not be ported to GTK+3, and <a title="nautilus-python" href="http://projects.gnome.org/nautilus-python/">nautilus-python</a> is what RabbitVCS uses to interface with the Nautilus extension framework.  The good news is that not only am I the maintainer for RabbitVCS, I&#8217;m the <a title="nautilus-python" href="http://projects.gnome.org/nautilus-python/">nautilus-python</a> maintainer as well!  I&#8217;ve just about gotten the new bindings to work correctly on <a href="http://www.gnome3.org/">GNOME 3</a> and will put out a release as soon as possible.  They will require Nautilus 3 and the next bug-fix release of PyGObject 2.28 (I uncovered a bug in the current version).</p>
<p>The result of all of this is that I will need to port RabbitVCS&#8217;s Nautilus client to GTK+3, and possibly the rest of RabbitVCS as well.  It&#8217;s going to get a little hairy for a while as we figure out what to do.  So if anyone has any ideas, I&#8217;m all ears.</p>
<p>I&#8217;m also the maintainer of <a href="http://goodies.xfce.org/projects/bindings/thunarx-python">thunarx-python</a>, which I started originally as a project on github.com, and I recently did my first release as an officially hosted Xfce project!  I just released v0.2.3 last weekend and the project is stable and ready to be packaged by distributions.</p>
<p>Once I get this nautilus-python release out the door, I will start focusing on RabbitVCS bugs once again and maybe make some more progress on advancing towards v0.15.</p>
<p>Happy St. Patricks Day!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/293/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>RabbitVCS.org migrated to new server</title>
		<link>http://blog.rabbitvcs.org/archives/275</link>
		<comments>http://blog.rabbitvcs.org/archives/275#comments</comments>
		<pubDate>Sun, 19 Dec 2010 23:01:13 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=275</guid>
		<description><![CDATA[If you are reading this now, that means the migration was a success!  Prior to this month, the rabbitvcs.org domain and website was hosted by Bruce (a long lost but much missed developer for the project).  Since Bruce is no longer associated with RabbitVCS I decided the domain and website needed to be migrated to [...]]]></description>
			<content:encoded><![CDATA[<p>If you are reading this now, that means the migration was a success!  Prior to this month, the rabbitvcs.org domain and website was hosted by Bruce (a long lost but much missed developer for the project).  Since Bruce is no longer associated with RabbitVCS I decided the domain and website needed to be migrated to my own servers.  A few weeks ago we transferred domain name ownership but kept the website hosting the same.  But today, we have moved all of the website, including the blog and wiki, to a new server under my control.  Hopefully, everything was migrated successfully.  But if you find any weirdness or issues, just let us know and we&#8217;ll try to resolve the problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/275/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Development Updates</title>
		<link>http://blog.rabbitvcs.org/archives/244</link>
		<comments>http://blog.rabbitvcs.org/archives/244#comments</comments>
		<pubDate>Mon, 15 Nov 2010 14:34:49 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=244</guid>
		<description><![CDATA[hi all, long time no see.  Some of you might have been wondering if RabbitVCS was dying or dead, and it isn&#8217;t, though truth be told it is limping a long a little.  Right now, Jason and I are the only ones actively writing code, and neither of us has much to time contribute to [...]]]></description>
			<content:encoded><![CDATA[<p>hi all, long time no see.  Some of you might have been wondering if RabbitVCS was dying or dead, and it isn&#8217;t, though truth be told it is limping a long a little.  Right now, Jason and I are the only ones actively writing code, and neither of us has much to time contribute to the project.  For myself, I used to work from home and could budget a certain amount of time during the day to working on RabbitVCS and other projects.  However, in late June of this year I got a &#8220;real&#8221; job with a &#8220;real&#8221; commute and all of a sudden my available time to work on side projects dropped over a cliff.  The good news is that about a month and a half ago I realized that on my bus trip to work in the morning (~25 minutes) I could get some programming work done.  So I purchased a netbook (Acer AIO 533), tethered it to my Android phone, and it has been a pretty successful idea.  I&#8217;ve been fitting in about 1.5 to 2 hours of side-programming per week this way, which is just enough to keep me happy.  I would love to be able to do more, and sometimes I&#8217;m able to, but this is good enough for now.</p>
<p>Aside from my personal update, here are the latest development updates to whet your appetites.  First of all, git support is coming along slowly but surely, and it will be available for v0.14.  Since git adds so many new concepts to the UI and to our code, we&#8217;re going to have a fairly long beta period where I hope people will be interested enough to try it out, suggest improvements, and maybe even be energized enough to get involved in some coding.  I can&#8217;t make any guarantees, but I think this might happen before Christmas.  The git support for v0.14 will be somewhat rudimentary, but it should allow you to do most of the things you need for git version control.</p>
<p>I also spent some time this past weekend and worked on making the RabbitVCS nautilus extension truly non-blocking, and I succeeded!  The trick of it is that while attaching the correct emblems to files has been non-blocking for a while, the parts of the extension that ask for context menu items has not been.  What this meant is that when you were loading a working copy, everything would be fine until you actually started clicking on stuff.  Once you did that, Nautilus would freeze for some amount of time until the menu was generated.  Unfortunately, until recently, there was no way around this due to limitations in the nautilus-python bindings.  I say &#8220;until recently&#8221; because in January of this year I took over development of the nautilus-python bindings and removed the limitation.  So with the release of nautilus-python 0.7.0 in May, we can finally populate context menus in a non-blocking way.  The catch is that this will only work if you have nautilus-python 0.7.0 or greater installed.  I just checked the package databases for Fedora and Ubuntu, and v0.7.0 is available for Fedora but not for Ubuntu (I just emailed the nautilus-python maintainer for Debian, so maybe it&#8217;ll be available in the next release).  However, we can probably set up 0.7 in a PPA for folks that want the newest shiny ;)</p>
<p>In summary, things are moving in the right direction, but just quite slowly.  There are definitely opportunities available for people who are willing to jump in and lend a hand (programming, packaging, whatever) so don&#8217;t be shy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/244/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Performance Anxiety</title>
		<link>http://blog.rabbitvcs.org/archives/164</link>
		<comments>http://blog.rabbitvcs.org/archives/164#comments</comments>
		<pubDate>Sun, 02 May 2010 11:11:26 +0000</pubDate>
		<dc:creator>Jason Heeris</dc:creator>
				<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=164</guid>
		<description><![CDATA[I&#8217;ve wanted to write something about our performance problems for a while now. It&#8217;s a long standing issue, and something that is a real showstopper for some users. I&#8217;ve written this for two reasons: firstly, to tell our users why we haven&#8217;t &#8220;just fixed it&#8221; yet; secondly, so that other/future developers can get an idea [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>I&#8217;ve wanted to write something about our performance problems for a while now. It&#8217;s a long standing issue, and something that is a real showstopper for some users. I&#8217;ve written this for two reasons: firstly, to tell our users why we haven&#8217;t &#8220;just fixed it&#8221; yet; secondly, so that other/future developers can get an idea of the WHY of the architecture and not just the HOW.</p>
<p><span id="more-164"></span></p>
<p>One of the oldest issues on the RabbitVCS issue tracker is <a title="Inadequate (sub-par) performance" href="http://code.google.com/p/rabbitvcs/issues/detail?id=4">issue number 4</a> — &#8220;Inadequate (sub-par) performance.&#8221; Hurtful, hurtful words, but ultimately true. The basic problem is that for small working copies, our extension works great. Once you get above about 50,000 items though, things really&#8230;</p>
<p>&#8230;Slow</p>
<p>&#8230;Down.</p>
<p>When you try to open up a folder with many version controlled children, Nautilus locks up. It is completely unrepsonsive until almost all the emblems are populated and — as much as I hate to say it — this renders RabbitVCS a little bit useless. Basically, we&#8217;re taking the I out of GUI.</p>
<p>Worst of all, it makes our &#8220;clever play on the word Tortoise&#8221; into a terrible, terrible irony.</p>
<h3>What Performance Problems?</h3>
<p>One of the first things  to understand is that performance is not actually the issue here. This may sound a little strange, but think about it: when our users say they want better performance, what they really seem to mean is that they want Nautilus to stay responsive. To put it another way, given the choice between:</p>
<ol>
<li>Entering a versioned directory and waiting 1 minute for all the emblems to display correctly <strong>BUT</strong> have Nautilus lock up for the whole time; and</li>
<li>Entering a versioned directory and waiting 1 minute 20 seconds for all the emblems to display, but still being able to use Nautilus</li>
</ol>
<p>…most users really seem to want (2), even though techincally (1) is the &#8220;better performance&#8221; option. Of course, if it were 20 minutes instead of one then yes, we&#8217;d have a problem. But that&#8217;s not what we&#8217;re experiencing at all. Status checks take the same amount of time, no matter what we do, no matter what language we use, no matter what the phase of the moon is. The call to vsc_client.status(path) will always always be our performance floor.</p>
<p>Now this might seem like minor semantic bickering — performance, responsiveness, who cares what you call it? But how you state a problem has a huge influence on how you deal with it (and how patient people are with your efforts&#8230;). Calling it a performance problem immediately implies a certain kind of solution, and causes well-meaning users to suggest things like <a href="http://code.google.com/p/rabbitvcs/issues/detail?id=111">JIT compilers</a> and optimisers (bah), or rewriting in C (go on then). But if you stop obsessing over performance for five seconds, the solution becomes a little clearer. As Bruce and Jason (Field) realised, as soon as a Nautilus extension becomes non-trivial you need to start looking at how to do things asynchronously.</p>
<p>The simple story is:</p>
<ol>
<li>Nautilus calls all of its Python extensions. They are all called in the same thread, and no other threading is permitted.</li>
<li>The Python extensions do their thing and return.</li>
<li>Nautilus displays the results.</li>
</ol>
<p>So if step #2 takes minutes to complete, Nautilus is frozen waiting for a function call to return. That&#8217;s our problem.</p>
<p><span style="font-weight: normal;">Doing things in the background isn&#8217;t all that trivial though. For example, some users have suggested using threads to do things asynchronously. But threading is <a href="http://mail.gnome.org/archives/nautilus-list/2009-August/msg00002.html">not permitted</a> in Nautilus Python extensions, and so either the module will hang or just fail to run (depending on the direction of the local magnetic field). The next logical step is to use a separate process for the heavy lifting, so we have something like:</span></p>
<ol>
<li>Nautilus calls all of its Python extensions.</li>
<li>The RabbitVCS extension calls a status checker service running in the background.</li>
<li>The status cache service should return immediately with either the real status or some indication that it will calculate the status (those cute little clock emblems).</li>
<li>The status is calculated.</li>
<li>The background service tells our extension when the status is calculated.</li>
<li>The extension tells Nautilus to invalidate the information for that path. This triggers another check, but now we have the status!</li>
<li>Profit.</li>
</ol>
<p>This is what we&#8217;ve achieved so far for doing the emblems. We use DBUS to communicate with a <a href="http://code.google.com/p/rabbitvcs/source/browse/trunk/rabbitvcs/services/checkerservice.py">background service</a> that is automatically started on demand — we could have simple used a self-contained subprocess, but a DBUS service means that the other parts of RabbitVCS can access it too.</p>
<h3>Diversions</h3>
<p>The transition to DBUS was not as easy as it sounds. When we first moved things out to a DBUS controlled &#8220;subprocess,&#8221; we didn&#8217;t notice any improvement. This was because the Subversion bindings we use also prevent threading, and we were trying to intersperse status checks with status requests. This lead to me implementing a hideously complicated system of another layer of subprocesses to solve this. Really, we should have been using DBUS&#8217; in-built asynchronous calling system to simplify things, which I finally got around to figuring out <a href="http://code.google.com/p/rabbitvcs/source/detail?r=2484">last week</a>.</p>
<p>Another upshot of all this was what I learned about profiling. One of the most frustrating things for me was just how difficult it was to get a decent picture of what was taking so long in the first place. Profiling (in Python or otherwise) is an arcane art — unless you have a single process with a single thread, you&#8217;re going to get some mysterious results. The things that cause the most problems are thread synchronisation mechanisms, and if you&#8217;re lucky they&#8217;ll show up as huuuuuuge blocks of time spent waiting on a locking function. If you&#8217;re unlucky, you might as well throw darts at a stack trace. (Protip: print it out first.)</p>
<p>This isn&#8217;t a fundamental flaw with Python. But I was frustrated because the Python profiling tools aren&#8217;t designed to work on individual sections of the code. The most infuriating comment from <a href="http://pound-python.org/">#python</a> regarding this was &#8220;which part of all this is cProfile.run(&#8216;foo()&#8217;) ?&#8221; <strong>It&#8217;s a freaking embedded module inside a C extension API, not a shell script!</strong> Eventually I found a way to <a href="http://stackoverflow.com/questions/1584425/return-value-while-using-cprofile">get a return value from cProfile</a> so that I can profile the functions that Nautilus calls under normal use. (Of course, the good thing about subjecting yourself to #python is that the inhabitants do help you live up to the general Python philosophy of &#8220;if it seems harder than it should be, you&#8217;re doing it wrong, or possibly you&#8217;re an idiot with unsalvageable code; but let&#8217;s work on the other thing first.&#8221; I should have used DBUS properly from the start, and I should have remembered that it&#8217;s very rare for Python/C bindings to allow threading.)</p>
<h3><strong>So Close&#8230;</strong></h3>
<p>We&#8217;re now at the point where status emblems have almost no noticeable impact on Nautilus&#8217; behaviour. Fantastic! So if we open up a test repository (in my case, sections 0-9 and A-D of the official Debian repository), Nautilus should just sit back and relax while waiting for everything to haaaaaappeeeeeeeeeoh the humanity it&#8217;s still freaking slow.</p>
<p>Here&#8217;s the problem: I forgot about the menus. Whenever Nautilus enters a new directory, it requests the menu items for the directory (&#8220;get_background_items&#8221;). This requires a status check, which yes indeed has to happen in the extension code. Nuts.</p>
<p>So why don&#8217;t we just do the same thing? Load up a menu that says <em>&#8220;Please wait, loading&#8230;&#8221;</em> and then use a callback to populate the menu? It&#8217;s a great idea, and the Nautilus extension API even has such a function: &#8220;nautilus_menu_provider_emit_items_updated_signal&#8221; which <a href="http://mail.gnome.org/archives/nautilus-list/2010-April/msg00013.html">does exactly what it says</a> on the box. Alas, the problem is with the Nautilus/Python bindings, which don&#8217;t allow us to use this method! The Nautilus/Python bindings have some real quirks in them, and it&#8217;s no trivial matter to simply pass Python objects and C interfaces around and expect things to work.</p>
<p>On the bright side, the Nautilus/Python bindings are now in the hands of Adam himself. It&#8217;s not always the case that cross-language bindings are in the hands of someone who uses them heavily enough to come up against constraints like this, so we&#8217;re at an advantage there. Adam has been hacking away to get the bindings to cover what we need, and while it&#8217;s not an easy task, it is certainly doable and should have some pretty good benefits even besides the menu signal. For example, once the proper Nautilus &#8220;update_file_info&#8221; callbacks are available, we can clean up a lot of hacky code and workarounds in the extension (possibly fixing a mysterious memory leak too).</p>
<p>I don&#8217;t want to promise anything too soon, but I <strong>do</strong> want to emphasise the fact that we are working on it, with an actual plan and everything! Keep your eye on <a href="http://code.google.com/p/rabbitvcs/issues/detail?id=4">issue #4</a>, and if you&#8217;re a developer (or feeling brave), there will be a related branch in the repository soon. When we&#8217;ve got the code sufficiently functional, we&#8217;ll also release some packages for testing. So if you&#8217;re one of our users who has had to drop RabbitVCS because of performance problems, please hang in there — we are working on it, and it won&#8217;t be long now before we&#8217;ll be asking for all the real-world testing we can get.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/164/feed</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>New release of thunarx-python bindings</title>
		<link>http://blog.rabbitvcs.org/archives/185</link>
		<comments>http://blog.rabbitvcs.org/archives/185#comments</comments>
		<pubDate>Tue, 26 Jan 2010 17:50:05 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Release]]></category>
		<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=185</guid>
		<description><![CDATA[I am happy to announce that version 0.2.0 of the thunarx-python bindings have been released and are available for download.  The big news (and the only news) is that they can now run on any version of Thunar, all the way back to 0.4.0, so you don&#8217;t need to very latest release (v1.1.0) any more. [...]]]></description>
			<content:encoded><![CDATA[<p>I am happy to announce that version 0.2.0 of the thunarx-python bindings have been released and are available for download.  The big news (and the only news) is that they can now run on any version of Thunar, all the way back to 0.4.0, so you don&#8217;t need to very latest release (v1.1.0) any more.</p>
<p>I&#8217;m in the process of getting thunarx-python hosted on Xfce.org, but it is slow going.  I&#8217;ll update everyone when this does happen, though.</p>
<p>Get it here: <a href="http://cloud.github.com/downloads/adamplumb/thunarx-python/thunarx-python-0.2.0.tar.gz">thunarx-python-0.2.0.tar.gz</a></p>
<p>SHASUM: e5838c597612d90f262add39ceae56dc59ad798b<br />
MD5SUM: 6b6555157888e7dd91a15732b4970642</p>
<p>Git Repository: http://github.com/adamplumb/thunarx-python<br />
Bug Tracker: http://github.com/adamplumb/thunarx-python/issues</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/185/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preview of RabbitVCS running on Thunar</title>
		<link>http://blog.rabbitvcs.org/archives/178</link>
		<comments>http://blog.rabbitvcs.org/archives/178#comments</comments>
		<pubDate>Thu, 21 Jan 2010 23:18:46 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=178</guid>
		<description><![CDATA[Getting RabbitVCS to run on Thunar required me to create python bindings for the Thunar Extension Framework, but that is done now and the thunarx-python bindings are a reality.  I&#8217;m in the process of getting the source code hosted on Xfce&#8217;s git repository. With RabbitVCS running on Thunar, we&#8217;re a small step closer to one [...]]]></description>
			<content:encoded><![CDATA[<p>Getting RabbitVCS to run on Thunar required me to create python bindings for the Thunar Extension Framework, but that is done now and the <a href="http://github.com/adamplumb/thunarx-python">thunarx-python bindings</a> are a reality.  I&#8217;m in the process of getting the source code hosted on Xfce&#8217;s git repository.</p>
<p>With RabbitVCS running on Thunar, we&#8217;re a small step closer to one of our big goals, which is to become file manager agnostic.</p>
<p>You can read my <a href="http://groups.google.com/group/rabbitvcs-devel/browse_thread/thread/965f210924962990">post on our mailing list</a> about my trials and tribulations getting this all to work, but RabbitVCS on Thunar is a mixed bag.  On the one hand, I was able to get sub-menus working without having to patch Thunar, but on the other hand, there will be no emblem support for the foreseeable future.  However, one thing that Thunar has that Nautilus does not is a get_dnd_actions call, which asks plugins for menu items for when the user drags and drops an item into a folder. I haven&#8217;t implemented it yet, but in the near future this will allow you to move files around in your SVN repository via drag &#8216;n drop in Thunar.  Also not implemented yet is a property page that reports file status and ownership, etc.  All of that will be ready for the v0.13 release.</p>
<p>For now, I leave you with a short video of RabbitVCS running Thunar.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/prmv2ffAOLI&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/prmv2ffAOLI&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p style="text-align: left;">Get thunarx-python here: <a href="http://github.com/adamplumb/thunarx-python">http://github.com/adamplumb/thunarx-python</a>.  I&#8217;ve made a release, and you can get that in the Downloads section in github.  Currently, the only way to install the Thunar extension for RabbitVCS is to check out the latest code from SVN and run the <a href="http://wiki.rabbitvcs.org/wiki/development/installation">development install</a>.  Instructions for installing a thunarx-python plugin is available in the thunarx-python README file.  If you&#8217;re willing to brave the install, I&#8217;d love to hear your feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/178/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Preview of the Repository Browser for v0.13</title>
		<link>http://blog.rabbitvcs.org/archives/176</link>
		<comments>http://blog.rabbitvcs.org/archives/176#comments</comments>
		<pubDate>Thu, 07 Jan 2010 19:42:57 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Status Update]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[repobrowser]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=176</guid>
		<description><![CDATA[One of the final pieces of the puzzle for v0.13 is the repository browser, and I am quite happy with it.  Sure, I bailed on having a folder tree view, and there is no drap &#8216;n drop support for moving files around, but overall I think people will find it very useful when v0.13 is [...]]]></description>
			<content:encoded><![CDATA[<p>One of the final pieces of the puzzle for v0.13 is the repository browser, and I am quite happy with it.  Sure, I bailed on having a folder tree view, and there is no drap &#8216;n drop support for moving files around, but overall I think people will find it very useful when v0.13 is released.</p>
<p style="text-align: left;">Here is a quick &#8216;n dirty video I made showing some basic functionality.  Hopefully we&#8217;ll have an alpha or beta ready for v0.13 and more people can test the new stuff out.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Oj2XXQOz8c4&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/Oj2XXQOz8c4&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/176/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A preview of new log and compare functionality in v0.13</title>
		<link>http://blog.rabbitvcs.org/archives/162</link>
		<comments>http://blog.rabbitvcs.org/archives/162#comments</comments>
		<pubDate>Fri, 30 Oct 2009 14:29:58 +0000</pubDate>
		<dc:creator>Adam Plumb</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Status Update]]></category>

		<guid isPermaLink="false">http://blog.rabbitvcs.org/?p=162</guid>
		<description><![CDATA[For me, and I think for a lot of other people, one of the key missing pieces of functionality for RabbitVCS v0.12 is robust support for comparing files, folders, and revisions; so this is the first thing I started working on for v0.13.  So far, I&#8217;ve updated the log viewer and created a new dialog [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">For me, and I think for a lot of other people, one of the key missing pieces of functionality for RabbitVCS v0.12 is robust support for comparing files, folders, and revisions; so this is the first thing I started working on for v0.13.  So far, I&#8217;ve updated the log viewer and created a new dialog devoted to comparisons, but I&#8217;ll be improving context menu functionality throughout all dialogs.  Here is a video preview of the new log view functionality and the compare dialog.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/uvAbwMDAAuY&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/uvAbwMDAAuY&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabbitvcs.org/archives/162/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

