Miguel de Icaza Miguel de Icaza's web log http://tirania.org/blog/index.html Miguel de Icaza miguel@gnome.org Fri, 16 Dec 2005 14:19:17 GMT http://backend.userland.com/rss lb# Mono Debugger <p>Martin has <a href="http://primates.ximian.com/~martin/blog/entry_151.html">announced</a> a new release of the Mono Debugger. <p>This is the first time that I have been able to use the debugger for a real application. It still has a few rough edges, but at least its working. <p>The documentation for the command line interface can be found <a href="http://www.mono-project.com/Guide:Debugger">here</a>. http://tirania.org/blog/archive/2005/Dec-16.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Dec-16.html Fri, 16 Dec 2005 19:19:00 GMT Syriana <p>Just got back from watching <a href="http://www.imdb.com/title/tt0365737/">Syriana</a>. Loved it. http://tirania.org/blog/archive/2005/Dec-12.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Dec-12.html Mon, 12 Dec 2005 07:27:00 GMT Human Development Trends <p>Various statistics of human development trends in flash-tutorial form here <a href="http://gapminder.org/">http://gapminder.org/</a>. http://tirania.org/blog/archive/2005/Dec-10.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Dec-10.html Sun, 11 Dec 2005 00:57:00 GMT Harold Pinter's Nobel Prize Lecture <p>A transcript is available <a href="http://books.guardian.co.uk/news/articles/0,6109,1661516,00.html?gusrc=rss">here</a>. <blockquote><i> <p>Political language, as used by politicians, does not venture into any of this territory since the majority of politicians, on the evidence available to us, are interested not in truth but in power and in the maintenance of that power. To maintain that power it is essential that people remain in ignorance, that they live in ignorance of the truth, even the truth of their own lives. What surrounds us therefore is a vast tapestry of lies, upon which we feed. </i></blockquote> http://tirania.org/blog/archive/2005/Dec-08.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Dec-08.html Thu, 08 Dec 2005 09:56:00 GMT Mono goes to Munich <p>I will be in Munich this week. Drop me an email if you want to meet. My schedule is a bit compact, but if you are interested you can join me and others for lunch or dinner Wednesday, Thursday or Friday. http://tirania.org/blog/archive/2005/Dec-06.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Dec-06.html Tue, 06 Dec 2005 17:47:00 GMT Jonathan Chambers Screenshots COM in Mono <P><a href="http://jonathanchambers.blogspot.com/">Jonathan</a> has posted a <a href="http://jonathanchambers.blogspot.com/2005/12/something-real.html">screenshot</a> of his COM support for Mono. The sample shows Mono launching Excel with COM interop. <p>Check Jonathan blog for more information on his effort to support COM and its variants in Mono. http://tirania.org/blog/archive/2005/Dec-03.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Dec-03.html Sat, 03 Dec 2005 06:05:00 GMT ChronoJump <p>My friend <a href="http://www.deporteyciencia.com/wiki.pl?Usuarios/Parleblas">Xavi</a> which is a sports instructor and also a circus performer got interested in Linux and free software a few years ago. He decided to learn C#, Gtk# and create his first GUI application some time ago and has now shipped it. <p>His application is <a href="http://gnome.org/projects/chronojump/index.html">ChronoJump</a>. Its interesting because he was the first user for the Gtk# port of NPlot. <p>He also built some custom hardware to take the measurements: <center> <p><a href="http://www.gnome.org/projects/chronojump/images/chronojump_graphs.jpg"><img src="http://www.gnome.org/projects/chronojump/images/chronojump_graphs_small.png"></a> <p>Some NPlot Graphs. <p><a href="http://www.gnome.org/projects/chronojump/images/chronojump-04.png"><img src="http://www.gnome.org/projects/chronojump/images/chronojump-04_small.png"></a> <p>Web report generation. <p><a href="http://www.gnome.org/projects/chronojump/images/chronopic_foto.jpg"> <img src="http://www.gnome.org/projects/chronojump/images/chronopic_foto_small.png"> </a> <p>Hardware prototype. </center> <p>More screenshots are <a href="http://gnome.org/projects/chronojump/screenshots.html">here</a>. http://tirania.org/blog/archive/2005/Dec-02.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Dec-02.html Fri, 02 Dec 2005 05:14:00 GMT The Web Desktop <p>As a follow up to yesterday's <a href="http://tirania.org/blog/archive/2005/Nov-26-2.html">web-based desktop communication engine</a>, I wanted to comment on a few ideas that we have been bouncing around. <p>Clearly the HTTP end-points on desktop applications would be useful to invoke an arbitrary set of methods on each application. I envision a system in which we can remotely manipulate desktop applications through HTTP. The same idea that I pitched a few years ago on top of CORBA. <p>The difference this time is that writing the client code is trivial, unlike the previous attempt where writing the client code to talk to a CORBA server was very difficult. <p>But in addition to this HTTP-based RPC interface, it would be nice to make the GNOME desktop Web-Aware. <p>Let me explain with a few use cases that we have been discussing at Novell: <p><a href="http://f-spot.org/Image:Main-window.png"><img src="http://f-spot.org/images/thumb/d/d0/180px-Main-window.png" align="right"></a><b>Photo Sharing:</b> A common household issue that I face is when I import pictures from a party into my <a href="http://f-spot.org">F-Spot</a> photo management program. <p>Here is where the problem arises: people want to look at the pictures right away, or they want copies of the pictures, or they want me to tag them or annotate them. All of those at once. <p>I hear you say "Post them to Flickr", well that would be fine except that the informed in the audience will demand a full resolution version. They will hand you an email address and demand that a bunch of pictures be emailed. Emailing is a drag, because more than a handful of high-resolution pictures is a drag as they typically bounce. <p>I could export to a folder and then scp the files over, but thats just because am a beautiful and unique snowflake. Other non-hacker types might not be able to pull the scp trick. <p>A few people have suggested to use the photo sharing protocol that iPhoto has. The problem is that a custom protocol for photo sharing requires photo-sharing-aware applications. And these applications are not as ubiquitous as a web browser is. <p><b>The Solution:</b> F-Spot coult have a "File/Web Share" which would basically run an HTTP server. In the particular case of F-Spot it can just embed our embeddable web server and expose the pictures with an ASP.NET application. <p>By doing this, my wife and friends can use their laptops to browse the pictures, email them, print them or send them around right there. <p><a href="http://banshee-project.org/index.php/Screenshots"><img src="http://banshee-project.org/files/shots/thumbs/banshee-main.png" align="right"/></a><b>Music Playback:</b> Today I use <a href="http://banshee-project.org/">Banshee</a> as my media player. I have it available at home on my large music repository and on my laptop with a few songs that I carry with me. <p>Again, I would like to have a "File/Web Share" option that I could use at home to play music from any room in the house from a laptop. Or when am traveling let others listen to interesting music from my laptop. <p>For this particular case, a general purpose web interface can be cooked, and the media playback could be a Flash-based MP3 player (these are very easy to produce with FlashMX). <p><b>Web Serving</b> It is not necessary for the applications to embed a web server. If embedding a web server is complicated they can just launch an external web server. <p>Mono based applications have a couple of choices: they can embed a raw HTTP server using HttpListener (available in the 2.x profile on trunk) or they can embed directly XSP which would let them host ASP.NET pages with little or no work. <p><b>Multiplexor:</b> In both cases the HTTP-based multiplexing system that I described before can be used by remote users. As far as they know the url will always be "http://machinename:123/application/frontend" or something like that. The routing system will merely send an HTTP 303 redirect to the correct port. <p>The multiplexing system is not required, is merely cute. <p><b>Summary:</b> a Web-ready GNOME desktop would have applications expose two HTTP-based interfaces: an HTML one for users and a raw HTTP interface for applications. <p>A web-aware desktop is not tremendously revolutionary, but it adds a little bit of convenience. A set of HTTP-accessible interfaces will make our desktop more scriptable than it currently is. http://tirania.org/blog/archive/2005/Nov-27-1.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-27-1.html Sun, 27 Nov 2005 16:24:00 GMT Debate <p>Havoc, I was not trying to debate. I agree with your qualifications on your second post about SOAP, in fact depending on the task or depending on the day I would choose one over another, I just took exception at the "masochist" comment. I have no desire to debate the SOAP vs REST discussions again, they were long and boring two years ago and they likely will be long and boring today. <p>That being said, my post about building the communications infrastructure on the desktop over HTTP was quite serious. I have been having this discussion over chicken schwarmas at lunch for months. I was not joking, nor was I trying to ridicule the discussion, I really believe that there is a lot to win with this model. The more I thought about it, the more sense it made to have applications speak HTTP on the desktop. <p>The discussion over SOAP and REST reminded me that I had long postponed a blog entry on my thoughts on the subject. <p>Will try to cook up a prototype activator. http://tirania.org/blog/archive/2005/Nov-27.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-27.html Sun, 27 Nov 2005 05:58:00 GMT SOAP and REST <p>Am glad that <a href="http://log.ometer.com/2005-11.html#26.3">Havoc</a> brings up the simplicity of jamming and pulling XML from a socket: <blockquote> Miguel, that's cool, I know SOAP (with a library) doesn't involve a ton of application code. My point is more that (to me) it's just not worth learning about for this sort of thing. If you want to get a couple of pieces of data on an Amazon product you just do "get url contents" and "stuff into XML parser" and "grab the Item node" and that's about it. All programmers already know how to download a URL and pull out an XML node, and being able to try out requests in the browser by editing the address in the location bar is pretty useful. "REST" is just very conceptually simple and requires no ramp-up time, even if it involves a couple more lines of code. </blockquote> <p>Recently I have been considering the implementation of a system that would replace D-BUS and CORBA with a simple HTTP framework. <p>At the core of such replacement there is an activation and arbitration system running on a well known location, for example: http://localhost:123/. This can be an Apache module or a custom built HTTP server. <p>The daemon, very much like our existing activation systems (bonobo-activation and d-bus) has a list of services that can be started on demand and provides assorted services to participants. <p>When an application starts, it registers itself with the local arbitration daemon, it does this with a RESTful call, lets say: <p>http://localhost:123/registration/id=f-spot&amp;location=http://localhost:9000/ <p>Where "f-spot" in this case is the name of the application, and "localhost:9000" is the end point where F-Spot happens to have an HTTP server running that exposes the F-Spot RESTful API. <p>A client application that wants to communicate with F-Spot always contacts the well-known end-point: <p>http://localhost:123/app/f-spot/request <p>The arbitration daemon merely returns an HTTP 303 result pointing to: http://localhost:9000/request. The http client library already has support for this redirection. <p>If F-Spot was not running, the arbitration daemon would look into a special directory that lists the available applications. The file could be called "f-spot.service" and it would describe how to launch f-spot, very similar to the way d-bus does it: <pre> [Service] Name=f-spot Exec=/opt/gnome/bin/f-spot </pre> <p>The request comes in on http://localhost:123/f-spot/request, the activator launches f-spot, f-spot registers itself using the previously discussed call, a redirect is then sent to the client and you are done. <p>To use this system as a message bus, in the same spirit as d-bus, you merely connect and listen to another well known-end point: http://localhost:123/bus/event-name. The connection is never closed by the server and clients keep reading data from this stream. <p>To push information into the bus, a POST request is done http://localhost:123/bus/event-name. The contents of the POST are then delivered to all the clients that are listening on the endpoint. <p>The format and protocol for the information that flows on that particular HTTP request as REST is up to the creator, users would have to follow that format. For example it could be one line at a time, or it could be a url pointing to the full message. <p>As for the security of this system, it should use a mechanism similar to what we have used in the past with Bonobo Activation: a randomly generated password is generated and stored on the file system in a well known location, and private location (~/.config/private/something). <p>The security process is the only component that requires a little bit of code. The rest can be implemented just with an HTTP client and the HTTP server for those providing information. A client application would only needs something like this: <pre class="shell"> FILE f = popen ("http-get-key"); fgets (password, sizeof (buf), f); close (f); </pre> <p>The benefits I think are multiple: <ul> <li>HTTP is a well known protocol. <li>There are plenty of HTTP client and server implementations that can be employed. <li>The protocol can be as simple or as complex as needed by the applications. From passing all the arguments on a REST header as arguments to the tool-aware SOAP. <li>HTTP works well with large volumes of data and large numbers of clients. <li>Scaling HTTP is a well understood problem. <li>Users can start with a REST API, but can easily move to SOAP if they need to. <li>HTTP includes format negotiations: clients can request a number of different formats and the server can send the best possible match, it is already part of the protocol. This colors the request with a second dimension if they choose to. <li>Servers can take advantage of HTTP frameworks to implement their functionality on the desktop. <li>It is not another dependency on an obscure Linux library. <li>The possibility of easily capturing, proxying and caching any requests. <li>Redirects could be used to redirect request to remote hosts <i>transparently</i> and <i>securily</i>. <li>And finally, makes the desktop "Web 2.0 ready" :-) </ul> <p>HTTP on its own has plenty of fantastic advantages that today we are bound to reimplement with things like D-Bus or live without them. <p>The implementation of this infrastructure is trivial. All I need now is a name for the project. http://tirania.org/blog/archive/2005/Nov-26-2.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-26-2.html Sun, 27 Nov 2005 00:56:00 GMT The Boo Version <p>The same version of the C# program written in Boo: <pre lang="shell"> if len(argv) < 3: print "Usage is: associate-id token searchterm" return search = AmazonSearchService () kr = KeywordRequest (keyword: argv [2], tag: argv [0], devtag: argv [1], mode:"books", page: "1", type: "lite") for detail in search.KeywordSearchRequest (kr).Details: print "Product: ${detail.ProductName}" if detail.Authors != null: print "Authors: {0}", string.Join (", ", detail.Authors) </pre> <p>To build: <pre class="shell"> $ mcs -target:library AmazonSearchService.cs -r:System.Web.Services $ booc am.boo -r:AmazonSearchService.dll </pre> <p>To run: <pre class="shell"> $ mono am.exe YourAssociateID YourToken YourQuery </pre> http://tirania.org/blog/archive/2005/Nov-26-1.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-26-1.html Sat, 26 Nov 2005 22:36:00 GMT PlanetGnome observations <p>Havoc claims on his <a href="http://log.ometer.com/2005-11.html#26">"Adventures in Web 2.0"</a> post that Amazon has a SOAP API "for masochists". What exactly is difficult about SOAP exactly? <p>It took me longer to register with Amazon and obtain my developer key after reading his post than it took me to write a small C# program. <p>Step 1: Google for "Amazon WSDL", pass the link to the wsdl compiler: <pre class="shell"> $ wsdl http://soap.amazon.com/schemas2/AmazonWebServices.wsdl </pre> <p>Step 2: register with Amazon, obtain your IDs. <p>Step 3: write trivial program: <pre class="c-sharp"> using System; using System.Web; class X { static void Main (string [] args) { if (args.Length != 3){ Console.Error.WriteLine ("Usage is: amazon amazon-affiliate-id amazon-access-key keyword"); return; } AmazonSearchService s = new AmazonSearchService (); KeywordRequest kr = new KeywordRequest (); kr.keyword = args [3]; kr.tag = args [0]; kr.devtag = args [1]; kr.mode = "books"; kr.page = "1"; kr.type = "lite"; ProductInfo pi = s.KeywordSearchRequest (kr); foreach (Details detail in pi.Details){ Console.WriteLine ("Product: {0}", detail.ProductName); if (detail.Authors != null) Console.WriteLine ("Authors: {0}", string.Join (", ", detail.Authors)); } } } </pre> <p>Step 4: Compile the sample code, and include the generated client code from WSDL, link with the Web Services library: <pre class="shell"> $ mcs am.cs AmazonSearchService.cs -r:System.Web.Services </pre> <p>Step 5: Run: <pre class="shell"> $ mono --debug am.exe myassociate-id my-key "bugs in writing" Product: Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs (Microsoft Programming Series) Authors: Steve Maguire Product: BUGS in Writing: A Guide to Debugging Your Prose (2nd Edition) Authors: lyn dupre Product: The Writing Bug (Meet the Author) Authors: Lee Bennett Hopkins, Diane Rubinger Product: BUGS in writing: A guide to debugging your prose in mathematics ; taken from BUGS in writing a guide to debugging your prose Authors: Lyn DupreÌ Product: Raewyn's Got the Writing Bug (Voyages) Authors: Raewyn Caisley, Brian Gilkes Product: The Millennium Bug.(Brief Article)(Poem) : An article from: New Statesman (1996) Product: Hooking the Nose of the Leviathan: Information, Knowledge, and the Mysteries of Bonding in The Gold Bug Variations. : An article from: The Review of Contemporary Fiction Product: Mai-Lee's bug disaster. (poem) : An article from: U.S. Kids Product: Don't Bug Me! Authors: Gillian McHale Product: All this talk about the millennium bug is sheer techno-paranoia, isn't it? But then again.... (year 2000 furor) : An article from: New Statesman (1996) </pre> <p>I concede that using SOAP with printf and jamming the output down a socket is harder than using a toolkit. But jamming down printf-generated XML down a socket without having a complete HTTP client stack implemented is asking for trouble on both counts anyways. <h3>Alvaro and US Airport Security</h3> <p>Alvaro complains about being treated like a criminal in US airports. I would argue that every time you cope with "security" you are treated like a criminal, and this is not limited to US airports. <p>Alvaro just came from Mexico, where every person entering the country is randomly subject to a full property search on arrival. The situation is no different in Europe. If you are white or European they will mostly leave you alone, but if you look remotely like arriving from Africa you get a very different treatment in immigration and customs. <p>My point is merely that singling out the US airports for this treatment is not really fair. Annoying, perhaps, but with international travel you must be ready to cope with these kinds of things. http://tirania.org/blog/archive/2005/Nov-26.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-26.html Sat, 26 Nov 2005 17:24:00 GMT March 2003 <p><center><a href="http://tirania.org/blog/pic.php?name=fight-plaque.jpg&caption=Boston"><img border=0 src="http://primates.ximian.com/~miguel/pictures/small-fight-plaque.jpg"></a><p>Boston</center></p> <p><center><a href="http://tirania.org/blog/pic.php?name=umbrella.jpg&caption=Boston"><img border=0 src="http://primates.ximian.com/~miguel/pictures/small-umbrella.jpg"></a><p>Boston</center></p> <p><center><a href="http://tirania.org/blog/pic.php?name=pgi.jpg&caption=Paris"><img border=0 src="http://primates.ximian.com/~miguel/pictures/small-pgi.jpg"></a><p>Paris</center></p> http://tirania.org/blog/archive/2005/Nov-24-1.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-24-1.html Fri, 25 Nov 2005 02:14:00 GMT New MonoDevelop release <p>Lluis has released a new version of MonoDevelop, there are plenty of new features in this release. The release notes are <a href="http://www.monodevelop.com/Release_notes_for_MonoDevelop_0.9">here</a>. <img src="http://www.monodevelop.com/files/4/43/Md-architecture.png" width="340" align="right"> <ul> <li>A Welcome Page: a starting point for your ongoing projects. <li>New component-based architecture for the IDE. For details see the <a href="http://www.monodevelop.com/Architecture_Overview">Architecture Overview</a>. <li>New Add-In manager to install, update and remove plugins for the MonoDevelop IDE. <li>A command-line build tool, so you can integrate MonoDevelop projects into your batch compilation process. <li>Smartindent for C# and Boo languages. </ul> <p>This release is the results of many months of work where he rearchitected MonoDevelop to be a modular IDE. <p>The core of MonoDevelop basically offers a framework for plugins and third-party components. The framework includes a system to install, upgrade or remove plugins and little more. For instance it does not have any notion of projects. <p>All the functionality of the IDE has been moved into its own modules that are layered on top of it. <center> <a href="http://www.monodevelop.com/files/1/14/Md-welcome-page.png"> <img src="http://www.monodevelop.com/files/1/14/Md-welcome-page.png" width="420"></a> <p>The new Welcome Page. </center> http://tirania.org/blog/archive/2005/Nov-24.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-24.html Thu, 24 Nov 2005 17:24:00 GMT OpenOffice <p>Radek Doulik <a href="http://rodo.foo.cz/blog/?p=12">talks</a> about his work on his Cairo-based Canvas for OpenOffice and shows the quality difference. <p>He also posted his <a href="http://rodo.foo.cz/OOoCon2005-Cairo-Canvas-novell.odp">slides</a> for his presentation. <h3>Office File Formats</h3> <p>Novell <a href="http://www.novell.com/prblogs/index.php?title=office_to_office_interoperability&more=1&c=1&tb=1&pb=1">will be sending</a> some folks from our Open Office team to the newly created ECMA TC45 working group. We hope to determine if the standard will be open enough and the details complete enough to allow for interoperability. http://tirania.org/blog/archive/2005/Nov-23-1.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-23-1.html Wed, 23 Nov 2005 17:22:00 GMT Gtk+/Quartz on OSX <p>Imendio has checked into CVS their <a href="http://developer.imendio.com/wiki/Gtk_Mac_OS_X">Gtk for OSX</a> port. http://tirania.org/blog/archive/2005/Nov-23.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-23.html Wed, 23 Nov 2005 17:11:00 GMT Robert Fisk Lecture in LA <p>Robert Fisk lecture in LA is available in MP3 format <a href="http://img.scoop.co.nz/media/audio/0511/robertfiskreportfromthemiddleeastucla111405.mp3">here</a>. <p>Robert is an incredible story teller. <p>In this talk he describes some of his experiences as a journalist on the Middle East in the past twenty years and why he started to write his new book "The Great War of Civilization". <p>Packed with anecdotes. The parallels between the British occupation of Iraq and the new occupation are incredible. http://tirania.org/blog/archive/2005/Nov-20.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-20.html Sun, 20 Nov 2005 05:21:00 GMT Mono Status '05 <h3>Mono Directions: (<a href="http://tirania.org/blog//texts/mono-status.html">Article Permalink</a>)</h3> <p><img src="http://primates.ximian.com/~miguel/images/mono-logo.png" align="left"/> We just released <a href="http://www.go-mono.com/archive/1.1.10/">Mono 1.1.10</a>, our best release so far. The major feature missing from this release to call it Mono 1.2 is the completion of our Windows.Forms implementation. <p>In this document I only present the direction of development of the Mono team at Novell; A more comprehensive view of other Mono developments by the Mono community is something that am working on and will post at a later date. <p>I also present how our team's priorities are shifting in response to Novell's own internal use of Mono and external factors like the final release of .NET 2.0. <h3>Index</h3> <ul> <li><a href="#devel">Code Development Process</a> <li><a href="#winforms">Windows.Forms</a> <li><a href="#two">2.0 Support</a> <li><a href="#debug">Mono Debugger</a> <li><a href="#monodevelop">MonoDevelop IDE</a> <li><a href="#vm">Mono Virtual Machine: ports</a> <li><a href="#gc">Precise Garbage Collector</a> <li><a href="#codegen">Code Generation and Optimization</a> <li><a href="#csharp">C# Compiler</a> <li><a href="#vb">Visual Basic Compiler</a> <li><a href="#cas">Code Access Security</a> <li><a href="#asp">ASP.NET</a> <li><a href="#api">API stability</a> <li><a href="#gtk">Gtk#</a> <li><a href="#google">Integration of Google Summer of Code Projects</a> <li><a href="#jscript">JScript Compiler</a> </ul> <a name="devel"/> <h3>Code Development Process</h3> <p>Since the Mono 1.1.xx series has got a significant amount of fixes over 1.0.xx we have encouraged users and developers to move to the Mono 1.1.xx series. <p>To avoid regressions we have done a number of things: <ul> <li>We incorporated all of our tests into our pre-release process `make distcheck' to ensure that we do not release something with known bugs. <li>We fixed the bugs that were preventing the NUnit tests to complete or disabled the tests that were specific to an environment (tests that require Internet access or to contact a specific host) from the standard test process. <li>We started development of new features in branches and only when the feature is complete we have "landed" the feature into the main repository. </ul> <p>We have used this separate branch development for the new string collation framework, the ASP.NET implementation, the new cross platform register allocator and the Cairo 1.0 migration. And we currently do the same for our VM optimizations, the precise garbage collector work and the C# 2.0 compiler. <p>The basic idea is that we turned the 1.1.xx series into a release that can be deployed on production as opposed to merely a development release. This is similar in spirit to the kernel 2.6.xx releases. <p>As a general rule we try to fix bugs before we write new features. <p>For details on what has been done in the 1.1.xx development cycle, please see the release notes for each of the releases: <a href="http://www.go-mono.com/archive/1.1.1/">1.1.1</a>, <a href="http://www.go-mono.com/archive/1.1.2/">1.1.2</a>, <a href="http://www.go-mono.com/archive/1.1.3/">1.1.3</a>, <a href="http://www.go-mono.com/archive/1.1.4/">1.1.4</a>, <a href="http://www.go-mono.com/archive/1.1.5/">1.1.5</a>, <a href="http://www.go-mono.com/archive/1.1.6/">1.1.6</a>, <a href="http://www.go-mono.com/archive/1.1.7/">1.1.7</a>, <a href="http://www.go-mono.com/archive/1.1.8/">1.1.8</a>, <a href="http://www.go-mono.com/archive/1.1.9/">1.1.9</a> and <a href="http://www.go-mono.com/archive/1.1.10/">1.1.10</a>. <a name="winforms"/> <h3>Windows.Forms</h3> <p>Windows.Forms is the only piece that is holding us from officially renaming Mono to Mono 1.2, it is still missing a few features. Our plan is to complete the missing features by the end of this month and then move to bug fixing and testing open source our publicly accessible Windows.Forms applications. We are planning on spending three months on bug fixing at this point. <p>Our aim with Mono 1.2 is to release a Windows.Forms implementation that implements the .NET 1.1 API, not the 2.0 API. <p>These are the most visible missing bits from feature completion: <ul> <li>Multiple Document Interface (MDI). <li>Menu merging in the presence of MDI. <li>Our RichTextBox is lacking a few features: selection margin, bullets, indentations as well as a few public methods and properties. </ul> <p>Our Windows.Forms implementation is implemented on top of the GDI+ API for rendering and a relatively small driver to interact with the host windowing system. Our GDI+ implementation on Unix (Linux and OSX) uses Cairo as the rendering engine. As for the windowing system drivers, today we have two complete drivers (Unix/X11 and Win32) and one driver under development (OSX). <p>Some minor features missing are: <ul> <li>Integrate the artwork from the <a href="http://tango-project.org/">Tango Project</a> as the default for the Windows.Forms toolkit. <li>Complete the MacOS X driver for Windows.Forms. <li>Add support for translucency to controls. <li>Double buffering: although we support double buffering we have it disabled for many controls just to keep compatibility with the settings on the same controls on Microsoft's implementation. We will likely change this setting to improve the user experience. </ul> <p>There are a number of features that we have explicitly postponed from this release and will only make it into 1.2 if they are contributed by external contributors, otherwise they will have to wait for Mono 2.0: <ul> <li><a href="http://www.pango.org">Pango.</a> Currently Windows.Forms is limited to render text with the GDI+ API so it lacks all the text rendering capabilities of Pango for international text and complex scripts. <li>Completing the Gtk+ theme module to have controls match the Gnome look and feel. <li>Our GDI+ implementation lacks support for bezier-based regions (we only support rectangles). <li>Input methods. <li>Printing. </ul> <p>Our <a href="http://www.mono-project.com/WinForms">WinForms</a> page tracks the progress. <a name="two"/> <h3>2.0 Support</h3> <p>We started work on the foundation for 2.0 in mid-2003 as soon as the early drafts of the new changes were submitted to ECMA. This gave us plenty of time to work on our C# 2.0 compiler and the changes to our VM to support generics. Today they are both considered feature complete. <p>Our IL assembler and IL disassembler are almost complete and should be able to roundtrip our generics-based libraries soon. <p>The core is complete enough that the latest versions of <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6a7fee3-6495-427f-8b1f-768a2715170c&displaylang=en">IronPython</a> and <a href="http://nemerle.org">Nermerle</a> work with it. <p>Developers are starting to use the new features available in 2.0 and they have started to file <a href="http://www.mono-project.com/Bugs">bugs</a> against our runtime and compiler. <p>So far our policy was that we supported the 1.1 profile for the libraries. The 2.0 profile is being developed but is only supported in the "if it breaks, you get to keep both pieces" modality. Bugs on the 2.0 support in the compiler and runtime were routinely fixed. <p>With the release of .NET 2.0 we are shifting some of our development efforts to work on the most important areas of the 2.0 profile. <p>We are hoping to include the most important bits of the profile in the upcoming release of Mono 1.2, but we are not making any promises about the completeness of the 2.0 APIs. Mono 1.2 will release when Windows.Forms is complete. <p>The System.Xml 2 is pretty complete, mscorlib and System assemblies still require significant amounts of work. <p>See also the <a href="#asp">ASP.NET</a> section for details on the progress in that area. <a name="debug"/> <h3>Mono Debugger</h3> <p>Martin has been working on our debugger. Today it is capable of debugging 1.x applications (2.0 should be supported as soon as Cecil support for generics is completed). <p>To test the debugger today you must use SVN versions of Mono as well as the debugger as it is still rapidly changing. <p>We are now accepting feedback on the debugger: limitations and interface. Since it currently only works as a command line debugger you might want to read the <a href="http://www.mono-project.com/Guide:Debugger">debugger guide</a> in our web site. <p>If you find problems with the debugger, please file a <a href="http://bugzilla.ximian.com/enter_bug.cgi?product=Mono%3A+Debugger">file a bug report</a>. <a name="monodevelop"/> <h3>MonoDevelop IDE</h3> <p><a href="http://primates.ximian.com/%7Elluis/blog/images/glade3.png"><img src="http://primates.ximian.com/~lluis/blog/images/galde3s.png" align="right" width="300"/></a> <a href="http://primates.ximian.com/~lluis/blog/">Lluis</a> has moved from working on ASP.NET 2.0 to work on the MonoDevelop IDE. <p>Our most important goal with MonoDevelop is to make it rock solid and eliminate every crashing bug that has been reported. <p>As for the features, MonoDevelop now sports a plugin architecture similar to Eclipse: components can be downloaded and installed without having to recompile the application (see <a href="http://primates.ximian.com/~lluis/blog/pivot/entry.php?id=42">here</a>). <p><a href="http://primates.ximian.com/~lluis/blog/pivot/entry.php?id=45">Integration</a> of a GUI designer is progressing (currently Glade3, but we hope to replace it with Stetic when it becomes available). <p>Finally as the debugger interface stabilizes we plan on enabling the debugger interface in MonoDevelop again. <a name="vm"/> <h3>Mono's Virtual Machine: Ports</h3> <p>During the last year the Mono JIT has been ported to three new architectures (x86-64, Itanium and Arm processors) in addition to the platforms it supported before (x86, PowerPC, SPARC, SPARC 64 bits and S390). <p>At this point the Novell team does not have any plans to work on new ports. Although some members of the community have expressed their interest in adding S390x and MIPS support to Mono. <a name="gc"/> <h3>Precise Garbage Collector</h3> <p><img src="http://tango-project.org/static/cvs/tango-icon-theme/scalable/mimetypes/x-directory-trash.png" align="left"/>Paolo has been working on a new garbage collector (GC) engine. Currently Mono GC interface is almost pluggable (the work to plug different GCs was done a few months ago). <p>The new GC engine is a precise, generational, compacting collector. This means that the Mono GC will be able to return memory to the operating system when it no longer needs it. <p>We are making a few tradeoffs to ship this version of the collector quickly. For instance this new GC will treat the stack conservatively has two effects: it makes it easy for embedders of Mono to use the new GC but it also might flag a lot of pinned objects. <p>We hope that the new GC can be tested in February or March, the code will start landing in December. <a name="codegen"/> <h3>Code Generation and Optimization</h3> <p>We have been working for quite some time on various new code optimizations. The code is getting ready to be submitted to the main Mono repository. Over the next few weeks expect various patches to be posted. <p>Currently we are working on the following areas to improve the performance of the generated code <ul> <li>Enabling some stronger optimizations by default (inlining and fastdce). These require us to avoid any significant regressions (both in the generated code quality as well as the JIT time). <li>New optimization framework (HSSA-based platform) and optimizations built on top of it (PRE and GVNPRE). <li>Eliminating the tree-based intermediate representation (IR) and go directly from the CIL code to the list-of-instructions IR. </ul> <p>Massi has recently posted his Fast Dead Code Elimination and he described it <a href="http://primates.ximian.com/~massi/blog/archive/2005/Nov-16.html">on this blog post</a>. <p>Massi has also been working on our HSSA-based framework and dead code elimination based on it. This optimization should be posted for review to the mailing list this week. <p>Once those two are done, Massi is going to work towards making FastDCE + CopyProp + Inlining be part of the default optimizations for Mono which will bring some immediate visible results. <p>After this our plans for HSSA are: <ul> <li>Implement copy propagation. <li>Full redundancy elimination (easier to spot than partial). <li>Partial redundancy elimination PRE (harder to spot and handle). </ul> <p>The quality of the code might suffer because removing redundant code introduces new temporary variables. To fix this we need a feedback mechanism to the register allocator that does not exist today. <p>To address the previous (and other problems) Zoltan is starting work to eliminate the tree-based IR from Mono. <pBy eliminating this stage the register allocator can do a better job (today the register allocator has no visibility inside the tree nodes). Once this is ready the redundancy elimination optimizations can actually interact with the register allocator to decide whether eliminating a redundant operation will improve the quality of the code generated or not. The development of this new IR setup will happen on a branch. <a name="csharp"/> <h3>C# Compiler</h3> <p>The C# compiler comes in two editions: <ul> <li>gmcs: supports completely the latest ECMA specification (3rd edition), produces binaries that reference the 2.0 libraries. <li>mcs: supports the latest ECMA specification minus the generic extensions (3rd edition). This produces binaries that reference the 1.0 libraries. </ul> <p>Our gmcs compiler support as of November 2005 is known to lack one feature: the late changes to nullable types in the specification. Other than that the compiler is considered feature complete. <p>As the C# compiler is at the core of much of our work we will continue to focus on bug fixes. The recent C# 3.0 features although easy to implement will have to wait. <a name="vb"/> <h3>Visual Basic</h3> <p>We had plans last year to complete a free Visual Basic compiler. Today the compiler exists in beta form and Novell will no longer fund the development of this compiler. <p>The folks at Mono Brazil have taken over the development and maintenance of the compiler. <p>The VB compiler is based on an old mcs fork that was originally created by Rafael Texeira. To upgrade the compiler from its current form to support generics in 2.0 we believe that it might be necessary to start from a fresh copy of `gmcs' and merge the various changes that make up the VB compiler. <a name="cas"/> <h3>Code Access Security</h3> <p><img src="http://tango-project.org/static/cvs/tango-icon-theme/scalable/status/locked.png" align="left"/>Code Access Security (CAS) has been available in Mono since version 1.1.4, it is enabled by running `mono' with the --security command line option. <p>Although CAS is in a very advanced stage and it will be available on Mono 1.2 we will not guarantee that CAS is complete until the next major release of Mono. We are still missing the code verifier and in 2.0 there are new CAS features that we do not implement yet. <p>Sebastien who maintains the code has been busy adding CAS attributes to our class libraries and creating the associated tests, he discussed the state of CAS <a href="http://pages.infinit.net/ctech/20051005-0314.html">here</a>. <p>As for how the CAS permissions are being set, he discusses that <a href="http://pages.infinit.net/ctech/200510.html">here</a>. <p>Sebastien has written a general bug finding tool, similar in spirit to FxCop, which we are using to set the proper CAS rules on our libraries. You can learn more on the <a href="http://www.mono-project.com/Gendarme">Gendarme page</a>. <a name="asp"/> <h3>ASP.NET</h3> <p>We released a fairly updated version of ASP.NET with Mono 1.1.9 which is much faster and consumes less memory. Our new implementation uses several tricks to improve the performance which we will blog about later. <p>In Mono 1.1.10 Gonzalo introduced a new <a href="http://www.mono-project.com/AutoConfiguration">automatic configuration</a> option to the Apache module. Setting up mod_mono now behaves like other modules for other languages, for instance users and administrators can drop .asmx, .ashx or .aspx files anywhere on their exposed directories and they will automatically be handled by Mono's ASP.NET implementation without having to make any changes to the ASP.NET configuration. <p>As for the 2.0 support in ASP.NET we have implemented various controls that do not depend on the new Configuration API (menus, trees, masterpages, gridviews and anything they require). <p><a href="http://squeedlyspooch.com/blog/">Chris Toshok</a> has taken over from Lluis on developing ASP.NET 2.0 and is almost done with the new System.Configuration namespace which is the foundation for the next batch of features in ASP.NET (profiles, portal parts and many others required it). <p>Chris has also done some work on an <a href="http://svn.myrealbox.com/viewcvs/trunk/mcs/class/Microsoft.Web.Atlas">open source implementation</a> of Atlas. <a name="api"/> <h3>API stability</h3> <p>As for the stability of the APIs: the System.* ones are set in stone and we verify the compatibility using our "corcompare" tools. The .NET 1.1.x API has been implemented (as described in <a href="http://www.go-mono.com/archive/1.0/features.html">Mono 1.0 Features</a>). <p>The Mono.* namespace on the other hand is still a moving target. <p>the Mono.Cairo assembly has had to adapt to the changes in the underlying Cairo 1.0 library and we also had to do various changes to cope with early bugs and limitations in our API design. <p>The Mono.Posix assembly has incorporated a new namespace: Mono.Unix which offers a more comprehensive binding and also provides a high-level .NET-ish API for accessing Unix as opposed to Mono.Posix which only contained raw access to Unix. <a name="gtk"/> <h3>Gtk#</h3> <p><img src="http://www.atoker.com/mono/banners/gtk.png" align="left"/>Version 2.4 of Gtk# has been released. The new features on this release are documented <a href="http://www.mono-project.com/GtkSharpNewInVersion2x">here</a>, it binds Gtk 2.4 which is the most commonly available version of Gtk+ at this point. <p>We have created an <a href="http://www.mono-project.com/GtkSharpUpgrade">upgrade guide</a> for developers moving their code from Gtk# 1 to Gtk# 2. <p>On the development side of Gtk#, a new version is available for testing that binds the Gtk+ 2.8 API and exposes a handful of new methods as well as the Cairo properties that are part of Gtk+ 2.8. <p>The work to add databinding support to Gtk# is currently on hold until Windows.Forms is completed. We expect to work again on a databound-aware Gtk# after Mono 1.2 has shipped. <a name="google"/> <h3>Integration of Google Summer of Code Projects</h3> <p>We have integrated a few of the projects that were developed thanks to the Google Summer of Code program: <ul> <li>Monodoc improvements (collaboration, Mozilla integration, CSS ification) from Mario Sopena. <li>xbuild: an implementation of msbuild is on our tree, but not compiled by default yet. By Marek Sieradzki. <li>DataGridView, by Pedro Martínez. <li>xaml compiler and helper classes from Iain McCoy. <li>The Javascript runtime improvements from Florian Gross. <li>Cecil from JB Evain is being used for Gendarme and Bugfind and we hope to start our linker soon. </ul> <p>We are planning on integrating the ASP.NET editor work from Michael Hutchinson and Blagovest Dachev as well as the bugfinder engine from Aaron Tomb into Gendarme. <a name="ado"/> <h3>ADO.NET 2</h3> <p>T Senganal will take over the maintenance of ADO.NET and will start working with the developers that are using the new features in ADO.NET 2 to get their providers working on Mono. <a name="jscript"/> <h3>JScript</h3> <p><a href="http://primates.ximian.com/~cnataren/blog/index.html">Cesar</a> is very close to pass all the Mozilla JavaScript tests with our implementation of JScript. <p>If you want to track the state of the JScript compiler and runtime see the <a href="http://www.mono-project.com/JScript">JScript page</a> on the Mono web site. <h3>End</h3> <p>You have reached the end. Congratulations! http://tirania.org/blog/archive/2005/Nov-17.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-17.html Thu, 17 Nov 2005 16:35:00 GMT TV <p>Been loving the US version of "The Office", the awkward moments are all there. <p>I also find "American Dad" hilarious. My love is divided between the fish and the alien. http://tirania.org/blog/archive/2005/Nov-16.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-16.html Thu, 17 Nov 2005 04:05:00 GMT F-Spot Monitor <p>A few weeks ago I purchased a 24" flat screen from Dell. The sole purpose of this monitor is to run <a href="http://f-spot.org/Main_Page">F-Spot</a> to manage my home photo collection. Today I completed the F-Spot setup at home. http://tirania.org/blog/archive/2005/Nov-16-1.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-16-1.html Wed, 16 Nov 2005 05:43:00 GMT Link-o-Fest'05 <p>Noam Chomsky on <a href="http://www.commondreams.org/views05/1114-25.htm">the debate about intelligent design</a>: <blockquote> <p>To proponents, intelligent design is the notion that the universe is too complex to have developed without a nudge from a higher power than evolution or natural selection. <p>To detractors, intelligent design is creationism --- the literal interpretation of the Book of Genesis --- in a thin guise, or simply vacuous, about as interesting as "I don't understand" as has always been true in the sciences before understanding is reached. <p>Accordingly, there cannot be a "debate." </blockquote> <p>Robert Fisk on <a href="http://www.commondreams.org/views05/1115-28.htm">the rebranding of torture</a>: <blockquote> <p>What Americans do to their prisoners is "abuse" and there was a wonderful moment last week when Amy Goodman, who is every leftist's dream, showed a clip from Pontecorvo's wonderful 1965 movie "The Battle of Algiers" on her Democracy Now program. "Col. Mathieu" -- the film is semi-fictional -- was shown explaining why torture was necessary to safeguard French lives. <p>Then up popped Bush's real spokesman, Scott McClellan, to say that while he would not discuss interrogation methods, the primary aim of the administration was to safeguard U.S. lives. <p>U.S. journalists now refer to "abuse laws" rather than torture laws. </blockquote> <p>Molly Ivins has her own <a href="http://www.commondreams.org/views05/1115-20.htm">take</a>: <blockquote> I have known George W. Bush since we were both in high school -- we have dozens of mutual friends. I have written two books about him and so have interviewed many dozens more who know him well in one way or another. Spare me the tough talk. He didn't play football -- he was a cheerleader. ''He is really competitive,'' said one friend. ``You wouldn't believe how tough he is on a tennis court!'' </blockquote> <p>I tried to track down Robert Fisk as he tours the US but the only confirmed dates that I have are for California this weekend and I do not feel like crossing the country. If you happen to know of any dates somewhere closer to the East Coast, please <a href="mailto:miguel@gnome.org">drop me an email</a>. <p><a href="http://www.normanfinkelstein.com">Norman Finkelstein</a> is talking on Thursday in Boston. Details are available <a href="http://www.normanfinkelstein.com/content.php?pg=9">here</a>. Norman is the author of the "Beyond Chutzpah" and "Israel-Palestine Conflict" books. Am pretty psyched. http://tirania.org/blog/archive/2005/Nov-15-2.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-15-2.html Wed, 16 Nov 2005 04:29:00 GMT Fast DCE Implementation Posted <p>Massi <a href="http://lists.ximian.com/archives/public/mono-devel-list/2005-November/015765.html">posted</a> his fast implementation of Dead Code Elimiation for the Mono runtime. <p>This is an optimization that we can hopefully enable by default, as opposed to the more expensive SSA-based optimizations. <p>This is the first on a series of optimizations patches that Massi is completing. http://tirania.org/blog/archive/2005/Nov-15-1.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-15-1.html Wed, 16 Nov 2005 03:54:00 GMT Dan Pena Ajena <p>El presidente Fox y su cabinete, nada más dan <a href="http://www.jornada.unam.mx/2005/11/15/index.php">pena ajena</a>. Que verguenza, y es que es una tras otra. Deberían de tener un examen de admisión. <p>Ese es el problema de elegir a alguien que bajaron del cerro a tamborazos. http://tirania.org/blog/archive/2005/Nov-15.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-15.html Tue, 15 Nov 2005 23:19:00 GMT Microsoft Memos <p>I was reading the <a href="http://www.hypercamp.org/2005/11/09#a43">leaked memos</a> from Microsoft and as I was reading the first few paragraphs, I could not stop thinking that nobody on their right mind writes internal company memos like this. Nobody puts this kind of history background. <p>Consider the recipients: "Executive Staff and Direct Reports; Distinguished Engineers". <p>I could not stop thinking that these memos were written to be leaked. They read like ads. <p><b>Update:</b> Alex points out that Cringely made the <a href="http://www.pbs.org/cringely/pulpit/pulpit20051110.html">same observation</a>. The difference is his article is actually interesting. Here is a tidbit: <blockquote> <p>But I have to say that Gates or Ozzie or whoever actually wrote these documents has done a very effective job of differentiating the company roles in a way that makes Google appear to be the bad guy, and Microsoft appear to be the good guy. Google is going to develop and deploy Internet services while Microsoft is going to ENABLE the deployment of such services BY ITS DEVELOPER PARTNERS. This makes Google the would-be monopolist. <p>Looking deeper, though, we see that the only way Microsoft can achieve its vision is by continuing to own the platform. They want us to be GRATEFUL, in fact, that such an enlightened outfit is running the store. And this will work to an extent, but only to an extent. Then what happens? All hell breaks loose as Microsoft again changes the game. Here's how: <a href="http://www.pbs.org/cringely/pulpit/pulpit20051110.html">read the rest</a> </blockquote> http://tirania.org/blog/archive/2005/Nov-11.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-11.html Fri, 11 Nov 2005 16:31:00 GMT Italian Fallujah Documentary <p>The Italian documentary about the use of chemical weapons in Fallujah can be downloaded <a href="http://www.truthout.org/docs_2005/printer_110805Z.shtml">here</a>. <p>A guy which sounds pretty upset about it is <a href="http://comearmageddon.blogspot.com/2005/11/stunning-hypocrisyfirst-and-foremost.html">here</a>. <p>Robert Fisk described the use of Phosphorus bombs on the civilian population of Beirut, you can read a couple of pages with Google Print: <a href="http://print.google.com/print?hl=en&id=VrXpeELOUNsC&pg=PA282&lpg=PA282&dq=phosphorus&prev=http://print.google.com/print%3Fq%3Dpity%2Bthe%2Bnation&sig=7M0Pkm7fW-0jXy4eYXQ5--P0Wq4">here</a>. <p><b>Update:</b> A reader points that the official page for the RAI documentary contains more download options and formats. The page is <a href="http://www.rainews24.rai.it/ran24/inchiesta/video.asp">here</a>. http://tirania.org/blog/archive/2005/Nov-11-1.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-11-1.html Fri, 11 Nov 2005 16:26:00 GMT F-Spot Tagging screencast <p>Jakub has done a <a href="http://jimmac.musichall.cz/weblog.php/2005/Nov/11#Tags?flav=php">screencast</a> of the new tagging feature in F-Spot. http://tirania.org/blog/archive/2005/Nov-11-2.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-11-2.html Fri, 11 Nov 2005 15:09:00 GMT Nat's Photo Tagging <p>Nat recently implemented tag-typing for F-Spot, our new photo management software. For those of us with large picture collections this is probably one of the best interfaces for tagging. <p>See Nat's post <a href="http://mail.gnome.org/archives/f-spot-list/2005-November/msg00008.html">here</a> and his latest patch <a href="http://mail.gnome.org/archives/f-spot-list/2005-November/msg00039.html">here</a>. <p>Send copious amounts of email to Nat until he does a screencast of this new feature. You have to see it to appreciate it. <p>On the hacking side of things, the beauty of this patch is that it was coded in two afternoons after long busy work days for Nat. http://tirania.org/blog/archive/2005/Nov-10.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-10.html Thu, 10 Nov 2005 05:56:00 GMT Secret Prisons <p>The Washington Post yesterday ran an <a href="http://www.washingtonpost.com/wp-dyn/content/article/2005/11/01/AR2005110101644.html">article</a> that claims that the CIA has a network of secret prisons where they have been incarcerating suspects. The CIA denies such prisons exist: <blockquote> <p>The CIA has been hiding and interrogating some of its most important al Qaeda captives at a Soviet-era compound in Eastern Europe, according to U.S. and foreign officials familiar with the arrangement. <p>The secret facility is part of a covert prison system set up by the CIA nearly four years ago that at various times has included sites in eight countries, including Thailand, Afghanistan and several democracies in Eastern Europe, as well as a small center at the Guantanamo Bay prison in Cuba, according to current and former intelligence officials and diplomats from three continents. <p>... <p>Mid-level and senior CIA officers began arguing two years ago that the system was unsustainable and diverted the agency from its unique espionage mission. <p>"We never sat down, as far as I know, and came up with a grand strategy," said one former senior intelligence officer who is familiar with the program but not the location of the prisons. "Everything was very reactive. That's how you get to a situation where you pick people up, send them into a netherworld and don't say, 'What are we going to do with them afterwards?' " </blockquote> <p><a href="http://billmon.org/archives/002330.html">Billmon weights in:</a> <blockquote> <p>The plot line should be familiar to students of the Abu Ghraib atrocities. Interrogation tactics originally developed and/or authorized for use against "high value targets" at Guantanamo were exported first to the broader Gitmo population, and then to Iraq, where they were put into mass production by a group of half-trained or entirely untrained intelligence officers and MPs. The result was an entirely predictable moral and political disaster -- one which may have cost the United States whatever slim chance it had of establishing a popular, pro-Western government in Baghdad. <p>Likewise, the CIA's mini-archipelago seems to have grown like a poisonous weed in the absence of any coherent strategy for fighting Islamic terrorism, other than the initial impulse to hunt down the "evildoers." But now, like a dog who chases cars and actually catches one, the war cabinet faces the awkward question of what do with its secret prisoners and their secret prisons, even as the media finally starts to peel back the layers of secrecy. This story is going to cause something close to panic in more than one Eastern European capital, I suspect, and a relatively quick exit from that Soviet-era "compound." Where will the CIA take its human contraband now? <p>It seems to me that the Cheney administration has been trapped -- both by its ostentatious rejection of the "law enforcement" model of counterterrorism, and by its complete, willful failure to understand the limits of hard power and the steadily rising importance of soft power in a struggle that will last years, if not decades. Policies based on the adrenaline rush of war fever (circa 2002) were never likely to be sustainable. They also haven't brought us any closer to capturing Osama or prevented the transformation of Al Qaeda from an organization to a movement, one that is much more difficult to fight with dirty war tactics. </blockquote> <p>In other news, Mexico <a href="http://www.commondreams.org/headlines05/1102-03.htm"> joined the International Criminal Court</a> which upset a few people in the US: <blockquote> Washington had warned Mexico that if it ratified the ICC and refused to sign an accord exempting U.S. nationals from the court's jurisdiction, it would cut 11.5 million dollars in funding from aid programs for fighting drug trafficking, according to human rights groups. The amount is equal to almost 40 percent of the economic aid Mexico receives from the United States. </blockquote> http://tirania.org/blog/archive/2005/Nov-03.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-03.html Thu, 03 Nov 2005 15:43:00 GMT Linux Desktop <p>Nat <a href="http://www.nat.org/2005/november/">makes an observation</a> about the Linux Desktop. http://tirania.org/blog/archive/2005/Nov-02.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Nov-02.html Wed, 02 Nov 2005 23:18:00 GMT Imeem and Mono <p>Today we did a <a href="http://www.novell.com/news/press/item.jsp?contentid=5d3366f8ce337010VgnVCM10000024f64189____">news brief</a> with the <a href="http://www.imeem.com">Imeem</a> folks. Imeem developed a client tool to create private networks with a number of tools (blogs, instant messaging, profiles, searching, file sharing). <p>Imeem uses Mono on their servers and also they use it on their MacOS port to reuse the same codebase that they had on Windows. Like iFolder, they are creating a native Objective-C interface using Cocoa and communicating with Mono to call into the engine. <p>My understanding is that Imeem uses Mono's cryptographic codebase extensively. <p>Someone should do an interview with <a href="http://blog.imeem.com/dalton/">Dalton Caldwell</a> founder and CEO of Imeem. http://tirania.org/blog/archive/2005/Oct-31.html Miguel de Icaza (miguel@gnome.org) http://tirania.org/blog/archive/2005/Oct-31.html Mon, 31 Oct 2005 23:42:00 GMT