Thomas Leonard's blog http://localhost/desktop/blog/1 ROX is a fast, user friendly desktop which makes extensive use of drag-and-drop. The interface revolves around the file manager, or filer, following the traditional Unix view that `everything is a file' rather than trying to hide the filesystem beneath start menus, wizards, or druids. The aim is to make a system that is well designed and clearly presented. The ROX style favours using several small programs together instead of creating all-in-one mega-applications. en Coping 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#comments Developers Installation Sun, 10 Apr 2011 09:02:42 +0000 Thomas Leonard 960 at http://localhost/desktop Programming 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#comments Developers Networking Security Sat, 16 Oct 2010 19:35:03 +0000 Thomas Leonard 959 at http://localhost/desktop AppDirs for config and sandboxing http://localhost/desktop/node/956 <p> Normally, a ROX AppDir is a read-only directory containing program code. This makes it easy to manage programs using the filer. However, it's hard to manage configuration, which goes in various hidden files (hopefully under ~/.config). </p> <p> With <a href='http://0install.net'>0install</a>, the program's code goes in a shared cache instead, allowing it to be shared automatically, and leaving the application directory almost empty. </p> <p> This opens up the possibility of reusing the appdir for configuration. Instead of making it easy to manage <i>code</i> with the filer, this makes it easy to manage <i>configurations</i>. </p><p><a href="http://localhost/desktop/node/956" target="_blank">read more</a></p> http://localhost/desktop/node/956#comments Installation Sun, 08 Aug 2010 19:13:55 +0000 Thomas Leonard 956 at http://localhost/desktop Zero Install SAT Solver http://localhost/desktop/node/954 <p> In 2007, OSNews ran an <a href='http://www.osnews.com/story/18021/OPIUM_Optimal_Package_Install_Uninstall_Manager'>article about OPIUM</a>, showing how to cast apt-get installation problems (choosing which of several possible dependencies to install) as a set of pseudo-boolean constraints which could then be solved mathematically to give the optimal solution. I this post, I'll describe how we've recently adapted this technique to <a href='http://0install.net/'>Zero Install</a>, addressing some problems experienced by the Sugar environment (One Laptop Per Child) and allowing better integration with distribution packages.</p> <p><a href="http://localhost/desktop/node/954" target="_blank">read more</a></p> http://localhost/desktop/node/954#comments Installation Sun, 18 Apr 2010 13:57:20 +0000 Thomas Leonard 954 at http://localhost/desktop Vitality 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#comments Developers Sun, 13 Sep 2009 17:15:22 +0000 Thomas Leonard 947 at http://localhost/desktop Build 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#comments Developers Installation Tue, 05 May 2009 18:09:14 +0000 Thomas Leonard 942 at http://localhost/desktop Peer-to-peer software installation http://localhost/desktop/node/939 <p>Experimental, but if you have a cluster of machines and don't want to have to download the same packages for each one, the new <a href='http://0install.net/0share.html'>peer-to-peer sharing</a> system allows a machine to discover that a nearby machine has the program it wants and copy it across directly!</p> <p><img src='http://0install.net/screens/p2p.png' alt='screenshot' /></p> http://localhost/desktop/node/939#comments Installation Sun, 14 Dec 2008 20:54:27 +0000 Thomas Leonard 939 at http://localhost/desktop Reviews with Google Friend Connect http://localhost/desktop/node/938 <p><a href='http://www.google.com/friendconnect/'>Google Friend Connect</a> has just been made available for testing, and I've been trying it out by adding some widgets to the <a href='http://roscidus.com/0mirror/'>Roscidus Zero Install Mirror</a>. You should be able to signing using OpenID, your Google account, etc, and post reviews of the software there.</p> <p>Seems pretty easy to use.</p> http://localhost/desktop/node/938#comments Sun, 07 Dec 2008 12:48:57 +0000 Thomas Leonard 938 at http://localhost/desktop Delight: 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#comments Developers Wed, 24 Sep 2008 14:02:08 +0000 Thomas Leonard 936 at http://localhost/desktop Who's talking to whom? http://localhost/desktop/node/917 <p>One way to understand how your system works is to look at which programs talk to other programs.<br /> Here's a graph showing all the processes on my system and their sockets:</p> <p><a href="http://roscidus.com/desktop/node/917"><img src="http://roscidus.com/images/blog/sockets.png" width='640' height='410' alt='Graph of socket connections' /></a></p> <p><a href="http://localhost/desktop/node/917" target="_blank">read more</a></p> http://localhost/desktop/node/917#comments Networking Sun, 01 Jun 2008 10:55:55 +0000 Thomas Leonard 917 at http://localhost/desktop