<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: State of the Aptitude</title>
	<atom:link href="http://www.milliways.fr/2008/06/21/state-of-the-aptitude/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/</link>
	<description>Obey Arthur Liu . blog()</description>
	<lastBuildDate>Thu, 21 May 2009 12:09:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Romain</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-72</link>
		<dc:creator>Romain</dc:creator>
		<pubDate>Fri, 27 Jun 2008 11:26:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-72</guid>
		<description>Arthur:
I wrote a new answer yesterday:
http://dev.graffit.net/aptitude/trac/ticket/1</description>
		<content:encoded><![CDATA[<p>Arthur:<br />
I wrote a new answer yesterday:<br />
<a href="http://dev.graffit.net/aptitude/trac/ticket/1" rel="nofollow">http://dev.graffit.net/aptitude/trac/ticket/1</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Obey Arthur Liu</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-70</link>
		<dc:creator>Obey Arthur Liu</dc:creator>
		<pubDate>Wed, 25 Jun 2008 18:50:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-70</guid>
		<description>@Romain :
I opened a Trac ticket for you : &lt;a href=&quot;http://dev.graffit.net/aptitude/trac/ticket/1&quot; rel=&quot;nofollow&quot;&gt;http://dev.graffit.net/aptitude/trac/ticket/1&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>@Romain :<br />
I opened a Trac ticket for you : <a href="http://dev.graffit.net/aptitude/trac/ticket/1" rel="nofollow">http://dev.graffit.net/aptitude/trac/ticket/1</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Romain</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-69</link>
		<dc:creator>Romain</dc:creator>
		<pubDate>Wed, 25 Jun 2008 17:36:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-69</guid>
		<description>Arthur and not Arhtur: i&#039;m sorry</description>
		<content:encoded><![CDATA[<p>Arthur and not Arhtur: i&#8217;m sorry</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Romain</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-68</link>
		<dc:creator>Romain</dc:creator>
		<pubDate>Wed, 25 Jun 2008 17:35:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-68</guid>
		<description>Arhtur: compilation has failed:

romain@debian:~/Desktop/tests/aptitude-gtk$ ./autogen.sh
aclocal-1.9: autom4te terminated by signal: 9

romain@debian:~/Desktop/tests/aptitude-gtk$ ./configure &amp;&amp; make
bash: ./configure: Aucun fichier ou répertoire de ce type

romain@debian:~/Desktop/tests/aptitude-gtk$ ls -lh autom4te.cache/requests
-rw------- 1 romain romain 17G jun 25 16:54 autom4te.cache/requests

17Go ???
It would be a mistake, but autom4te.cache/requests seems be a big file.

Do you use hg-buildpackage to compile aptitude-gtk?

-------------------------

i   apt                                            - Advanced front-end for dpkg                             
i   autoconf                                       - automatic configure script builder                      
i   automake1.9                                    - A tool for generating GNU Standards-compliant Makefiles 
i A docbook-xml                                    - standard XML documentation system, for software and syst
i   docbook-xsl                                    - stylesheets for processing DocBook XML files to various 
i A g++                                            - The GNU C++ compiler                                    
i A gettext                                        - GNU Internationalization utilities                      
i   html2text                                      - An advanced HTML to text converter                      
i   libcppunit-dev                                 - Unit Testing Library for C++                            
i   libcwidget-dev                                 - high-level terminal interface library for C++ (developme
i   libglademm-2.4-dev                             - C++ wrappers for libglade2 (development files)          
i A libglibmm-2.4-dev                              - C++ wrapper for the GLib toolkit (development files)    
i   libgtkmm-2.4-dev                               - C++ wrappers for GTK+ 2.4 (development files)           
i A libsigc++-2.0-dev                              - type-safe Signal Framework for C++ - development files  
i A make                                           - The GNU version of the &quot;make&quot; utility.                  
i   po4a                                           - tools for helping translation of documentation          
i A xsltproc                                       - XSLT command line processor</description>
		<content:encoded><![CDATA[<p>Arhtur: compilation has failed:</p>
<p>romain@debian:~/Desktop/tests/aptitude-gtk$ ./autogen.sh<br />
aclocal-1.9: autom4te terminated by signal: 9</p>
<p>romain@debian:~/Desktop/tests/aptitude-gtk$ ./configure &amp;&amp; make<br />
bash: ./configure: Aucun fichier ou répertoire de ce type</p>
<p>romain@debian:~/Desktop/tests/aptitude-gtk$ ls -lh autom4te.cache/requests<br />
-rw&#8212;&#8212;- 1 romain romain 17G jun 25 16:54 autom4te.cache/requests</p>
<p>17Go ???<br />
It would be a mistake, but autom4te.cache/requests seems be a big file.</p>
<p>Do you use hg-buildpackage to compile aptitude-gtk?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>i   apt                                            &#8211; Advanced front-end for dpkg<br />
i   autoconf                                       &#8211; automatic configure script builder<br />
i   automake1.9                                    &#8211; A tool for generating GNU Standards-compliant Makefiles<br />
i A docbook-xml                                    &#8211; standard XML documentation system, for software and syst<br />
i   docbook-xsl                                    &#8211; stylesheets for processing DocBook XML files to various<br />
i A g++                                            &#8211; The GNU C++ compiler<br />
i A gettext                                        &#8211; GNU Internationalization utilities<br />
i   html2text                                      &#8211; An advanced HTML to text converter<br />
i   libcppunit-dev                                 &#8211; Unit Testing Library for C++<br />
i   libcwidget-dev                                 &#8211; high-level terminal interface library for C++ (developme<br />
i   libglademm-2.4-dev                             &#8211; C++ wrappers for libglade2 (development files)<br />
i A libglibmm-2.4-dev                              &#8211; C++ wrapper for the GLib toolkit (development files)<br />
i   libgtkmm-2.4-dev                               &#8211; C++ wrappers for GTK+ 2.4 (development files)<br />
i A libsigc++-2.0-dev                              &#8211; type-safe Signal Framework for C++ &#8211; development files<br />
i A make                                           &#8211; The GNU version of the &#8220;make&#8221; utility.<br />
i   po4a                                           &#8211; tools for helping translation of documentation<br />
i A xsltproc                                       &#8211; XSLT command line processor</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Burrows</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-64</link>
		<dc:creator>Daniel Burrows</dc:creator>
		<pubDate>Tue, 24 Jun 2008 05:04:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-64</guid>
		<description>Karellen:

Although I can see where you&#039;re coming from, a GTK+ backend to cwidget would have no significant upsides and significant downsides.

The main upside to doing that from a practical point of view is that you would have only one piece of &quot;driver&quot; code for the GTK+ and curses interfaces.  You wouldn&#039;t have to rewrite the entire interface from scratch to create a GUI frontend.

But this is just an illusory benefit.  cwidget is a terminal interface library and aptitude&#039;s curses frontend is a terminal-based UI.  From a practical point of view, this means that aptitude regularly assumes that, for instance, to clear out a line it&#039;s sufficient to output $WIDTH space characters (ASCII 32) with the desired background style.  A port of cwidget to GTK+ would have to introduce new, interface-independent abstractions for all operations like this and eliminate all direct use of terminal-based assumptions, at a significant cost in complexity for both cwidget and the aptitude frontend.  In order to transition to these new conventions, I believe you would have to rewrite large portions of both cwidget *and* aptitude in order to make the interface abstraction layer work. (remember: the justification for doing this is to avoid having to rewrite aptitude!)

Furthermore, while this approach avoids reimplementing aptitude&#039;s curses interface (sort of, except where it doesn&#039;t -- see above), it does so at the cost of requiring you to reimplement all of cwidget, for GTK+.  I just did a quick line count (with &quot;wc -l&quot;): in all of cwidget there are 23,390 lines of code, while aptitude&#039;s curses frontend has around 23,359 lines of code (some of which are actually shared with the other frontends but are in the curses directory due to the historical organization of the code tree).  Not only is a rewrite of cwidget more involved, but the amount of code you&#039;d have to replace is comparable to the amount implicated in a rewrite of aptitude itself!

Finally, even if these costs weren&#039;t enough to eliminate the idea, it&#039;s not at all clear to me that a GTK+ backend for cwidget is even desirable.  Although aptitude has some superficial similarities to a GUI program, the process of designing an interface to run in a terminal (where the available input mechanisms are relatively restricted and all output is to a character-cell grid) is rather different from the process of designing a GUI.  GUI programs can&#039;t rely on some simplifying assumptions that terminal programs can, and at the same time they have a lot more options available to them (just to name a few: graphics, multiple windows, differing text sizes and rotated text).  Trying to force everything through an abstraction designed for terminal output would require you to either (a) eschew those options, (b) provide abstract GUI components that somehow &quot;fell back&quot; to terminal rendering in a terminal, or (c) add ways for the frontend to extend the abstract widgets with custom functionality.  (a) is not an option because I (and, I think, Arthur) want to design a good GTK+ package manager, not a good GTK+ imitation of a console package manager.  (b) and (c) amount, in my strong opinion, to writing two separate interfaces but intertwining their implementations in a mass of maintenance-resistant and extension-resistant spaghetti code.

At the end of the day, I think that having two separate frontends (sharing backend logic where appropriate, of course) is a far cleaner and more maintainable design, and also easier to create.

PS: Arthur, is there any way to get a &quot;preview&quot; button on these blog comments?  Trying to review this post has been a pain.</description>
		<content:encoded><![CDATA[<p>Karellen:</p>
<p>Although I can see where you&#8217;re coming from, a GTK+ backend to cwidget would have no significant upsides and significant downsides.</p>
<p>The main upside to doing that from a practical point of view is that you would have only one piece of &#8220;driver&#8221; code for the GTK+ and curses interfaces.  You wouldn&#8217;t have to rewrite the entire interface from scratch to create a GUI frontend.</p>
<p>But this is just an illusory benefit.  cwidget is a terminal interface library and aptitude&#8217;s curses frontend is a terminal-based UI.  From a practical point of view, this means that aptitude regularly assumes that, for instance, to clear out a line it&#8217;s sufficient to output $WIDTH space characters (ASCII 32) with the desired background style.  A port of cwidget to GTK+ would have to introduce new, interface-independent abstractions for all operations like this and eliminate all direct use of terminal-based assumptions, at a significant cost in complexity for both cwidget and the aptitude frontend.  In order to transition to these new conventions, I believe you would have to rewrite large portions of both cwidget *and* aptitude in order to make the interface abstraction layer work. (remember: the justification for doing this is to avoid having to rewrite aptitude!)</p>
<p>Furthermore, while this approach avoids reimplementing aptitude&#8217;s curses interface (sort of, except where it doesn&#8217;t &#8212; see above), it does so at the cost of requiring you to reimplement all of cwidget, for GTK+.  I just did a quick line count (with &#8220;wc -l&#8221;): in all of cwidget there are 23,390 lines of code, while aptitude&#8217;s curses frontend has around 23,359 lines of code (some of which are actually shared with the other frontends but are in the curses directory due to the historical organization of the code tree).  Not only is a rewrite of cwidget more involved, but the amount of code you&#8217;d have to replace is comparable to the amount implicated in a rewrite of aptitude itself!</p>
<p>Finally, even if these costs weren&#8217;t enough to eliminate the idea, it&#8217;s not at all clear to me that a GTK+ backend for cwidget is even desirable.  Although aptitude has some superficial similarities to a GUI program, the process of designing an interface to run in a terminal (where the available input mechanisms are relatively restricted and all output is to a character-cell grid) is rather different from the process of designing a GUI.  GUI programs can&#8217;t rely on some simplifying assumptions that terminal programs can, and at the same time they have a lot more options available to them (just to name a few: graphics, multiple windows, differing text sizes and rotated text).  Trying to force everything through an abstraction designed for terminal output would require you to either (a) eschew those options, (b) provide abstract GUI components that somehow &#8220;fell back&#8221; to terminal rendering in a terminal, or (c) add ways for the frontend to extend the abstract widgets with custom functionality.  (a) is not an option because I (and, I think, Arthur) want to design a good GTK+ package manager, not a good GTK+ imitation of a console package manager.  (b) and (c) amount, in my strong opinion, to writing two separate interfaces but intertwining their implementations in a mass of maintenance-resistant and extension-resistant spaghetti code.</p>
<p>At the end of the day, I think that having two separate frontends (sharing backend logic where appropriate, of course) is a far cleaner and more maintainable design, and also easier to create.</p>
<p>PS: Arthur, is there any way to get a &#8220;preview&#8221; button on these blog comments?  Trying to review this post has been a pain.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Obey Arthur Liu</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-63</link>
		<dc:creator>Obey Arthur Liu</dc:creator>
		<pubDate>Mon, 23 Jun 2008 21:55:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-63</guid>
		<description>To Romain:
I added some information on the wiki (http://dev.graffit.net/aptitude/trac).</description>
		<content:encoded><![CDATA[<p>To Romain:<br />
I added some information on the wiki (<a href="http://dev.graffit.net/aptitude/trac" rel="nofollow">http://dev.graffit.net/aptitude/trac</a>).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Romain</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-62</link>
		<dc:creator>Romain</dc:creator>
		<pubDate>Mon, 23 Jun 2008 10:53:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-62</guid>
		<description>I didn&#039;t know Mercurial.
I&#039;d get the sources. Thank you.

Now, how compile aptitude-gtk?

Have you a mailing list for the project (or Trac&#039;s tickets are sufficient?)?</description>
		<content:encoded><![CDATA[<p>I didn&#8217;t know Mercurial.<br />
I&#8217;d get the sources. Thank you.</p>
<p>Now, how compile aptitude-gtk?</p>
<p>Have you a mailing list for the project (or Trac&#8217;s tickets are sufficient?)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Obey Arthur Liu</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-61</link>
		<dc:creator>Obey Arthur Liu</dc:creator>
		<pubDate>Sun, 22 Jun 2008 22:58:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-61</guid>
		<description>To Romain:
http://dev.graffit.net/aptitude/hg
(It&#039;s Mercurial by the way)</description>
		<content:encoded><![CDATA[<p>To Romain:<br />
<a href="http://dev.graffit.net/aptitude/hg" rel="nofollow">http://dev.graffit.net/aptitude/hg</a><br />
(It&#8217;s Mercurial by the way)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Romain</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-60</link>
		<dc:creator>Romain</dc:creator>
		<pubDate>Sun, 22 Jun 2008 22:55:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-60</guid>
		<description>&gt; Gnome is the default on Debian:
I regret that (snif)

Gtk+ already has the synaptic project anyway :P (and adept don&#039;t use aptitude)

Where is the url of your svn repository? I just find the browser url (http://dev.graffit.net/aptitude/trac/browser).</description>
		<content:encoded><![CDATA[<p>&gt; Gnome is the default on Debian:<br />
I regret that (snif)</p>
<p>Gtk+ already has the synaptic project anyway <img src='http://www.milliways.fr/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  (and adept don&#8217;t use aptitude)</p>
<p>Where is the url of your svn repository? I just find the browser url (<a href="http://dev.graffit.net/aptitude/trac/browser" rel="nofollow">http://dev.graffit.net/aptitude/trac/browser</a>).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Obey Arthur Liu</title>
		<link>http://www.milliways.fr/2008/06/21/state-of-the-aptitude/comment-page-1/#comment-59</link>
		<dc:creator>Obey Arthur Liu</dc:creator>
		<pubDate>Sun, 22 Jun 2008 22:17:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.milliways.fr/?p=23#comment-59</guid>
		<description>To Romain:
- Gnome is the default on Debian
- Qt already has the Adept project anyway
- I use Gnome (arbitrary I know)</description>
		<content:encoded><![CDATA[<p>To Romain:<br />
- Gnome is the default on Debian<br />
- Qt already has the Adept project anyway<br />
- I use Gnome (arbitrary I know)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
