<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.6(BH)" -->
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Planet Maemo: category &quot;feed:520d3e73475205682415b043c602917d&quot;</title>
        <description>Blog entries from Maemo community</description>
        <link>http://maemo.org/news/planet-maemo/</link>
        <lastBuildDate>Sun, 24 May 2026 09:56:40 +0000</lastBuildDate>
        <generator>FeedCreator 1.7.6(BH)</generator>
        <language>en</language>
        <managingEditor>planet@maemo.org</managingEditor>
        <item>
            <title>What’s cooking for the Application Manager?</title>
            <link>http://mariusv.wordpress.com/2009/08/12/whats-cooking-for-the-application-manager-2/</link>
            <description><![CDATA[
<p>I am no longer closely involved with the venerable, aging, and often renamed Hildon Application Manager; <a href="http://blogs.igalia.com/vjaquez/">Víctor</a> has very successfully<br />
stepped into bigger shoes and is maintaining it now.  Nevertheless, I<br />
can&#8217;t stop myself from giving a brief rundown of its new Fremantle<br />
features.<br />
<span id="more-34"></span><br />
Development has moved to <a href="http://gitorious.org/hildon-application-manager">Gitorious</a>, so you can check the detailed<br />
history there.</p>
<p>The common theme of the changes is &#8220;policy&#8221;.  The application manager<br />
has gained a lot more attitude and polices packages much more than<br />
before.</p>
<p>Some of these policies have been designed by the Maemo community,<br />
others not so much.  In my opinion, most of them are better off being<br />
implemented in the Maemo package upload processes than in the<br />
application manager.</p>
<p>I think it would be good to copy the rules into the Maemo QA process<br />
and reduce the policy implemented by the application manager to a<br />
simple &#8220;Does it come from the Maemo Extras repository&#8221; check.</p>
<p><strong>Application categories</strong></p>
<p>We finally managed to ship the category cleanups that had been<br />
prepared for Diablo: The application manager has a builtin list of<br />
valid categories, and any package that has a category not in this list<br />
is forcefully moved to &#8220;Other&#8221;.</p>
<p>The list of categories is maintained by the Maemo community; see <a href="http://wiki.maemo.org/Task:fremantle_application_categories">here</a> for more information.</p>
<p>So if you find your package in &#8220;Other&#8221;, you should probably update its<br />
category.</p>
<p><strong>OS Update Protectionism</strong></p>
<p>The application manager is still not as smart as apt-get or aptitude<br />
when it comes to navigating the system out of a tight spot.  This<br />
means that a application package can prevent the installation of a OS<br />
update in obscure ways.</p>
<p>For example, if an application package depends on a specific version<br />
of a OS package, and on that version only, then this OS package can<br />
not be updated without first removing the application package.<br />
Ideally, the application manager would explain this clearly to the<br />
user and just do what is necessary after getting confirmation to<br />
remove the application package.</p>
<p>The current application manager will just sit there and refuse to<br />
help.</p>
<p>Instead of smartening up it, the application manager now checks for<br />
some problematic dependencies and conflicts that could potentially<br />
interfere with the next OS update and refuses to install packages that<br />
fail the check.</p>
<p>If package X is a OS package, then a package will be rejected when it<br />
declares one or more of the following relationships with X:</p>
<pre>Depends: X (= version)        (or Pre-Depends)
Depends: X (&lt; version)
Depends: X (&lt;= version)
Conflicts: X (&gt; version)      (or Breaks)
Conflicts: X (&gt;= version)
Conflicts: X                  (well, couldn't be installed anyway)</pre>
<p>Note that X must be a OS package for these rules to apply.<br />
Technically, a package is a OS package when it is a direct dependency<br />
of any installed package with the &#8220;system-update&#8221; flag.</p>
<p>If a package has one of these problematic dependencies, then that is<br />
very likely a bug that should be fixed.</p>
<p>There is a <a href="http://wiki.maemo.org/Extras/3rd_Party_Package_Policy">Wiki page</a> about this.</p>
<p><strong>Erase-Everything-Reflashing tries to scare us again from afar.</strong></p>
<p>Sometimes, a package can not be installed.  Maybe some of its<br />
dependencies are missing, or there are unresolvable conflicts.  A<br />
error message is displayed in this case.</p>
<p>If this happens to a OS update, the error message will now<br />
tell people to reflash their device, like we did in times memorial.</p>
<p>I think this error message gives bad advice, and I am a bit worried<br />
that it might be easily triggered by accident.</p>
<p>If you see this error message, please read it as &#8220;There is a bug<br />
somehwere that prevents this OS update from being installed.&#8221;  We<br />
should try hard to find this bug.</p>
<p>Let&#8217;s hope that the tighter policy checks will prevent this error message from ever being seen.</p>
<p><strong>Installation from memory cards is no longer supported.</strong></p>
<p>A new way of copying information has been invented recently, rather<br />
blandly named &#8220;The Internet&#8221;.  We don&#8217;t know yet whether it will be a<br />
success, but some people seem to be using it already.  It is not<br />
unlikely that, in the not so distant future, most software will be<br />
&#8216;downloaded&#8217; though a series of &#8216;tubes&#8217; instead of being ferried<br />
around on physical media.  We are watching this development carefully.</p>
<p><strong>Installation of standalone Debian package files is harder.</strong></p>
<p>You need to go to red-pill mode now to install a *.deb file directly.<br />
We really want people to install packages from only very few, well<br />
controlled sources, like the Maemo Extras repository.</p>
<p><strong>Maemo-select-menu location has disappeared.</strong></p>
<p>Just don&#8217;t use it.  In general, try not to perform any user<br />
interaction during package installation.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/34/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=34&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">25 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=ecb7f4ce878011dea732a7ab904386c786c7&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/ecb7f4ce878011dea732a7ab904386c786c7/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=ecb7f4ce878011dea732a7ab904386c786c7&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/ecb7f4ce878011dea732a7ab904386c786c7/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Wed, 12 Aug 2009 19:58:09 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-ecb7f4ce878011dea732a7ab904386c786c7</guid>
        </item>
        <item>
            <title>The cardinal sin of Scratchbox, a backhanded stab at the Maemo SDK+, and the promise of a pot ...</title>
            <link>http://mariusv.wordpress.com/2008/12/07/the-cardinal-sin-of-scratchbox-a-backhanded-stab-at-the-maemo-sdk-and-the-promise-of-a-pot-of-gold/</link>
            <description><![CDATA[
<p>Ok, this is a long one.  This was floating around my brain for a while, and it is time to lay it to rest.  Get a coffee and make yourself comfortable.</p>
<p>Scratchbox is a success, and life has adapted to its kinks.  Our software has formed calluses around the places where Scratchbox used to cause pain.</p>
<p>If all goes according to plan, then the Maemo SDK will move from Scratchbox 1 to Scratchbox 2 in the near future.  This might require our software to develop calluses in new places, but that is OK.  The benefits of SDK+ will hopefully outweigh the cost of switching.</p>
<p>So I think this is a good opportunity as any to take a look at what Scratchbox and the Maemo SDK get wrong, in my opinion.</p>
<p>The big sin of Scratchbox 1 is wanton redirection to places that are outside the target.  The Maemo SDK inherited that sin without questioning it, and I am afraid the Maemo SDK+ will continue with it, even tho Scratchbox 2 would allow us to repent.</p>
<p>By way of example, consider how Scratchbox and the Maemo SDKs handle &#8220;autoconf&#8221;.</p>
<p>The nice trick of Scratchbox 1 and 2 is to put you in an environment that looks and feels like a native ARM machine (say) by emulating the CPU, but processor-hungry tools like the compiler are still natively fast.  This trick is achieved by provisioning alternative binaries of the processor-hungry tools. These alternative binaries are functionally equivalent to the real ones, but they use the instruction set of the native CPU, not the emulated one.  Scratchbox magically executes them instead of the real binaries and thus avoids the emulation overhead.</p>
<p>So, how would you expect Scratchbox to handle autoconf, which is a shell script?</p>
<p>I would expect Scratchbox to do nothing about the /usr/bin/autoconf script itself.  The desired speed up comes from having a alternative binary for /bin/sh, the interpreter.</p>
<p>Still, Scratchbox has autoconf in /scratchbox/tools/bin/ and accesses to /usr/bin/autoconf get redirected to /scratchbox/tools/bin/autoconf. Why?</p>
<p>The only reason can be bootstrapping or more generally, supporting incomplete systems.  This is another basic trick of Scratchbox: you have a running autoconf even when your /usr/bin is still empty.  This can be a great help when breaking the cyclic dependencies so typical of bootstrapping.</p>
<p>But, do we need the redirection magic for this?  After all, if /usr/bin is empty, the shell will not find autoconf there and will not even attempt to run /usr/bin/autoconf.  That&#8217;s why /scratchbox/tools/bin is included in your PATH by default, and autoconf and a host of other much more useful tools such as ls, cp, and mkdir are available to you from there even if your root filesystem is empty.</p>
<p>But, as soon as you have bootstrapped your system enough to have its own mkdir or autoconf, Scratchbox should step back and hand control over to the growing system.  The emulation magic of Scratchbox will make sure that the system&#8217;s tools can be used even when they are compiled for a different architecture.</p>
<p>Thus, redirection is not really useful for bootstrapping or incomplete systems, and should not be used to make ghosts of binaries available in places that are really empty.  Stepping back and handing over control can then be as simple as putting /scratchbox/tools/bin at the end of PATH.</p>
<p>This is not what Scratchbox does, and I frankly don&#8217;t know why.  It&#8217;s easy to fix, by changing the default path and redirection rules, but still it puzzles me why the defaults for the Maemo SDK are the way they are.  Defaults matter a lot when build bots enter the picture that run the Maemo SDK in its default configuration.</p>
<p>The way Scratchbox tries to stay in control of your growing system, you might think it is jealous and doesn&#8217;t want it to grow up enough to become independent.  With the current setup, you are bound to grow not only incomplete, but also inconsistent systems that are forever bound to run nowhere else but in Scratchbox.</p>
<p>As a simple example, some portable programs hardcode the location of perl into their scripts.  If you need these programs during early phases of bootstrapping, before you have added perl itself to the system, they will pick up /scratchbox/tools/bin/perl and will happily go to work bootstrapping the system further.  Later, after bringing perl into the system, you will retrace the dependency cycle so that the programs will now hardcode /usr/bin/perl into their scripts, the real location of perl in the system that you are building.  With the default Scratchbox, this is not what is happening: even on the second round, the programs will hardcode /scratchbox/tools/bin/perl.  This of course will not work when the program is running in a real Maemo device that only has /usr/bin/perl.</p>
<p>(Incidentally, some scripts in the Maemo SDK+ rootstraps still refer to programs in /scratchbox/tools/bin.)</p>
<p>Worse, Scratchbox&#8217;s Perl might be sufficiently different from the one you want to have in your system, courtesy of devkits being a notoriously hard to maintain and slow distribution mechanism.</p>
<p>The same thing continues to happen even if bootstrapping should be long over.  Essentially, what used to be a perfectly portable program has to changed to compile correctly in the Maemo SDK.  This is a useless activity, much more useless than making a program cross-compilable.</p>
<p>Thus, /scratchbox/tools/bin etc should be at the end of PATH.  But, that is not enough: Scratchbox will still redirect /usr/bin/perl to /scratchbox/bin/perl and you still have to fight against the core devkit.  Except now everything turns to magic, &#8220;which&#8221; is lying to you, and you can spend the better part of the day figuring out why things don&#8217;t behave the way you expect them to.</p>
<p>So, redirection is useless and harmful and the default PATH inside Scratchbox is wrong.</p>
<p>But what about the first trick, avoiding the expensive CPU emulation for processor-hungry programs like the compiler?  The speedup is crucial and it is worth to tolerate a bit of redirection ugliness to get it.  If we can get the speedup in a non-ugly way, that would be better.</p>
<p>The first important thing to realize is that the list of binaries to speed up can be quite short and very explicit: /bin/sh, the coreutils, /usr/bin/make, /usr/bin/perl, /usr/bin/m4, /usr/lib/gcc/*/cc1, /usr/lib/gcc/*/cc1plus, /usr/bin/as, and /usr/bin/ld should get us pretty far.  It might even be enough.  There is no point to try to speed up interpreted programs and libraries like shell scripts and Perl modules.  Bootstrapping is over, the point of redirecting /usr/bin/perl is to speed it up, not because we don&#8217;t have it yet.</p>
<p>The second important point is that to speed up /usr/bin/perl in this way, it has to be replaced with a functionally equivalent program. Same version, same compile time configuration, same everything except for the target instruction set.  Improving qemu to do some JITing with caching would be great.  Taking the configured source and compiling it again but this time for Intel is probably a more realistic approach for the time being.</p>
<p>In other words, I don&#8217;t want to use Scratchbox&#8217;s i386 Perl binary to speed up Maemo&#8217;s armel Perl binary.  I obviously want to use Maemo&#8217;s i386 Perl to speed up Maemo&#8217;s armel Perl.</p>
<p>I also don&#8217;t want to use Debian&#8217;s Perl to speed up Maemo&#8217;s Perl.  This is what the Maemo SDK+ is doing and it is equally as wrong as using Scratchbox&#8217;s Perl.</p>
<p>Scratchbox 2 is not so much redirecting executables, what it does is better described as assembling a new filesystem according to mapping rules.  It does this in a much cleaner and much more flexible way than Scratchbox 1.</p>
<p>What the Maemo SDK+ does with it, however, is to again shadow parts of Maemo freely and massively with things from outside of Maemo.  Almost everything comes from a Debian etch chroot.  Why?</p>
<p>This time, the reason seems to be that someone tried to learn a lesson from devkits.  Devkits are hard to keep up-to-date and people continuously complained about them being behind Debian.  So, the solution was to replace the devkits with Debian.</p>
<p>This is still missing the point, though: For people working on Maemo, Debian is just as hard to maintain as the devkits, even more so.  Just try to seriously answer the question which Debian distribution we should be using exactly for (half of) our build dependencies.  Stable? Come on, even devkits are more recent.  Testing?  Maybe, but why not unstable?  Maybe some packages from unstable and some from testing? Maybe people can decide on their own?</p>
<p>The complaint that devkits are out-of-date should be countered by removing devkits from the picture, but we shouldn&#8217;t stop there. General redirection to places outside of Maemo needs to stop.  Maemo itself should contain exactly what we need.  Build dependencies in devkits: bad, build dependencies in a distribution: hmmkay-ish.  Build dependencies in our own distribution: for the win!</p>
<p>We should not use Perl from Debian, we should use our own Perl.  It&#8217;s part of Maemo and not using it in the SDK is schizophrenic.  If we need something from Debian, we should import it and make it part of Maemo, explicitly and in a controlled way, like we have been doing it since the dawn of Maemo for packages that are primarily meant for the devices.</p>
<p>To put it another way: I want a simple setup that allows us to work on Maemo itself.  I don&#8217;t want a SDK that is a mix of packages from an old version of Debian and from Maemo, implemented via obscure and overly specific hacks to high level tools like dpkg-checkbuilddeps, and having to switch between under documented virtualization modes depending on whether I want to run &#8220;make all&#8221; or &#8220;make install&#8221;. Maemo can and should be big enough to contain its own build dependencies, and the virtualization tools should behave in a simple way.<br />
So here is what I did as an experiment:</p>
<ul>
<li> I installed the maemo SDK+ with both diablo_4.1.1 rootstraps.</li>
<li> I modified the configuration so that the armel rootstrap uses the i386 rootstrap as its &#8220;tool root&#8221;, and I disabled the gcc magic that Scratchbox 2 usually does.</li>
<li> I wrote a new mapping mode for Scratchbox 2 that essentially gives you the following layout:<code><br />
/                       -&gt;  diablo_4.1.1_armel rootstrap<br />
/home                   -&gt;  host<br />
/dev                    -&gt;  host<br />
/proc                   -&gt;  host<br />
/sys                    -&gt;  host<br />
/etc/passwd             -&gt;  host<br />
/etc/resolv.conf        -&gt;  host<br />
/usr/share/scratchbox2  -&gt;  host<br />
</code></li>
</ul>
<p>At this point, you should have a working, fully emulated Diablo 4.1.1 environment.  (Maybe this is the same as the &#8220;emulate&#8221; mode of Scratchbox 2, but I prefer to start from scratch in order to understand the magic better.)</p>
<p>You can compile stuff, but it is slow.  Also, qemu is less than transparent and can&#8217;t seem to run /usr/bin/make, for example, which is a bit of a show stopper.  Also also, find, xarg, and md5sum are missing and some tools expect /scratchbox/tools/bin to be there&#8230; oh well.</p>
<ul>
<li> The following mappings make native binaries visible inside the Scratchbox target:<code><br />
/tools                  -&gt;  diablo_4.1.1_i386 rootstrap, read only<br />
/opt/maemo/             -&gt;  host<br />
</code></li>
<li> Then some symlinks for speed:<br />
<code><br />
/bin/bash      -&gt;   /tools/bin/bash<br />
/usr/bin/make  -&gt;   /tools/usr/bin/make<br />
/usr/bin/m4    -&gt;   /tools/usr/bin/m4<br />
/usr/bin/perl  -&gt;   /tools/usr/bin/perl</code></li>
<li> Also for Perl .so modules:<code><br />
/usr/lib/perl/5.8/auto/File/Glob/Glob.so -&gt; /tools/...<br />
...<br />
</code></li>
<li> For the compiler, I made a small wrapper since as a cross compiler, it doesn&#8217;t dare to look into the standard places for header files and libraries.  This needs to be done more cleanly and more thoroughly of course and maybe I should be using Scratchbox&#8217;s magic instead. But for now I prefer it explicit:<code><br />
#! /bin/sh<br />
cc=/opt/maemo/tools/arm-2005q3/bin/arm-none-linux-gnueabi-gcc<br />
$cc -I/usr/include -L/usr/lib -Wl,-rpath-link -Wl,/usr/lib "$@"<br />
</code></li>
</ul>
<p>With this, &#8220;dpkg-buildpackage&#8221; runs successfully and with no real slowdown.  I am happy.</p>
<p>Open issues:</p>
<ul>
<li> Fakeroot doesn&#8217;t seem to work.  (I used the fantastic &#8220;sb -R&#8221; to get around this.  Love it.  But fakeroot just needs to be there as well for completeness.)</li>
<li> The cross-compiler toolchain needs to move into Maemo and needs to be properly tuned.</li>
<li> Some tools needs to be written to manage the symlinks, maybe in cooperation with the actual packages whose binaries we redirect.</li>
<li>The Maemo warts need to be removed, such as the missing /usr/bin/find.</li>
</ul>
<p>That&#8217;s it! Thanks for reading, and happy crossing!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/18/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=18&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">14 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=97b80432c49e11ddb74489bdc2d77cff7cff&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/97b80432c49e11ddb74489bdc2d77cff7cff/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=97b80432c49e11ddb74489bdc2d77cff7cff&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/97b80432c49e11ddb74489bdc2d77cff7cff/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Sun, 07 Dec 2008 19:37:10 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-97b80432c49e11ddb74489bdc2d77cff7cff</guid>
        </item>
        <item>
            <title>Minimal debian/rules?</title>
            <link>http://mariusv.wordpress.com/2008/11/27/minimal-debianrules/</link>
            <description><![CDATA[
<p><code>$ ls -l ./debian/rules<br />
lrwxrwxrwx 1 mvo mvo 11 2008-11-27 02:50 ./debian/rules -&gt; /usr/bin/dh</code></p>
<p>Lintian is not happy.</p>
<p>Actually,</p>
<p><code>$ cat debian/rules<br />
dh $1<br />
</code></p>
<p>works, too, since everybody seems to run debian/rules via /bin/sh anyway.<br />
Lintian still not happy.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/14/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=14&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">2 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=64a4ea80c26c11dd8c790d726b1966fb66fb&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/64a4ea80c26c11dd8c790d726b1966fb66fb/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=64a4ea80c26c11dd8c790d726b1966fb66fb&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/64a4ea80c26c11dd8c790d726b1966fb66fb/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Thu, 27 Nov 2008 00:59:53 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-64a4ea80c26c11dd8c790d726b1966fb66fb</guid>
        </item>
        <item>
            <title>We don’t need no education.</title>
            <link>http://mariusv.wordpress.com/2008/06/15/we-dont-need-no-education/</link>
            <description><![CDATA[
<p>Bruce Perens has a good <a href="http://technocrat.net/d/2008/6/11/43198">reply</a> to Ari Jaaksi&#8217;s <a href="http://news.zdnet.co.uk/hardware/0,1000000091,39432956,00.htm">keynote</a>, but I am sure that the &#8216;bright line&#8217; approach is not new to Nokia.</p>
<p>I have not heard the keynote and I haven&#8217;t seen a transscript yet, but unless proven wrong, I want to believe that Ari has been misunderstood: with enough determination, you can read what he says as an attack on the mobile phone industry: He might have wanted to say that parts of the Open Source and Free Software communities have a hard time imagining how utterly backwards and behind the mobile phone industry is.</p>
<p>(Just look at what happened when the 3G spectrum licenses <a href="http://emertech.wharton.upenn.edu/ford/Ford3GWireless.pdf">were auctioned off</a>.  <a href="http://en.wikipedia.org/wiki/Telecoms_crash">Insanity</a>.)</p>
<p>When Ari says &#8220;Why do we need closed vehicles? We do.&#8221;,  I read this as: &#8220;I know there are no good reason, only bad ones, let&#8217;s not waste time arguing about it and hope the bad reasons go away by themselves.&#8221;</p>
<p>When he says &#8220;As an industry, we plan to use open-source technologies, but we are not yet ready to play by the rules&#8221;, he can&#8217;t be implying that Nokia is not going to honor the licenses of code that they are using. They have to and they do.  Maybe he means that Nokia can not yet afford to speak out against DRM and device lock-down without being hypocritical, but he knows that people are hoping for such statements.</p>
<p>Yeah, I have nice rose-colored glasses.  I hope Ari clarifies his message in the near future.</p>
<p>(In any case, switching your code to GPLv3 seems like a good thing to do when you are worried about Nokia pulling a Tivo.)</p>
<p><strong>Update:</strong> After taking off my rose-colored glasses, I saw <a href="http://jaaksi.blogspot.com/2008/06/some-learning-to-do.html">this</a>.  Well, what can I say.  Ari, I guess it is better if you let Quim do the talking.</p><br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mariusv.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mariusv.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/12/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=12&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">4 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=bcd627043a6911dd979ea9b461ceef10ef10&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/bcd627043a6911dd979ea9b461ceef10ef10/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=bcd627043a6911dd979ea9b461ceef10ef10&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/bcd627043a6911dd979ea9b461ceef10ef10/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Sat, 14 Jun 2008 23:18:53 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-bcd627043a6911dd979ea9b461ceef10ef10</guid>
        </item>
        <item>
            <title>A pleasant surprise.</title>
            <link>http://mariusv.wordpress.com/2008/05/07/a-pleasant-surprise/</link>
            <description><![CDATA[
<p>I just upgraded a N800 from Chinook to a internal Diablo pre-release with apt-get.  This was never supposed to work, but it just does anyway. Nice!</p>
<p>It&#8217;s also quite easy:</p>
<ul>
<li>Put the device into R&amp;D mode and disable the lifeguard reset.</li>
<li>Make sure you have a lot of free space in <code>/</code> and/or move the apt archive cache from <code>/var/cache/apt/archives</code> to a memory card.</li>
<li>Run <code>apt-get install osso-software-version-rx34-unlocked</code> in a shell that doesn&#8217;t die when the network goes down.</li>
<li>Make some coffee, walk the dogs, plant a tree.</li>
<li><b>Updated:</b> Run <code>flash-and-reboot</code> and let it flash the kernel and initfs.</li>
<li>File bugs.</li>
</ul>
<p>I hope we can soon announce the repository that you need for this, but I can&#8217;t make any promises.</p><br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mariusv.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mariusv.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/11/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=11&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">10 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=c67daf7c1c6c11dd84acf98809cbc068c068&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/c67daf7c1c6c11dd84acf98809cbc068c068/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=c67daf7c1c6c11dd84acf98809cbc068c068&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/c67daf7c1c6c11dd84acf98809cbc068c068/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Wed, 07 May 2008 19:32:53 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-c67daf7c1c6c11dd84acf98809cbc068c068</guid>
        </item>
        <item>
            <title>History Meme</title>
            <link>http://mariusv.wordpress.com/2008/04/19/history-meme/</link>
            <description><![CDATA[
<p><code><br />
$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head<br />
1 emacs<br />
</code></p><br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mariusv.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mariusv.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/10/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=10&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=56a44a260e2511dd8d438f10d4f075ba75ba&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/56a44a260e2511dd8d438f10d4f075ba75ba/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>5 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=56a44a260e2511dd8d438f10d4f075ba75ba&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/56a44a260e2511dd8d438f10d4f075ba75ba/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Sat, 19 Apr 2008 14:36:25 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-56a44a260e2511dd8d438f10d4f075ba75ba</guid>
        </item>
        <item>
            <title>The maemo Extras catalogue and its dot-install files</title>
            <link>http://mariusv.wordpress.com/2007/12/02/the-maemo-extras-catalogue-and-its-dot-install-files/</link>
            <description><![CDATA[
<p>(If you read this in Planet maemo, the formatting is farked up. Please read the original.)</p>
<p>Summary: A dot-install file for package &#8220;&lt;goo&gt;&#8221; in &#8220;maemo Extras&#8221; should<br />
look like this:</p>
<blockquote><p><code>[install]<br />
repo_name = maemo Extras<br />
repo_deb = deb <a href="http://repository.maemo.org/extras/" rel="nofollow">http://repository.maemo.org/extras/</a> mistral free non-free<br />
repo_deb_3 = deb <a href="http://repository.maemo.org/extras/" rel="nofollow">http://repository.maemo.org/extras/</a> bora free non-free<br />
catalogues = maemo-extras<br />
package = &lt;goo&gt;</code></p>
<p><code>[maemo-extras]<br />
name = maemo Extras<br />
uri = <a href="http://repository.maemo.org/extras/" rel="nofollow">http://repository.maemo.org/extras/</a><br />
components = free non-free</code></p></blockquote>
<p>The only variable here is &#8220;&lt;goo&gt;&#8221;, the rest should be copied verbatim.<br />
Specifically, you should not list any other repository besides<br />
&#8220;maemo-extras&#8221;.  (And make sure you have the trailing slash in the uri.)</p>
<p>Read on if you are bored or want to know why.<span id="more-9"></span></p>
<p>The maemo Extras repository is hopefully becoming the central place<br />
where everyody is putting his or her maemo packages.  The need to<br />
access other repositories will hopefull decrease as maemo Extras<br />
continues to grow.</p>
<p>Ideally, a OS2008 user only needs to open the Application Manager,<br />
enable the &#8220;maemo Extras&#8221; catalogue, and will find a nicely<br />
categorized list of applications and other add-ons that are painless<br />
to install (and a joy to use, and easy to keep up-to-date, and<br />
uninstall cleanly, and &#8230; you get the point).</p>
<p>One important inredient to make this happen is to make sure that your<br />
package does not depend on other packages that are not also in the<br />
maemo Extras repository or available in the OS2008 images.</p>
<p>That should be a pretty obvious rule.  Think about the &#8220;use case&#8221;<br />
above: someone enables the &#8220;maemo Extras&#8221; catalogue and will then see<br />
your package in the Application Manager.  If it depends on some<br />
library that is only available in the SDK repository, it will not be<br />
installable.</p>
<p>Thus, if your package depends on packages that are not already in<br />
&#8220;maemo Extras&#8221; (and are not on people&#8217;s devices by default), you need<br />
to get those packages into &#8220;maemo Extras&#8221; as well.  Specifically, the<br />
SDK guys should make sure that all packages in the SDK that might be<br />
useful on the device sould be in maemo Extras, and maemo Extras should<br />
also be pre-configured in the SDK.</p>
<p>You should <strong>not</strong> make a dot-install file for your package that lists all<br />
the catalogues that are needed to find all the needed packages.<br />
Specifically, you should not list the SDK repositories when you happen<br />
to pick up a dependency to a SDK-only package.</p>
<p>That was actually the thinking behind only allowing one repository in<br />
the original dot-install file format: everything needed to install a<br />
package should be in the same repository as the package itself, or in<br />
one of the repositories that everybody has pre-configured anyway.<br />
Everything else is too messy.  I am still not completely happy that I<br />
let myself being talk into allowing multiple repositories now.</p>
<p>What you <strong>should</strong> do, though, if you have a dot-install file for your<br />
package, is to list the one catalogue that contains your package (and all its<br />
dependencies).</p>
<p>Also, all dot-install files that refer to the same repository should<br />
do so in the exact same way.  This will ensure that the Application Manager<br />
will not have confusing, duplicated entries in its list of catalogues.</p>
<p>These two rules should be followed for any repository, not just &#8220;maemo<br />
Extras&#8221;.  Ideally, the software that places new packages into a<br />
repository should also generate the dot-install files for it, in a<br />
consistent manner.</p>
<p>Let&#8217;s look a bit at the options you have when describing a catalogue<br />
in a dot-install file.</p>
<p>From the beginning, the dot-install file format allowed you to specify<br />
different repositories for different major releases of OS20XX.  This<br />
allows one to specify for what OS20XX release a certain package is<br />
available, and if so, where.  The basic idea is that a single<br />
dot-install file can be given to any user, regardless of what OS20XX<br />
release he or she is running.</p>
<p>With the old dot-install file format, you could list one repository<br />
for OS2006, and/or one for OS2007.  With the new format, there is a<br />
bit more flexibility, and thus more choice.</p>
<p>You can now list multiple repositories, and for each one, you can<br />
specify for which major OS200XX releases it is valid.  It will be<br />
ignored for all others.  Also, for each repository, you can specify<br />
the distribution part of its sources.list entry explicitly, or you can<br />
let the Application Manager provide a default value.</p>
<p>Thus, the most general way to refer to a repository is to make it<br />
valid for any OS20XX release, and to let the Application Manager<br />
provide the distribution.  Such a description looks like this:</p>
<blockquote><p><code>[repo]<br />
name = Foo<br />
uri = <a href="http://foo.com/" rel="nofollow">http://foo.com/</a><br />
components = main non-free</code></p></blockquote>
<p>Note the absence of the &#8220;filter_dist&#8221; and &#8220;dist&#8221; keys.</p>
<p>By using this general form, you more or less promise that there will<br />
be a repository on <code><a href="http://foo.com" rel="nofollow">http://foo.com</a></code> for the &#8220;chinook&#8221; distribution and<br />
all future OS200XX distribution names, and that that repository will<br />
have your package in it.  (If you want to extend that promise to<br />
&#8220;mistral&#8221; and &#8220;bora&#8221; in addition to &#8220;chinook&#8221;, see the beginning of<br />
this text for how to do it.)</p>
<p>This is the preferred thing to do.  The rest of the flexibility is<br />
mostly useful in specialized cases that are best avoided.<br />
Essentially, you can control the error messages shown by the<br />
Application Manager a bit for the case that your package is not<br />
available for the OS200XX version that the user is running.  I&#8217;d say<br />
it is best to leave it to the Application Manager to come up with an<br />
appropriate error message.  It might not be perfect right now, but it<br />
should and can improve.</p>
<p>From that point of view, the new flexibility of<br />
dot-install files looks like a bad idea.  Try to avoid it.</p>
<p>Simplicity wins again, as always.</p><br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mariusv.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mariusv.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/9/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=9&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">7 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=1e22b192a11511dcaccb4bae318dc039c039&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/1e22b192a11511dcaccb4bae318dc039c039/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=1e22b192a11511dcaccb4bae318dc039c039&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/1e22b192a11511dcaccb4bae318dc039c039/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Sun, 02 Dec 2007 19:51:35 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-1e22b192a11511dcaccb4bae318dc039c039</guid>
        </item>
        <item>
            <title>Restoring applications after flashing: enable “maemo Extras” first.</title>
            <link>http://mariusv.wordpress.com/2007/12/02/restoring-applications-after-flashing-enable-maemo-extras-first/</link>
            <description><![CDATA[
<p>You might have noticed that OS2008 can now backup and restore the names of the packages that you have installed.  The Application Manager can take that list and install them all at once.  The catalogue configuration of the Application Manager is also backed up and restored, of course.</p>
<p>There is one (small?) snag, though:  the pre-configured catalogues are not backed up.  This seems to be the right thing to do since we can assume that the new image has a better idea of what the pre-configured catalogues should be than the backup.  Unfortunately, the maemo Extras catalogue is pre-configured as &#8220;disabled&#8221;, and thus, since it is not included in a backup, you always have to enable it explicitly after flashing.</p>
<p>Let me say that again: after flashing, you need to enable the maemo Extras catalogue before being able to restore packages from it.  Unfortunately, the first-boot procedure doesn&#8217;t give you the opportunity to do this.  What will probably work quite well is to perform the restore on first-boot to get all your settings back, but to not accept the offer to install the applications right now.  Then open the Application Manager manually, enable the maemo Extras catalogue, and select &#8220;Tools &gt; Restore applications&#8230;&#8221;.</p>
<p>That&#8217;s an accident, of course, it&#8217;s not by design.  Sorry for that.  We&#8217;ll figure out something for the next release.  The easiest thing is to just include the &#8220;maemo Extras&#8221; repository in the backup, I guess.  But then again, why not include all pre-configured catalgues?  What do you think?</p><br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mariusv.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mariusv.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/8/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=8&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">6 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=ad236ba6a0f311dcb0c3b78678840e8e0e8e&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/ad236ba6a0f311dcb0c3b78678840e8e0e8e/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=ad236ba6a0f311dcb0c3b78678840e8e0e8e&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/ad236ba6a0f311dcb0c3b78678840e8e0e8e/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Sun, 02 Dec 2007 15:38:11 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-ad236ba6a0f311dcb0c3b78678840e8e0e8e</guid>
        </item>
        <item>
            <title>Limited resources, in this millennium?</title>
            <link>http://mariusv.wordpress.com/2007/08/30/limited-resources-in-this-millennium/</link>
            <description><![CDATA[
<p>[ The full blogging experience, this time drunken as a brick layer.. :-]</p>
<p>Today I want to excrete my approach to the tacky problem of what should be done about reaching the limits of limited resources.  Please excuse my grammar etc since my IQ has temprorarily been reduced below that of aspell and I am not writing this with Emacs which reduces my degrees of mental freedom even more.</p>
<p>Users of the full Desktop experience that are running Gnome, KDE, Gnustep, or even fvwm on a modern piece of PC hardware don&#8217;t really have to worry about running out of resources.  They configure their system to be adequate for their needs and generally accept the fact  that running out of resources, while painful, is a problem that they have to  solve by upgrading their system or by adjusting their choice of software to be more suitable.  Thus is the life of the savvy computerer.</p>
<p>Running desktop software on mobile consumer devices, on the other hand, poses the immediate challenge of how to cope with limited resources in the hand of users that shouldn&#8217;t care less  about the amount of  RAM they have.  Today, it is accepted that owners of an iPod make an informed decision of how much storage that glorified mp3-decoder-plus-amplifier has, but actually, Apple knows the customer and is marketing the things in t-shirt sizes: hundreds of songs, thousands of songs, millions of songs,</p>
<p>The point being: people understand that devices have a limited amount of resources and that more is most of the time better, but how much they really need in hard MiBs is quitet the mystery.  But still, running out of resources is not a surprise.  Everybody is used to running out of monay after all.</p>
<p>When it happens, tho, the experience of actually running out of space should be so pleasant that you go and buy the next bigger model instead of giving up on the whole fad  of digital entertainment entirely.</p>
<p>In my opinion, Unix has done quite well with coping with limited resources, AS LONG AS there is a knowledgable system administrator available that can migrate home directories to a bigger disk array, etc.</p>
<p>But what about devices like the Nokia N800 that attempt to put half of Gnome in the hands of Joe Couchpotatoe, without a sysadmin to be found?</p>
<p>When Joe runs out of resources, he is not going to check /var/log/messages and order a bigger flash chip from Samsung and solder it in. Unless he is convinced that he just requested something impossible from his device, he is going to catapult his device into a corner and write an angry blog post about it.  (Oh, how I miss the days when posting something to the whole world required more skill than piggybacking some memory&#8230;)</p>
<p>So, finally, what can be done about running out of resources?  The following is what I have written into a bug report about GConf behaving erratically when there is no storage for it it save its database.  I would like the maemo architecture to evolve along these ideas&#8230;</p>
<p><span id="more-7"></span></p>
<p>Operations, regardless of whether they consume memory, storage, or CPU time, can be broadly classified into &#8220;small&#8221; ones and &#8220;large&#8221; ones.  Small operations are expected to consume a small amount of resources and not having this small amount available is considered to be a pre-condition violation. Large operations are the ones that are expected to consume huge amounts of resources which might or might not be available.  What happens when you run out of resources is part of the defined behavior of the operation and will be handled in the normal course of action.</p>
<p>Examples for small operations are allocating memory for GObjects, writing your PID into /var/run/, and computing the length of a string.  If there are not enough resources available for these operations, drastic things are allowed to happen, like the process aborting, or not being responsive for so long that the user is tempted to kill it.</p>
<p>Examples for large operations are generally associated with external data: allocating memory for a user-supplied image, downloading a file to local storage, or applying a filter to a image.  If these operations run out of resources, they should handle it gracefully with proper progress bars, clear indications to the user and options for the user to repair the situation and try again.</p>
<p>The system as a whole is responsible for dealing with small operations running out of memory.  When memory gets tight, the system should warn the user about it and offer some ways out of it.  Starting to swap, background killing, popping up a dialog that lets the user close some applications, etc.</p>
<p>The same should apply to running out of storage for small operations: the system should warn the user when storage gets dangerously full and offer some cleanup options (like moving user documents from internal flash to a memory card).</p>
<p>We are quite some way away from making this work perfectly, and applications don&#8217;t give indications whether they are doing a &#8220;small&#8221; operation or a &#8220;large&#8221; one.  I.e., the memory allocator in libc should know whether it has to try its damned best to satisfy the request, or whether it might fail it so that other  more important requests might be fulfilled later.</p>
<p>Likewise, there should be reserved storage for small operations.  (The distinction is not between &#8220;root&#8221; and &#8220;user&#8221;, with the implication that root operations are somehow more important than user operations.)  Large operations should not be allowed to consume the space reserved for small operations.  When that reserved storage starts to be being consumed by small operations, the system should go into &#8220;the ship is sinking&#8221; mode and urge the user to make space.</p>
<p>Now, is writing the GConf database a small operation or a large one?  In my opinion it is small.  Size is not really the main deciding factor (and so &#8220;small&#8221; and &#8220;large&#8221; might not be the best terms for the two classes of operations).  Writing the GConf database is not a operation that the user initiates or is aware of.  GConf must handle it completely transparently and must thus rely on the system to get it out of a tight spot.  In the rare case that writing the database actually fails, the user should have been amply warned about the system becoming instable etc, that it is acceptable to loose the<br />
unsaved user settings.</p>
<p>Our system doesn&#8217;t do anything right now to make small storage operations more robust, but I don&#8217;t think we should put any workarounds into GConf for this. When writing the cache fails, it must happen in a controlled and sensible way, of course: the old database that has been stored must not be lost and GConf should continue working.</p><br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mariusv.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mariusv.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/7/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=7&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">4 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=7e5ff4c4569811dca9ae1b2f7b162c9b2c9b&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/7e5ff4c4569811dca9ae1b2f7b162c9b2c9b/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=7e5ff4c4569811dca9ae1b2f7b162c9b2c9b&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/7e5ff4c4569811dca9ae1b2f7b162c9b2c9b/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Wed, 29 Aug 2007 23:31:09 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-7e5ff4c4569811dca9ae1b2f7b162c9b2c9b</guid>
        </item>
        <item>
            <title>What’s cooking for the Application Manager?</title>
            <link>http://mariusv.wordpress.com/2007/08/15/whats-cooking-for-the-application-manager/</link>
            <description><![CDATA[
<p>I am trying out this blog thing, so that I can rant in <strong><font color="#ff0000">c<font color="#0000ff">o<font color="#00ff00">l<font color="#ff00ff">o<font color="#ff9900">r</font></font></font></font></font></strong><font color="#ff0000"><font color="#0000ff"><font color="#00ff00"><font color="#ff00ff"><font color="#ff9900"><font color="#000000">.</font></font></font></font></font></font></p>
<p>I work for Nokia on the Internet Tablet OS as a hacker, and that&#8217;s what I will be blogging about here.  Or about whatever seems appropriate.</p>
<p>Our topic for today shall be a short introduction to the new Application Manager features in the next major IT OS release that are of interest to package maintainers.  This stuff is documented in more detail <a href="http://hildon-app-mgr.garage.maemo.org/doc.html">here</a>.</p>
<p><strong>More .install file capabilities</strong></p>
<p>A .install file can now instruct the Application Manager to add more than one catalogue.</p>
<p>You might have noticed that I don&#8217;t think that having as many repositories as we have now is a good idea, so please don&#8217;t take this feature as in invitation to spread your packages over many many repositories.  If at all possible, put your packages into the maemo Extras repository.  This repository will be preconfigured in the next IT OS release, and we will likely pay more attention to packages in the Extras repository when making new IT OS releases (when checking compatibility, for example).</p>
<p>You can now leave the distribution name blank in .install files and the Application Manager will provide the name of the current distribution.  This will work across backup/flash/restore: your catalogue will then automatically start using the new distribution name.</p>
<p>Catalogue names are now localizable.</p>
<p><strong>Pretty names</strong></p>
<p>A package can specify a (localizable) string that will be displayed in the Application Manager UI instead of the package name.</p>
<p><strong>Upgrade descriptions</strong></p>
<p>A package can specify a alternate (and localizable) description that will be used instead of the normal description when showing the package in the &#8220;Check for updates&#8221; view.  This can be considered as the end-user friendly version of debian/changelog.</p>
<p><strong>Localizable descriptions</strong></p>
<p>The normal description of a package can now be localized.</p>
<p><strong> Support for Conflicts/Replaces</strong></p>
<p>The Application Manager is still a coward when it comes to automatically removing packages to resolve conflicts, but it now will remove a package when another package is to be installed that both &#8220;Conflitcs&#8221; with that package as well as &#8220;Replaces&#8221; it.</p>
<p><strong> Miscellaneous Flags</strong></p>
<p>A package can cause the Application Manager to perform some special tricks.  For example, setting the &#8220;reboot&#8221; flag will cause a reboot after installing or upgrading a package.  Other flags cause the Application Manager to take a backup or close all applications.  These flags are mostly intended for updates to system packages, but you might find them useful.</p>
<p><strong>Checking for free space before installing</strong></p>
<p>A package can declare how much free space must be available in the filesystem before the installation is allowed.  The Application manager doesn&#8217;t dare to use Installed-Size for this since doing so is not reliable in general.</p>
<p><strong> Domains</strong></p>
<p>The Application Manager tries to keep track of where a package has been originally installed from, and will not allow updates to a package from a different source.  This means you can no longer replace IT OS packages by providing them with a higher version number in your repository.</p>
<p>Of course, you still can do whatever you want with your package.  Packages don&#8217;t get special privileges depending on where they are installed from.  These additional checks are only there to catch some confusing situations that are best avoided.</p><br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mariusv.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mariusv.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mariusv.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mariusv.wordpress.com/5/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=mariusv.wordpress.com&#038;blog=1528067&#038;post=5&#038;subd=mariusv&#038;ref=&#038;feed=1" width="1" height="1" /><span class="net_nemein_favourites">11 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=e8212e224bb811dcb5d3ddc07596268e268e&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/e8212e224bb811dcb5d3ddc07596268e268e/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=e8212e224bb811dcb5d3ddc07596268e268e&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/e8212e224bb811dcb5d3ddc07596268e268e/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</author>
            <category>feed:520d3e73475205682415b043c602917d</category>
            <pubDate>Wed, 15 Aug 2007 21:28:42 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-e8212e224bb811dcb5d3ddc07596268e268e</guid>
        </item>
    </channel>
</rss>
