ROX Desktop - Developers
http://localhost/desktop/taxonomy/term/30/0
Programming and software development.enCoping with Python 3
http://localhost/desktop/node/960
<p>Some distributions (e.g. Arch Linux) have decided to make the "python" command run Python 3 by default. This is a problem for us, because Python 3 is not compatible with Python 2. Most Python ROX applications start like this (e.g. Edit/AppRun):</p>
<p><div class="geshifilter"><pre class="geshifilter-python"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span></pre></div></p>
<p>On Arch Linux, these programs will now fail to start. We can't change the line to run "python2", because that doesn't exist on other systems (e.g. Debian).</p>
<p>To solve this, I've added a 0install feed for Python. If your feed currently looks like this:</p>
<p><a href="http://localhost/desktop/node/960" target="_blank">read more</a></p>http://localhost/desktop/node/960#commentsDevelopersInstallationSun, 10 Apr 2011 09:02:42 +0000Thomas Leonard960 at http://localhost/desktopProgramming in E, one year on
http://localhost/desktop/node/959
<p>
E is a "secure distributed pure-object platform and p2p scripting language".
I've been writing programs in E for a little over a year now. Here's
a quick summary of the cool features I've found so far in this surprisingly overlooked
little language.
</p>
<p><a href="http://localhost/desktop/node/959" target="_blank">read more</a></p>http://localhost/desktop/node/959#commentsDevelopersNetworkingSecuritySat, 16 Oct 2010 19:35:03 +0000Thomas Leonard959 at http://localhost/desktopVitality diagram
http://localhost/desktop/node/947
<p>There was some discussion on the mailing list about which programs are still actively maintained. Here's <a href='/images/blog/vitality-2009.png'>a diagram showing all the programs we include in the no-network bundle and their release dates</a> (from their Zero Install feeds). Releases without dates aren't shown (these are generally very old releases).</p>
<p><a href="http://localhost/desktop/node/947" target="_blank">read more</a></p>http://localhost/desktop/node/947#commentsDevelopersSun, 13 Sep 2009 17:15:22 +0000Thomas Leonard947 at http://localhost/desktopBuild improvements
http://localhost/desktop/node/942
<p><img src='/images/blog/release-process-binaries.png' width='256' height='326' alt='Release process' style='float:right; padding-left: 1em' /></p>
<p>I've been busy recently making loads of improvements for dealing with binary releases and compilation:</p>
<ul>
<li><p><a href='http://0install.net/0compile.html'>0compile</a> is now much easier to use.</p>
<p>First, there's the new <a href='http://www.nabble.com/0compile-autocompile-p23012544.html'>autocompile</a>
feature, where it takes the URL of a program and downloads and builds it,
along with any required libraries. This should make it easier to compile and
run programs like ROX-Filer on systems where up-to-date binaries aren't
available.</p>
<p>Secondly, 0compile is easier to use when compiling local source
code (e.g. a GIT checkout) - you don't have to do the build in a separate
directory and it takes the version information from the feed in the checkout,
instead of taking a copy.</p>
<p>Finally, it's better at tracking new versions of dependencies; if a new
version is available then it will prompt you to do a clean build (or revert to
the older version).</p></li>
<li><p><a href='http://0install.net/0release.html'>0release</a> is a huge
time-saver for making releases. Given the path to the local feed in a GIT
checkout it can manage the whole release process for you: creating the release
candidate, running the unit-tests, diffing against the previous version,
signing the release with your GPG key, uploading to your server, testing the
upload and updating the Zero Install feed. All you have to do is confirm the
new version number and enter your pass-phrase.</p>
<p>It's always been useful for releasing Python code, but for C programs it
previously only published source code. Now, it can
<a href='http://0install.net/0release-binaries.html'>build binaries</a> (possibly
using remote or virtual machines to build for multiple platforms) and publish
them too, automatically, for any program that can be built using 0compile.</p></li>
<li><p><a href='http://0install.net/0test.html'>0test</a> provides an easy way to run
your program's unit-tests with any dependencies, but the clever bit is that you can
test combinations of versions. For example, you can test a new release against the
last five releases of ROX-Lib with one command.</p></li>
</ul>
<p>
I've also <a href='http://www.nabble.com/ROX-CLib:--PATCH--Improved-build-process-td23242148.html'>patched ROX-CLib</a>
to use 0compile to compile. This has a number of advantages:
</p>
<p><a href="http://localhost/desktop/node/942" target="_blank">read more</a></p>http://localhost/desktop/node/942#commentsDevelopersInstallationTue, 05 May 2009 18:09:14 +0000Thomas Leonard942 at http://localhost/desktopDelight: D with Python syntax
http://localhost/desktop/node/936
<p>Ever wondered what D would be like if its syntax was inspired by Python instead of C? I had to find out, and the result is <a href='http://delight.sourceforge.net/'>Delight</a>.</p>
<p>I find the code easier to read without all the extra braces and parenthesis. Delight inherits all the D goodness: classes, interfaces, templates, exceptions, dynamic bounds-checked arrays, etc. Compared to Python, you get speed and static type checking.</p>
<p>I couldn't resist throwing in a few random changes of my own: built-in logging and a modified type system that checks for null pointers statically. I also removed all global state (static variables), and various other things I don't approve of.</p>
<p>All highly experimental, of course. <a href='http://delight.sourceforge.net/'>Get it while it's hot...</a></p>
<p><a href="http://localhost/desktop/node/936" target="_blank">read more</a></p>http://localhost/desktop/node/936#commentsDevelopersWed, 24 Sep 2008 14:02:08 +0000Thomas Leonard936 at http://localhost/desktopReinteract-ROX: a re-packaging tutorial
http://localhost/desktop/node/893
<p><img src='/images/blog/reinteract-demo.png' width='128' height='135' alt='Reinteract thumbnail' style='float:right; padding-left: 1em' /></p>
<p>
Earlier this month, Owen Taylor <a href='http://blog.fishsoup.net/2007/11/10/reinteract-better-interactive-python/'>announced Reinteract</a> ("a system for interactive experimentation with python"). I've been wanting something like this for a while now.
</p><p>
In this article, we're going to turn it into a ROX application. In the past, this has meant taking a copy of a program and renaming and changing things to fit the ROX application structure. The trouble is, the ROX version and the original upstream version diverge over time. So, we're going to look at how improvements in tooling can make things easier for us.
</p>
<p><a href="http://localhost/desktop/node/893" target="_blank">read more</a></p>http://localhost/desktop/node/893#commentsDevelopersTue, 20 Nov 2007 22:16:00 +0000Thomas Leonard893 at http://localhost/desktopGIT for translators
http://localhost/desktop/git-for-translators
<p>This is a guide for people wanting to translate ROX-Filer (or other ROX projects using GIT) into other languages.</p>
<p><a href="http://localhost/desktop/git-for-translators" target="_blank">read more</a></p>http://localhost/desktop/git-for-translators#commentsDevelopersSun, 16 Sep 2007 09:33:49 +0000Thomas Leonard825 at http://localhost/desktopUsing GIT
http://localhost/desktop/using-git
<p>Many ROX applications are developed using the GIT version control system. This is how we keep track of each change to the code (who made it, when and why), alternative lines of development (for trying out new features) and which versions correspond to official releases.</p>
<p>For example, you can click here to view ROX-Filer's repository in your browser, which will show you what we're up to at the moment:</p>
<ul>
<li><a href='http://repo.or.cz/w/rox-filer.git'>ROX-Filer's GIT repository</a></li>
</ul>
<p><a href="http://localhost/desktop/using-git" target="_blank">read more</a></p>http://localhost/desktop/using-git#commentsDevelopersSat, 14 Jul 2007 18:41:29 +0000Thomas Leonard449 at http://localhost/desktopRegression testing
http://localhost/desktop/node/425
<p>One of the great advantages of open source for library authors is that you get access to your users' <a href='http://en.wikipedia.org/wiki/Unit_testing'>unit test</a> suites. Ensuring that your library passes its own test suite before release is good, but sometimes your users are relying on features (or undocumented behaviour) you didn't test. Running their tests too can give you extra confidence, and it's easy to make this happen automatically in your release script.</p>
<p><a href="http://localhost/desktop/node/425" target="_blank">read more</a></p>http://localhost/desktop/node/425#commentsDevelopersWed, 13 Jun 2007 19:54:46 +0000Thomas Leonard425 at http://localhost/desktopAsync python Socket Server using gobject
http://localhost/desktop/node/413
<p>Recently I created a small command line python utility to process some stuff on a TCP socket connection. I used the standard python SocketServer class because it was dead simple to use for my purposes.</p>
<p>However, as the requirements of the utility grew (a GUI), I hit the main problem with SocketServers - they block - which is not so good for GUIs.</p>
<p>So, instead of using nasty old threading, I worked out how to use gobject.io_add_watch() to do everything in the gobject/gtk main loop. This makes it very simple to have this run in a gtk UI without needing threads.</p>
<p><a href="http://localhost/desktop/node/413" target="_blank">read more</a></p>http://localhost/desktop/node/413#commentsDevelopersNetworkingMon, 07 May 2007 04:49:19 +0000KenHayber413 at http://localhost/desktop