<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Basie Blog</title>
	<atom:link href="http://blog.basieproject.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.basieproject.org</link>
	<description>A Lightweight Software Development Portal in Django</description>
	<lastBuildDate>Fri, 16 Jul 2010 17:46:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>July 16th meeting : tasks for this week + next 2 weeks (tentative)</title>
		<link>http://blog.basieproject.org/?p=3427</link>
		<comments>http://blog.basieproject.org/?p=3427#comments</comments>
		<pubDate>Fri, 16 Jul 2010 17:40:16 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3427</guid>
		<description><![CDATA[Tasks for this week + next 2 weeks (tentative):
Everyone:
- update pinax app and add both svn + hg repo (follow Nikita&#8217;s instructions)
Front-end team:
- file: missing choosing revision number, view history/download file links (no download link if binary), make &#8216;pretty&#8217;
- dir: make revision link, (no download link if binary), make &#8216;pretty&#8217; (alignment is weird, longer dates mashing with [...]]]></description>
			<content:encoded><![CDATA[<p>Tasks for this week + next 2 weeks (tentative):</p>
<p>Everyone:<br />
- update pinax app and add both svn + hg repo (follow Nikita&#8217;s instructions)</p>
<p>Front-end team:<br />
- file: missing choosing revision number, view history/download file links (no download link if binary), make &#8216;pretty&#8217;<br />
- dir: make revision link, (no download link if binary), make &#8216;pretty&#8217; (alignment is weird, longer dates mashing with revision #, fix layout when revision is hash (hg), etc&#8230;) &#8212; please test with different repo types, browser window sizes, etc<br />
- hist: make revision link, make diff radio button (see mockup!) &#8212; no diff radio button if binary file<br />
- diff: keep implementing</p>
<p>Hg:<br />
- fix history for dir, history for some files (filename issue?)<br />
- filtering revision in history<br />
- work with Svn team on return type for diff<br />
- iron out the hash vs rev # issue (? not sure if it is actually an issue, to be discussed offline)</p>
<p>Svn:<br />
- work with Hg team on return type for diff<br />
- continue work on diff<br />
- error checking for history</p>
<p>In general:<br />
- make things fail gracefully (non-existant path in repo, non-existant revision # in repo, etc) &#8211;&gt; needs to generate some &#8220;no such path/rev#&#8221; in template in such cases<br />
- support revision back-end (for both hg + svn) for template<br />
- urls fix/unify by tonight, please let everyone know what the new convention(s) is/are<br />
- possibly make &#8220;group aware&#8221; (?) if time</p>
<p>Screencast:<br />
- script by Tuesday 9PM</p>
<p>Feedback on script:<br />
- due by Thursday 9PM if you want any say in it</p>
<p>Next meeting dictator: Joseph</p>
<p>Week ending July 30th (tentative):<br />
- first version of video must be done by Tue<br />
- everyone download and check, must reply with comments by Thursday 9PM<br />
- everyone read each others&#8217; comments before meeting<br />
- diff template must be finished<br />
- testing all around<br />
- patch view back-end<br />
- add link to diff template for patch</p>
<p>Week ending Aug 6th (tentative):<br />
- video ver 2<br />
- fine-tuning<br />
- moving templates to app<br />
- other wrap-up</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- update pinax app and add both svn + hg repo (follow Nikita&#8217;s instructions)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Front-end team:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- file: missing choosing revision number, view history/download file links (no download</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">link if binary), make &#8216;pretty&#8217;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- dir: make revision link, (no download link if binary), make &#8216;pretty&#8217; (alignment is</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">messed up, longer dates mashing with revision #, layout messed up when revision is hash</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">(hg), etc&#8230;) &#8212; please test with different repo types, browser window sizes, etc</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- hist: make revision link, make diff radio button (see mockup!) &#8212; no diff radio button</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">if binary file</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- diff: keep implementing</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Hg:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- fix history for dir, history for some files (filename issue?)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- filtering revision in history</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- work with Svn team on return type for diff</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- iron out the hash vs rev # issue (? not sure if it is actually an issue, to be</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">discussed offline)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Svn:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- work with Hg team on return type for diff</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- continue work on diff</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- error checking for history</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">In general:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- make things fail gracefully (non-existant path in repo, non-existant revision # in</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">repo, etc) &#8211;&gt; needs to generate some &#8220;no such path/rev#&#8221; in template in such cases</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- support revision back-end (for both hg + svn) for template</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- urls fix/unify by tonight, please let everyone know what the new convention(s) is/are</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- possibly make &#8220;group aware&#8221; (?) if time</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Screencast:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- script by Tuesday 9PM</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Feedback on script:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- due by Thursday 9PM if you want any say in it</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Next meeting dictator: Joseph</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">week ending 30th: first version of video must be done by Tue, everyone download and check, MUST reply with comments by Thursday 9PM, everybody READ!diff template must be finished(download template needed if we are supporting dir download as zip)testing all aroundpatchweek ending 6th: video ver 2, fine-tuning, moving templates to app</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">week ending 30th:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- first version of video must be done by Tue</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- everyone download and check, MUST reply with comments by Thursday 9PM</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- everyone read each others&#8217; comments before meeting</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- diff template must be finished</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- testing all around</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- patch view back-end</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- add link to diff template for patch</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">week ending 6th:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- video ver 2, fine-tuning</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- moving templates to app</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3427</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vcsbrowser: File View update</title>
		<link>http://blog.basieproject.org/?p=3421</link>
		<comments>http://blog.basieproject.org/?p=3421#comments</comments>
		<pubDate>Wed, 07 Jul 2010 04:17:07 +0000</pubDate>
		<dc:creator>jharjono</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3421</guid>
		<description><![CDATA[This is a quick snapshot at what our File View template can provide right now:

Some of the highlights include:

compatibility with Pinax&#8217;s CSS and templates
Breadcrumb support to show users the current file being viewed, its path, and its revision
One of our most requested features: Syntax Highlighting and Line Numbering!

cheers,
Johan
]]></description>
			<content:encoded><![CDATA[<p>This is a quick snapshot at what our File View template can provide right now:</p>
<p><img class="aligncenter size-full wp-image-3423" title="pygments.png" src="http://blog.basieproject.org/wp-content/uploads/2010/07/pygments.png.png" alt="pygments.png" width="809" height="690" /></p>
<p>Some of the highlights include:</p>
<ul>
<li>compatibility with Pinax&#8217;s CSS and templates</li>
<li>Breadcrumb support to show users the current file being viewed, its path, and its revision</li>
<li>One of our most requested features: Syntax Highlighting and Line Numbering!</li>
</ul>
<p>cheers,</p>
<p>Johan</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3421</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usability Test: Initial Results</title>
		<link>http://blog.basieproject.org/?p=3393</link>
		<comments>http://blog.basieproject.org/?p=3393#comments</comments>
		<pubDate>Thu, 01 Jul 2010 01:03:01 +0000</pubDate>
		<dc:creator>jharjono</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3393</guid>
		<description><![CDATA[Colin, Dave, and I have done a few usability tests over the past few days using simple paper prototypes. We tested the initial mockups on three CS undergrads. Here are the highlights of the testing from two CS undergrads who are currently doing PEY at IBM

Participants were able to use the breadcrumbs to navigate the [...]]]></description>
			<content:encoded><![CDATA[<p>Colin, Dave, and I have done a few usability tests over the past few days using simple paper prototypes. We tested the initial mockups on three CS undergrads. Here are the highlights of the testing from two CS undergrads who are currently doing PEY at IBM</p>
<ul>
<li>Participants were able to use the breadcrumbs to navigate the repo, but they often asked &#8220;Is there a Back button?&#8221;</li>
<li>Some participants found the Revision column which shows revision numbers as odd, they think that clicking on those revision numbers will show the file/dir at that revision, which as one pointed out would be pretty useless since it would just show him the latest revision (but isn&#8217;t that what he&#8217;s supposed to be seeing right now anyway?)</li>
<li>One of the participants find it pointless to attach revision number to directories, since what he&#8217;s interested in are the files.</li>
<li>One of the participants prefer that the diff view shows the content of the entire file, just like the diff view in Eclipse</li>
<li>Some mishap with the UI elements for generating diffs. For example the &#8220;Diff&#8221; button seems to be hard to find and should be relocated.</li>
<li>Language is strange at time. Inconsistent to use &#8216;expand&#8217; in one case but its opposite, collapse, is instead denoted as ^. Author is more familiar than committer.</li>
<li>Unclear what format dates should be entered in during revision search. How to use the radio buttons to generate a diff could be confusing.</li>
</ul>
<p>The points gleaned from the testing at U of T:</p>
<ul>
<li>The participant thought that the revision number column in the directory view was useless. When asked what they thought would happen on clicking it, they thought it would show the corresponding file or directory at that revision (as one of the IBM participants thought).</li>
<li>The most important feature they felt was missing was a way to find all the commits made by a specific user. They suggested that the &#8220;entries in the author&#8221; column should be clickable, and should lead to a list of commits made by that user, in reverse chronological order.</li>
<li>When asked what they would want or expect on doing a diff of two revisions (as is supposed to be possible in our &#8216;repository-revision&#8217; mockup),  they suggested it should give a diff of all the files in the chosen directory (recursively), between the two chosen revisions.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3393</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>June 30th meeting : tasks for this week</title>
		<link>http://blog.basieproject.org/?p=3397</link>
		<comments>http://blog.basieproject.org/?p=3397#comments</comments>
		<pubDate>Thu, 01 Jul 2010 00:15:13 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3397</guid>
		<description><![CDATA[Front-end team:
- Dave will post mock-up for the revision page
- Noam will start directory template
- Johan will blog about findings from usability testing @PEY + start file contents template
- Colin will blog about findings from usability testing @UT + work with Joseph and Misa on integrating front+back
HG team:
- Nikita will work on setup.py and testing
- Joseph [...]]]></description>
			<content:encoded><![CDATA[<p>Front-end team:<br />
- Dave will post mock-up for the revision page<br />
- Noam will start directory template<br />
- Johan will blog about findings from usability testing @PEY + start file contents template<br />
- Colin will blog about findings from usability testing @UT + work with Joseph and Misa on integrating front+back</p>
<p>HG team:<br />
- Nikita will work on setup.py and testing<br />
- Joseph will work on integrating + other code/testing if there is time</p>
<p>Svn team:<br />
- Todd will work on testing and making changes to how svn-side is pointed to svn repo<br />
- Joel will continue work on get_history (+URL) and updating/fixing class diagram<br />
- Misa will work on integrating + other code/testing if there is time</p>
<p>Next meeting leader: Todd</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3397</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hg backend status update</title>
		<link>http://blog.basieproject.org/?p=3381</link>
		<comments>http://blog.basieproject.org/?p=3381#comments</comments>
		<pubDate>Mon, 28 Jun 2010 22:21:44 +0000</pubDate>
		<dc:creator>Nikita Pchelin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3381</guid>
		<description><![CDATA[What Joseph and I have so far:
* wrote two manage.py commands, getkiln and krunserver. The first one fetches and bootstraps kiln [you still need to get all the dependences, it's not that sophisticated]. It will also set up a sample hg repository (kiln backend repository itself). The second one behaves just like django&#8217;s runserver, except [...]]]></description>
			<content:encoded><![CDATA[<p>What Joseph and I have so far:</p>
<p>* wrote two manage.py commands,<em> getkiln</em> and <em>krunserver</em>. The first one fetches and bootstraps kiln [you still need to get all the dependences, it's not <em>that</em> sophisticated]. It will also set up a sample hg repository (kiln backend repository itself). The second one behaves just like django&#8217;s <em>runserver</em>, except it also lunches kiln app on http://127.0.0.1:8001. You have to run the first one once to bootstrap kiln, you have to run the second one instead of <em>runserver </em>if you want kiln stuff to work at all <img src='http://blog.basieproject.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>* we&#8217;ve implemented part of proposed API (getting file contents, file history, getting directory listing), there are some things that we&#8217;ve done differently but I&#8217;ll have a chance to discuss this in a separate email before the meeting on Wednesday. My implementation of get_file adds a dependency &#8211; <em>python-magic </em>which is a module that uses magic numbers to guess file type by it&#8217;s contents. The method returns both file contents and its MIME type (this actually lets the view to decide what to do with the file and not blindly serve it).</p>
<p>* kiln path, kiln repo folder, project name is defined in settings.py</p>
<p>Here are a few screenshots (these views are just to verify that our backend communicates with kiln properly, we did not do anything fancy as this will be part of the implementation the front-end team is going to do) :</p>

<a href='http://blog.basieproject.org/?attachment_id=3383' title='Screenshot-Namoroka'><img width="150" height="150" src="http://blog.basieproject.org/wp-content/uploads/2010/06/Screenshot-Namoroka-150x150.png" class="attachment-thumbnail" alt="" title="Screenshot-Namoroka" /></a>
<a href='http://blog.basieproject.org/?attachment_id=3385' title='Screenshot-Namoroka-1'><img width="150" height="150" src="http://blog.basieproject.org/wp-content/uploads/2010/06/Screenshot-Namoroka-1-150x150.png" class="attachment-thumbnail" alt="" title="Screenshot-Namoroka-1" /></a>
<a href='http://blog.basieproject.org/?attachment_id=3387' title='Screenshot-Namoroka-2'><img width="150" height="150" src="http://blog.basieproject.org/wp-content/uploads/2010/06/Screenshot-Namoroka-2-150x150.png" class="attachment-thumbnail" alt="" title="Screenshot-Namoroka-2" /></a>

]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3381</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>June 18th meeting précis</title>
		<link>http://blog.basieproject.org/?p=3377</link>
		<comments>http://blog.basieproject.org/?p=3377#comments</comments>
		<pubDate>Fri, 18 Jun 2010 16:22:10 +0000</pubDate>
		<dc:creator>Colin Morris</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3377</guid>
		<description><![CDATA[Front-end team&#8217;s commitments:

Polish up the existing mock-ups so that they&#8217;re suitable for demoing.
Find guinea pigs for usability testing (preferably among the application&#8217;s target audience: second or third year compsci students).

Back-end teams&#8217; commitments:

By Tuesday, finalize the class design of the API.
By Friday, each team will have written at least two views (that&#8217;s &#8216;controllers&#8217; if you don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Front-end team&#8217;s commitments:</p>
<ul>
<li>Polish up the existing mock-ups so that they&#8217;re suitable for demoing.</li>
<li>Find guinea pigs for usability testing (preferably among the application&#8217;s target audience: second or third year compsci students).</li>
</ul>
<p>Back-end teams&#8217; commitments:</p>
<ul>
<li>By Tuesday, finalize the class design of the API.</li>
<li>By Friday, each team will have written at least two views (that&#8217;s &#8216;controllers&#8217; if you don&#8217;t speak Django).</li>
</ul>
<p>Still under discussion:</p>
<ul>
<li>Will the URL for a repository make explicit the type (HG or SVN) of the repository? The answer to this depends on whether or not we think it&#8217;s reasonable for one project to have more than one repository.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3377</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Summary for Pinax Repository Browser June 11, 2010</title>
		<link>http://blog.basieproject.org/?p=3373</link>
		<comments>http://blog.basieproject.org/?p=3373#comments</comments>
		<pubDate>Sun, 13 Jun 2010 17:15:00 +0000</pubDate>
		<dc:creator>Joseph Yeung</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3373</guid>
		<description><![CDATA[Summary for the meeting:
- Both the SVN and HG back-end team will work together to simplify and consolidate the API and start coding when that is done.
- The front-end team will start prototyping for user testing. Using Django template
- Set up a starter pinax app, and submit it to Basie review board.
- URL:
A) the format [...]]]></description>
			<content:encoded><![CDATA[<p>Summary for the meeting:</p>
<p>- Both the SVN and HG back-end team will work together to simplify and consolidate the API and start coding when that is done.</p>
<p>- The front-end team will start prototyping for user testing. Using Django template</p>
<p>- Set up a starter pinax app, and submit it to Basie review board.</p>
<p>- URL:<br />
A) the format for a non-diff page is /action-type/R.#/dir/path  (where R.# is omitted if it is a HEAD revision)<br />
B) the format for a revision history of a file/directory is /history/query-string/dir/path<br />
C) we still need to agree on the URL for diff:<br />
1) /action-type/R.#+R.#/dir/path (format follows A) and B))<br />
2) /action-type/dir/path/R.#+R.# (more &#8216;intuitive&#8217; URL)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3373</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deciding on a URL scheme for Basie&#8217;s repo browser</title>
		<link>http://blog.basieproject.org/?p=3343</link>
		<comments>http://blog.basieproject.org/?p=3343#comments</comments>
		<pubDate>Thu, 03 Jun 2010 00:11:45 +0000</pubDate>
		<dc:creator>Colin Morris</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3343</guid>
		<description><![CDATA[If you&#8217;re on the Basie mailing list, you may have noticed some lively debate over how to structure URLs for Basie&#8217;s repository browser. Greg has asked me to summarize the positions of both camps and their pros and cons. You can vote for your preferred option in the comments of this post.
Before presenting the two [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re on the Basie mailing list, you may have noticed some lively debate over how to structure URLs for Basie&#8217;s repository browser. Greg has asked me to summarize the positions of both camps and their pros and cons. You can vote for your preferred option in the comments of this post.</p>
<p>Before presenting the two options, let me describe the motivating problem. We can agree that the URL to view the directory /spam/eggs in the project Vikings should look something like:</p>
<p style="padding-left: 30px;">http://basie.org/Vikings/view-source/spam/eggs/</p>
<p>(In the future, I&#8217;ll omit everything before &#8216;view-source&#8217; for the sake of brevity). Now the question is, how should the URL change if the user wants to see the same directory, but with one or more differences in content or presentation, such as:</p>
<ul>
<li>with files sorted by age/size/name</li>
<li>at a different revision</li>
</ul>
<p>There are at least two answers to this question.</p>
<p><span id="more-3343"></span></p>
<h2>Option 1: Query Strings</h2>
<p>The query string is the series of name-value pairs that come at the end of a URL following a question mark (if you&#8217;re not familiar with the concept, the <a href="http://en.wikipedia.org/wiki/Query_string">wiki page</a> is pretty good). In the above scenario, the default URL would still be:</p>
<p style="padding-left: 30px;">/view-source/spam/eggs/</p>
<p>But, we might also have URLs like:</p>
<p style="padding-left: 30px;">/view-source/spam/eggs/?rev=612</p>
<p style="padding-left: 30px;">/view-source/spam/eggs/?order=size</p>
<p style="padding-left: 30px;">/view-source/spam/eggs/?rev=525&amp;order=name</p>
<p>And so on.</p>
<p>The regular expression that Django would use to recognize such a URL would be something like: r&#8217;^view-source/(?P&lt;path&gt;.+)$&#8217;. Django provides easy access to values from the query string using a dictionary-like object that&#8217;s part of the request object passed to the view. For example, from the view, the developer would access the &#8216;rev&#8217; value as follows: rev = request.GET['rev'].</p>
<h3>Pros:</h3>
<ul>
<li>Very easy to implement.</li>
<li>Only uses as much space as is needed (so the default URL, with all the parameters set to their defaults, will be as short as possible).</li>
</ul>
<h3>Cons:</h3>
<ul>
<li>Some consider this style of URL less &#8216;pretty&#8217; or &#8216;Djangoesque&#8217;. See <a href="http://www.djangobook.com/en/2.0/chapter03/">this</a> page, particularly the section on dynamic URLs.</li>
</ul>
<h2>Option 2: Clean URLs</h2>
<p>As the name suggests, these URLs might be considered a bit more aesthetically pleasing. They use slashes as delimiters, rather than the ampersands and question mark of the query string. The default URL for our example would be (assuming the only options are sorting and viewing an older revision) something like:</p>
<p style="padding-left: 30px;">/view-source/spam/eggs/revision/latest/order/none</p>
<p>Changing some of the options would give:</p>
<p style="padding-left: 30px;">/view-source/spam/eggs/revision/latest/order/size</p>
<p style="padding-left: 30px;">/view-source/spam/egg/revision/525/order/name</p>
<p>The re to recognize these URLs would look something like: r&#8217;^/view-source/(?P&lt;path&gt;.+*)/revision/(?P&lt;rev&gt;.*)/order/(?P&lt;order&gt;.*)/</p>
<p>Note that here a specific arbitrary order has been imposed on the parameters, which all URLs must follow. If we didn&#8217;t have this order, the RE would be rather long indeed.</p>
<h3>Pros:</h3>
<ul>
<li>&#8216;Pretty&#8217; in the sense of not using any extraneous punctuation marks.</li>
<li>The full URL can be indexed by search engines, whereas with the first option, parameters like revision number will be ignored by most search engine crawlers, which ignore query strings.</li>
</ul>
<h3>Cons:</h3>
<ul>
<li>&#8216;Not pretty&#8217; in the sense of being much longer by default*.</li>
<li>If anyone, user or developer, wants to write or edit a URL by hand, they have to remember the arbitrary ordering of parameters.</li>
<li>Both the above problems will be aggravated the more parameters we have. The <a href="http://code.basieproject.org/sandbox/pinax-browser/rev-history-mockup/">current mockup</a> of revision histories uses 5 optional parameters. The default URL for viewing the revision history of a file under this scheme would be something like: /view-source/spam/eggs.py/startrev/0/endrev/latest/startdate/none/enddate/none/commentsearch/none/</li>
</ul>
<p>I&#8217;ve tried to be as impartial as possible in my treatment of both options, but let me know (in comments or e-mail) if you think there are any points I left out or errors.</p>
<p>* If you&#8217;re curious why this option requires that all parameters be  explicitly included, see the discussion on the mailing list. The short  answer is: the browser poses something of a unique challenge, because  the path name is itself a sort of variable, so finding the line of  demarcation between where the path name ends and the parameters begin is  actually kind of hard when you&#8217;re using the same delimiter for  everything.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3343</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Russell Keith-Magee&#8217;s talk at Djangocon.eu</title>
		<link>http://blog.basieproject.org/?p=3305</link>
		<comments>http://blog.basieproject.org/?p=3305#comments</comments>
		<pubDate>Wed, 02 Jun 2010 13:36:42 +0000</pubDate>
		<dc:creator>Jan Rudy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3305</guid>
		<description><![CDATA[First of all, let me apologize for taking so long in writing this post. I don&#8217;t have full time internet access where I&#8217;ve been staying, so everything takes a little bit longer than I would like.  
Anyway, I was lucky enough to attend Djangocon.eu in Berlin this last week. Being my first conference, it [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">First of all, let me apologize for taking so long in writing this post. I don&#8217;t have full time internet access where I&#8217;ve been staying, so everything takes a little bit longer than I would like. <img src='http://blog.basieproject.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">Anyway, I was lucky enough to attend Djangocon.eu in Berlin this last week. Being my first conference, it was a bit overwhelming but it was a lot of fun. It was a pretty intense week, I met a bunch of people and I learned a lot. Be sure to check out all the talks on <a title="Djangocon.eu @ blip.tv" href="http://djangoconeu.blip.tv/" target="_blank">blip.tv</a> (especially Idan Gazit&#8217;s talk<a href="http://blip.tv/file/3685673" target="_blank"> &#8216;Design for Developers&#8217;</a>, as we&#8217;re diving head first into the code browser design).</p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;"><strong>Bad Pony!</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blip.tv/play/heALgeHtFwI%2Em4v" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="300" src="http://blip.tv/play/heALgeHtFwI%2Em4v" allowfullscreen="true"></embed></object></p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">On day 2, Russell Keith-Magee gave an interesting talk on the Django development process. By looking at why some feature proposals are rejected (or put on hold), the talk sheds some light on how the Django community is structured, why certain decisions are made, and how developers can go about contributing to it. From the point of view of Basie, it was an interesting look at how a large open source project manages it&#8217;s development and the tools that they use (trac).</p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">I&#8217;m going to skip over the majority of Russell&#8217;s talk and get right to the Basie specific stuff. (Check out Russell&#8217;s talk above or a summary <a href="http://reinout.vanrees.org/weblog/2010/05/25/no-bad-pony.html" target="_blank">here</a>.)</p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">Django is a large project with a lot of code, a lot of contributors, and even more users. Managing an open source project of this size isn&#8217;t easy, especially with the relatively small number of core committers. As such, it can be difficult for developers who are new to the community to build up a reputation in that community. And in open source, reputation can go a long way &#8211; if a core committer recognizes your name, they&#8217;ll be more likely to take a look at your tickets and patches.</p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">In the current system, Django uses trac to manage the code, tickets and patches. Reputation is managed &#8216;offline&#8217; &#8211; it&#8217;s boils down to whether or not people recognize your name as someone who is contributing to the community. Since the core team has limited resources, they need to be selective as to where they put their time. And invariably, their time will go towards dealing with issues that come from people that they know and trust &#8211; i.e. from contributing members of the community.</p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">There was a lot of great project management discussion during the question period and  <a href="http://jacobian.org/" target="_blank">Jacob Kaplan-Moss</a> (Django co-creator and core developer) came up to help field some of the questions. The first question had to do with the <a href="http://docs.djangoproject.com/en/dev/internals/contributing/#ticket-triage" target="_blank">ticket triage process</a>. During the ticket triage stage, the ticket&#8217;s status (eg. <em>duplicate</em>, <em>won&#8217;t fix</em>, or <em>works for me</em>) is a bit too terse and is often misinterpreted. To help developers who are new to the process, Jacob said that they were drafting a set of &#8216;form letters&#8217; to help clarify what each ticket status means and what the next step in each stage is, including what you should do if you think the decision was wrong. These letters will reside on a page of their wiki, but I think it would be nice you had the option to send these letters automatically when a ticket is triaged.</p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">The next question directly touched on some of the shortcomings of trac (or specifically the outdated version that they are currently running). Feature proposals for upcoming versions of Django aren&#8217;t handled via trac, but on a wiki page where community members propose tickets to be addressed in the upcoming release. Russell proposed integrating a voting system into trac (via a plugin) that allows developers to vote on tickets that are affecting them personally. It would then generate a leader-board of the top outstanding tickets that need addressing. In addition to voting on tickets, he proposed that they need a way of voting on patches. For example, if 40 people are using a particular patch &#8211; the core team would like to know about it. On top of keeping tabs on who&#8217;s <em>writing </em>good patches, they&#8217;d also like to be able to keep track of the people who are good at <em>picking </em>good patches.</p>
<p style="font-family: 'Times New Roman'; line-height: normal; font-size: small;">What I think that this all boils down to is integrating a voting and karma system into the project management system. Obviously, this wouldn&#8217;t be as useful to smaller projects with only a handful of developers, but if Basie wants to make itself more attractive to larger projects then this would be a great asset. Taking a lesson from social news sites like reddit or digg, we could attach karma scores to tickets, patches and users (or anything else!). Instead of just adding your email to the cc list, users could follow tickets by upvoting. We could then display these tickets on each user&#8217;s profile page, which is a lot nicer than just saving a bookmark to the ticket (or in 30-pages of paper notes like Jacob does!). This has the potential of harvesting a <em>tonne</em> of useful information which would be invaluable for larger projects. Apparently some of this is being addressed in an upcoming version of trac (ticket voting?), but I think Basie could set itself apart by integrating social networking features at its core.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3305</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A look at TortoiseSVN</title>
		<link>http://blog.basieproject.org/?p=3159</link>
		<comments>http://blog.basieproject.org/?p=3159#comments</comments>
		<pubDate>Tue, 18 May 2010 17:43:44 +0000</pubDate>
		<dc:creator>tritchie</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://blog.basieproject.org/?p=3159</guid>
		<description><![CDATA[Tortoise is a line of version control system tools. There&#8217;s a Tortoise tool for SVN, another for Mercurial, another for Bazaar, and so on. I&#8217;m taking a look at the SVN tool for Windows.
Shell-facing UI
The first thing I notice about its interface is that it&#8217;s a shell extension. The advantage to this is the user [...]]]></description>
			<content:encoded><![CDATA[<p>Tortoise is a line of version control system tools. There&#8217;s a Tortoise tool for SVN, another for Mercurial, another for Bazaar, and so on. I&#8217;m taking a look at the SVN tool for Windows.</p>
<h2>Shell-facing UI</h2>
<p style="text-align: left;"><a href="http://blog.basieproject.org/wp-content/uploads/2010/05/shell-hover-cropped.png"><img class="size-medium wp-image-3161 alignleft" title="shell hover cropped" src="http://blog.basieproject.org/wp-content/uploads/2010/05/shell-hover-cropped-300x89.png" alt="shell hover cropped" width="300" height="89" /></a>The first thing I notice about its interface is that it&#8217;s a shell extension. The advantage to this is the user already has a familiar browsing structure and set of icons. The disadvantage is the tooltip for the folder is the Windows one, rather than the Tortoise one. This means that the icons that TortoiseSVN have to contain all the user needs to know.</p>
<p style="text-align: left;">I remember from my first day using the tool my initial impressions of what the icons meant were wrong and I had to pull up <a href="http://tortoisesvn.net/node/138">the legend</a>. The green circle with a checkmark was easy for me to understand. My files were in sync with the repository. The icons with the exclamation marks were less so.</p>
<p style="text-align: left;">The icon for conflict mimics the icon that Windows uses for errors, that is a triangle containing an exclamation mark. What did the red circle with the exclamation mark mean? Is it as bad? No, it just means modified. These are the files that will get submitted when I do a commit. Fortunately I didn&#8217;t need the legend for very long. When in other parts of the program, like the change log, you can hover over the icons and get a tooltip explaining what they mean. It didn&#8217;t take very long to learn.</p>
<p style="text-align: left;">Other parts of the program are accessed through the context menu that you get when you right click on a directory managed by TortoiseSVN. It&#8217;s got three lines in the menu: Commit, update, and TortoiseSVN. The first two are the most commonly used SVN commands so it&#8217;s great that they&#8217;re so easily accessed. The latter opens up to all of the less used TortoiseSVN commands.</p>
<p style="text-align: left;">The menu that opens up contains 25 items, related ones are grouped, and sections are separated by horizontal rules.</p>
<h2 style="text-align: left;">Non-shell elements</h2>
<p style="text-align: left;">The first thing that I did was point to one of the directories that&#8217;s got the modified icon. I select update. Here&#8217;s what I see. The dialogue at the top is what popped up, the dialogue at the bottom is what I got when I clicked &#8220;show log.&#8221;</p>
<p style="text-align: left;"><a href="http://blog.basieproject.org/wp-content/uploads/2010/05/svn-update.png"><img class="aligncenter size-medium wp-image-3175" title="svn update" src="http://blog.basieproject.org/wp-content/uploads/2010/05/svn-update-233x300.png" alt="svn update" width="233" height="300" /></a></p>
<p style="text-align: left;">I&#8217;m not surprised by the original message. That&#8217;s what you&#8217;d get if you svn update through the command line and there&#8217;s a modified file. The svn log window is what you&#8217;d expect from a svn log command on the command line, just presented differently. It makes it easier to input parameters but doesn&#8217;t add any new information. This seems to be the case for most of TortoiseSVN. There may be more added on functionality in features like merge, but those aren&#8217;t the features I touched as a student working on a collaborative school project. I&#8217;m under the impression that TortoiseSVN is more of a front end than added functionality.</p>
<h2 style="text-align: left;">Browser and graphs</h2>
<p style="text-align: left;">Take a look at the graph in Revision Explorer presented by TortoiseHg in this screenshot taken by Joel.</p>
<p style="text-align: left;"><a href="http://blog.basieproject.org/wp-content/uploads/2010/05/repository-explorer-1.png"><img class="aligncenter" title="tortoisehg repository explorer thumbnail" src="http://blog.basieproject.org/wp-content/uploads/2010/05/repository-explorer-1-300x203.png" alt="" width="300" height="203" /></a></p>
<p style="text-align: left;">Compare it to the graph presented by TortoiseSVN to me.</p>
<p style="text-align: left;"><a href="http://blog.basieproject.org/wp-content/uploads/2010/05/svn-revision-graph.png"><img class="aligncenter size-medium wp-image-3249" title="tortoisesvn revision graph" src="http://blog.basieproject.org/wp-content/uploads/2010/05/svn-revision-graph-300x244.png" alt="tortoisesvn revision graph" width="300" height="244" /></a></p>
<p style="text-align: left;">To be fair, let&#8217;s also compare two windows with the same title. Here&#8217;s the window in TortoiseSVN called Repository Explorer, compare it to Joel&#8217;s screenshot. The TortoiseSVN Repository Explorer doesn&#8217;t have a graph in it, but contains a pane with a table of version control metadata like revision number and modified date. It has a directory browser where TortoiseHg does not.</p>
<p style="text-align: left;"><a href="http://blog.basieproject.org/wp-content/uploads/2010/05/svn-browse.png"><img class="aligncenter size-medium wp-image-3259" title="svn browse" src="http://blog.basieproject.org/wp-content/uploads/2010/05/svn-browse-300x201.png" alt="svn browse" width="300" height="201" /></a></p>
<p style="text-align: left;">I was a little confused at first because the TortoiseSVN graph is called Revision Graph but I only see two nodes in there. I know that the files contained in that directory were the most heavily modified files in the repository. At least ten people touched them and there were dozens upon dozens of commits to them.</p>
<p style="text-align: left;">After going through <a href="http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-revgraph.html">TortoiseSVN&#8217;s help page on revision graphs</a> I see that the graph isn&#8217;t meant to do what I thought it would.</p>
<blockquote><p>Sometimes you need to know where branches and tags were taken from the trunk,  and the ideal way to view this sort of information is as a graph or tree  structure. That&#8217;s when you need to use <span>TortoiseSVN</span> →  <span>Revision Graph&#8230;</span></p>
<p>This command analyses the revision history and attempts to create a tree  showing the points at which copies were taken, and when branches/tags were  deleted.</p></blockquote>
<p>It&#8217;s not meant to be a very granular view but instead a quick way to find where each copy came from.</p>
<p><a href="http://tortoisehg.bitbucket.org/manual/1.0/changelog.html">TortoiseHg&#8217;s tool</a> is also meant to help you with maintenance but its default filters are broader than TortoiseSVN&#8217;s.</p>
<blockquote><p>The changelog tool (<em>also known as the repository explorer</em>) is used to visualize the revision history of your repository and to perform any maintenence tasks that involve changesets. It presents a graph of the revision history, showing the parent/child relationship of each change. At each revision you can view the files that were modified and the contents of those changes.</p></blockquote>
<p>TortoiseHg has configurable filters and its defaults show all changes.  TortoiseSVN does allow you to check &#8220;Show all revisions&#8221; but it&#8217;s still a  bit confusing. I couldn&#8217;t work out how to refresh the view to get all the revisions, and closing and reopening the browser showed me the same thing.</p>
<p>Which approach is more useful to Basie users? My immediate guess is TortoiseHg&#8217;s wide open filters since students rarely create branches or tags. We can still support filters out of consideration to the use case where students build off an established open source project and would want to find the right tag or branch to import.</p>
<p>The TortoiseSVN approach is great for release management and importing, both of which are extremely rare occurrences for student projects. The TortoiseHg approach with its default filters makes it easier to get up to speed after you&#8217;ve spent a couple days away from coding because you were working on other courses. The downside to the TortoiseHg approach is that it works based on commits in general and it&#8217;s harder to narrow down to a chunk of the project that you&#8217;re working on.</p>
<p>So how about a hybrid that lets you browse to the couple of files you&#8217;re working on, and then see a graph of all revisions?</p>
<h2>Ending thoughts</h2>
<p>I&#8217;m the opposite of a power user of SVN. I used TortoiseSVN so that I didn&#8217;t have to keep a reference chart handy. It made it easier to read output. Now that I&#8217;m trying to dig deeper for ideas I see a couple things in it that I really like.</p>
<ul>
<li>It&#8217;s nice to have hyperlinked features, like being able to diff from  within a commit window.</li>
<li>It&#8217;s also nice to speed up a few things like creating patch files from a diff.</li>
<li>Using the shell lets the user set his or her own preferred view in an already familiar environment. Can we make Basie&#8217;s browser let the user select different views? Is it worth it? Should we mimic conventions present in Windows, OS X, KDE, Gnome?</li>
<li>Visualizations of changes are great. Maybe we ought to be able to do it by groups of files rather than commits, though.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.basieproject.org/?feed=rss2&amp;p=3159</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
