<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>Eleutian SpeakENG Development Blog - agile</title>
    <link>http://blog.eleutian.com/</link>
    <description />
    <language>en-us</language>
    <copyright>Eleutian Technology</copyright>
    <lastBuildDate>Fri, 11 Jan 2008 07:48:38 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>aaron@eleutian.com</managingEditor>
    <webMaster>aaron@eleutian.com</webMaster>
    <item>
      <trackback:ping>http://blog.eleutian.com/Trackback.aspx?guid=bc476d8f-0e69-43af-bc61-4c22c5e8f9eb</trackback:ping>
      <pingback:server>http://blog.eleutian.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.eleutian.com/PermaLink,guid,bc476d8f-0e69-43af-bc61-4c22c5e8f9eb.aspx</pingback:target>
      <dc:creator>Aaron</dc:creator>
      <wfw:comment>http://blog.eleutian.com/CommentView,guid,bc476d8f-0e69-43af-bc61-4c22c5e8f9eb.aspx</wfw:comment>
      <wfw:commentRss>http://blog.eleutian.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bc476d8f-0e69-43af-bc61-4c22c5e8f9eb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="210" alt="stack-bar-chart" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/AddingburnupchartstoMingleretroactively_15031/stack-bar-chart_3.png" width="244" align="left" border="0" />
        </p>
        <p>
With <a href="http://studios.thoughtworks.com/mingle-project-intelligence">Mingle</a> 1.1
came several great new features, including date fields. Now you can track the date
that you complete tickets by adding a Date Done field (along with a Complete transition
that sets the Date Done field to today) and locking the Status field to be editable
only by transition. 
</p>
        <p>
This works great for newly completed cards, but what about all the cards you already
have in your system? Sure you could go without burn-up charts and date stats for those
cards, but what's the fun in that?  
</p>
        <br style="clear: both" />
        <p>
          <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="120" alt="taskcomplete" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/AddingburnupchartstoMingleretroactively_15031/taskcomplete_3.jpg" width="604" border="0" />
        </p>
        <p>
Fortunately, Mingle tracks every card change in a history table. Each change in the
history table has a date associated with it, so all we need to do is figure out how
to extract the dates we care about. I must warn you, this is a little complicated,
and I'm sure ThoughtWorks doesn't at all condone you mucking around in your Mingle
database manually, so please please back up your database before attempting this and
of course I'm not responsible for any damage you do. That said, here's how I was able
to retroactively add dates for our two date fields: Date Done, and Date Published.
</p>
        <ol>
          <li>
Back up your Mingle DB. Really. 
</li>
          <li>
You'll need to identify the field you use to track status. We use Status. We have
Status of 'Not Done', 'Done', and 'Published'. 
</li>
          <li>
Then connect to your Mingle database and find the name of your cards table and your
card_versions table. Our project is called "eleutian_speakeng" so our tables are "eleutian_speakeng_cards"
and "eleutian_speakeng_card_versions". 
</li>
          <li>
Add the date fields you want to populate if you don't already have them. We have "Date
Added", "Date Published" and "Date Done". 
</li>
          <li>
Figure out which fields in the two tables you identified map to your status and dates
(this is usually as easy as prepending cp_ and box_caring your names. For us we have
cp_status, cp_date_published, cp_date_done, cp_date_added. 
</li>
          <li>
Edit the following queries to add in your table/field names and values (these are
the exact queries I ran, you'll need to change the red things): <pre>UPDATE <font color="#ff0000">eleutian_speakeng_cards</font> SET <font color="#ff0000">cp_date_added</font> =
created_at UPDATE <font color="#ff0000">eleutian_speakeng_cards</font> card SET card.<font color="#ff0000">cp_date_done</font> =
( SELECT MAX(b.updated_at) FROM <font color="#ff0000">eleutian_speakeng_card_versions</font> a
INNER JOIN <font color="#ff0000">eleutian_speakeng_card_versions</font> b ON a.number
= b.number AND b.version=a.version+1 WHERE card.number = a.number AND (a.<font color="#ff0000">cp_status</font>=<font color="#ff0000">'Not
Done'</font> OR a.<font color="#ff0000">cp_status</font> IS NULL) AND b.<font color="#ff0000">cp_status</font>=<font color="#ff0000">'Done'</font> )
WHERE card.<font color="#ff0000">cp_status</font> = <font color="#ff0000">'Done'</font> UPDATE <font color="#ff0000">eleutian_speakeng_cards</font> card
SET card.<font color="#ff0000">cp_date_published</font> = ( SELECT MAX(b.updated_at)
FROM <font color="#ff0000">eleutian_speakeng_card_versions</font> a INNER JOIN <font color="#ff0000">eleutian_speakeng_card_versions</font> b
ON a.number = b.number AND b.version=a.version+1 WHERE card.number = a.number AND
(a.<font color="#ff0000">cp_status</font> IN (<font color="#ff0000">'Done', 'Not Done'</font>)
OR a.<font color="#ff0000">cp_status</font> IS NULL) AND b.<font color="#ff0000">cp_status</font>=<font color="#ff0000">'Published'</font> )
WHERE card.<font color="#ff0000">cp_status</font> = <font color="#ff0000">'Published'</font></pre></li>
          <li>
Once you've got that taken care of, go ahead and run the queries (you backed up right?)
and you should be good to go.</li>
        </ol>
        <p>
So now that you've got your dates in your database, how do you get the cool burn up
chart? Like this (mold to your project):
</p>
        <pre>{{
   stack-bar-chart
   x-label-start: SELECT MIN('Date Added')
   x-label-end: Today
   x-label-step: 14
   chart-height: 600
   chart-width: 700
   plot-height: 500
   plot-width: 550
   conditions: Type IN (Bug, Story, Task)
   three-d: true
   cumulative: true
   series:
     - label: 'Not Done'
       color: #e6a800
       data: SELECT 'Date Added', COUNT(*)
       type: area
     - label: Done
       color: #1bcc00
       type: area
       data: SELECT 'Date Done', Count(*) WHERE 'Date Done' IS NOT NULL
     - label: Published
       color: #0079bf
       type: area
       data: SELECT 'Date Published', COUNT(*) WHERE 'Date Published' IS NOT NULL
}}
</pre>
        <img width="0" height="0" src="http://blog.eleutian.com/aggbug.ashx?id=bc476d8f-0e69-43af-bc61-4c22c5e8f9eb" />
      </body>
      <title>Adding burn-up charts to Mingle retroactively</title>
      <guid isPermaLink="false">http://blog.eleutian.com/PermaLink,guid,bc476d8f-0e69-43af-bc61-4c22c5e8f9eb.aspx</guid>
      <link>http://blog.eleutian.com/2008/01/11/AddingBurnupChartsToMingleRetroactively.aspx</link>
      <pubDate>Fri, 11 Jan 2008 07:48:38 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="210" alt="stack-bar-chart" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/AddingburnupchartstoMingleretroactively_15031/stack-bar-chart_3.png" width="244" align="left" border="0"&gt; 
&lt;/p&gt;
&lt;p&gt;
With &lt;a href="http://studios.thoughtworks.com/mingle-project-intelligence"&gt;Mingle&lt;/a&gt; 1.1
came several great new features, including date fields. Now you can track the date
that you complete tickets by adding a Date Done field (along with a Complete transition
that sets the Date Done field to today) and locking the Status field to be editable
only by transition. 
&lt;/p&gt;
&lt;p&gt;
This works great for newly completed cards, but what about all the cards you already
have in your system? Sure you could go without burn-up charts and date stats for those
cards, but what's the fun in that?&amp;nbsp; 
&lt;/p&gt;
&lt;br style="clear: both"&gt;
&lt;p&gt;
&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="120" alt="taskcomplete" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/AddingburnupchartstoMingleretroactively_15031/taskcomplete_3.jpg" width="604" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
Fortunately, Mingle tracks every card change in a history table. Each change in the
history table has a date associated with it, so all we need to do is figure out how
to extract the dates we care about. I must warn you, this is a little complicated,
and I'm sure ThoughtWorks doesn't at all condone you mucking around in your Mingle
database manually, so please please back up your database before attempting this and
of course I'm not responsible for any damage you do. That said, here's how I was able
to retroactively add dates for our two date fields: Date Done, and Date Published.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Back up your Mingle DB. Really. 
&lt;li&gt;
You'll need to identify the field you use to track status. We use Status. We have
Status of 'Not Done', 'Done', and 'Published'. 
&lt;li&gt;
Then connect to your Mingle database and find the name of your cards table and your
card_versions table. Our project is called "eleutian_speakeng" so our tables are "eleutian_speakeng_cards"
and "eleutian_speakeng_card_versions". 
&lt;li&gt;
Add the date fields you want to populate if you don't already have them. We have "Date
Added", "Date Published" and "Date Done". 
&lt;li&gt;
Figure out which fields in the two tables you identified map to your status and dates
(this is usually as easy as prepending cp_ and box_caring your names. For us we have
cp_status, cp_date_published, cp_date_done, cp_date_added. 
&lt;li&gt;
Edit the following queries to add in your table/field names and values (these are
the exact queries I ran, you'll need to change the red things): &lt;pre&gt;UPDATE &lt;font color="#ff0000"&gt;eleutian_speakeng_cards&lt;/font&gt; SET &lt;font color="#ff0000"&gt;cp_date_added&lt;/font&gt; =
created_at UPDATE &lt;font color="#ff0000"&gt;eleutian_speakeng_cards&lt;/font&gt; card SET card.&lt;font color="#ff0000"&gt;cp_date_done&lt;/font&gt; =
( SELECT MAX(b.updated_at) FROM &lt;font color="#ff0000"&gt;eleutian_speakeng_card_versions&lt;/font&gt; a
INNER JOIN &lt;font color="#ff0000"&gt;eleutian_speakeng_card_versions&lt;/font&gt; b ON a.number
= b.number AND b.version=a.version+1 WHERE card.number = a.number AND (a.&lt;font color="#ff0000"&gt;cp_status&lt;/font&gt;=&lt;font color="#ff0000"&gt;'Not
Done'&lt;/font&gt; OR a.&lt;font color="#ff0000"&gt;cp_status&lt;/font&gt; IS NULL) AND b.&lt;font color="#ff0000"&gt;cp_status&lt;/font&gt;=&lt;font color="#ff0000"&gt;'Done'&lt;/font&gt; )
WHERE card.&lt;font color="#ff0000"&gt;cp_status&lt;/font&gt; = &lt;font color="#ff0000"&gt;'Done'&lt;/font&gt; UPDATE &lt;font color="#ff0000"&gt;eleutian_speakeng_cards&lt;/font&gt; card
SET card.&lt;font color="#ff0000"&gt;cp_date_published&lt;/font&gt; = ( SELECT MAX(b.updated_at)
FROM &lt;font color="#ff0000"&gt;eleutian_speakeng_card_versions&lt;/font&gt; a INNER JOIN &lt;font color="#ff0000"&gt;eleutian_speakeng_card_versions&lt;/font&gt; b
ON a.number = b.number AND b.version=a.version+1 WHERE card.number = a.number AND
(a.&lt;font color="#ff0000"&gt;cp_status&lt;/font&gt; IN (&lt;font color="#ff0000"&gt;'Done', 'Not Done'&lt;/font&gt;)
OR a.&lt;font color="#ff0000"&gt;cp_status&lt;/font&gt; IS NULL) AND b.&lt;font color="#ff0000"&gt;cp_status&lt;/font&gt;=&lt;font color="#ff0000"&gt;'Published'&lt;/font&gt; )
WHERE card.&lt;font color="#ff0000"&gt;cp_status&lt;/font&gt; = &lt;font color="#ff0000"&gt;'Published'&lt;/font&gt; &lt;/pre&gt;
&lt;li&gt;
Once you've got that taken care of, go ahead and run the queries (you backed up right?)
and you should be good to go.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
So now that you've got your dates in your database, how do you get the cool burn up
chart? Like this (mold to your project):
&lt;/p&gt;
&lt;pre&gt;{{
   stack-bar-chart
   x-label-start: SELECT MIN('Date Added')
   x-label-end: Today
   x-label-step: 14
   chart-height: 600
   chart-width: 700
   plot-height: 500
   plot-width: 550
   conditions: Type IN (Bug, Story, Task)
   three-d: true
   cumulative: true
   series:
     - label: 'Not Done'
       color: #e6a800
       data: SELECT 'Date Added', COUNT(*)
       type: area
     - label: Done
       color: #1bcc00
       type: area
       data: SELECT 'Date Done', Count(*) WHERE 'Date Done' IS NOT NULL
     - label: Published
       color: #0079bf
       type: area
       data: SELECT 'Date Published', COUNT(*) WHERE 'Date Published' IS NOT NULL
}}
&lt;/pre&gt;
&lt;img width="0" height="0" src="http://blog.eleutian.com/aggbug.ashx?id=bc476d8f-0e69-43af-bc61-4c22c5e8f9eb" /&gt;</description>
      <comments>http://blog.eleutian.com/CommentView,guid,bc476d8f-0e69-43af-bc61-4c22c5e8f9eb.aspx</comments>
      <category>agile</category>
      <category>development</category>
      <category>mingle</category>
      <category>tips</category>
      <category>tools</category>
    </item>
    <item>
      <trackback:ping>http://blog.eleutian.com/Trackback.aspx?guid=f16bd97a-8bae-4e5c-8e21-99c86b789efd</trackback:ping>
      <pingback:server>http://blog.eleutian.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.eleutian.com/PermaLink,guid,f16bd97a-8bae-4e5c-8e21-99c86b789efd.aspx</pingback:target>
      <dc:creator>Aaron</dc:creator>
      <wfw:comment>http://blog.eleutian.com/CommentView,guid,f16bd97a-8bae-4e5c-8e21-99c86b789efd.aspx</wfw:comment>
      <wfw:commentRss>http://blog.eleutian.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f16bd97a-8bae-4e5c-8e21-99c86b789efd</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So I recently started using the Early Access edition of <a href="http://studios.thoughtworks.com/">ThoughtWorks</a>' <a href="http://studios.thoughtworks.com/mingle-project-intelligence">Mingle</a>.
Let me start out by saying I'm impressed. Mingle is a very clean, very powerful and
most importantly, very flexible approach to project management. We all have our approach
to managing our projects and Mingle allows you to handle many of those methods. I've
spent a few days over the last week configuring our Mingle project to map to our newly
developing process.  It hasn't been entirely smooth sailing, but it's slightly
less than an R1 product so I won't complain... too much :) Here's a list of my thoughts
thus far:
</p>
        <ol>
          <li>
            <strong>Installation</strong> - I've done an install on both Windows and Linux. Both
were relatively painless. The Linux install documentation was missing a few steps
but that has since been fixed. I wish that Mingle could run on IIS and/or Apache.
It's a bit annoying that I have to run it on a separate port than my primary web server,
though Jacob tells me we can proxy a port with Apache, so that'd be nice. 
</li>
          <li>
            <strong>Creating a new project - </strong>The existing templates are nice to allow
you to see what Mingle is capable of. I wouldn't recommend creating your real project
using one of the existing templates as it leaves you with a lot of undeletable properties
you don't need. Start out by creating three test projects, one using each of the three
templates and play around with them until you know what you want to go into yours.
Then create yours from a Blank Project. 
</li>
          <li>
            <strong>Card properties - </strong>It's really nice to be able to specify exactly
what properties you want to be on each of your cards. The property creation UI could
use some help though, it'd be nice if we could specify the values we want at the same
time we're creating the property--but that's just a minor nitpick. 
</li>
          <li>
            <a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/wiki.jpg" atomicselection="true">
              <img style="border-width: 0px;" alt="wiki" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/wiki_thumb.jpg" align="right" border="0" height="174" width="240" />
            </a>
            <strong>Wiki
- </strong>Mingle allows for you to create custom wiki pages that have nifty things
like bar graphs and pie charts and tables. My biggest complaint about the wiki is
lack of documentation. Not all of the samples in the documentation seem to work and
the syntax is a little confusing... plus, if you type something wrong the error messages
you get back are less than useless. Fortunately I've managed to get most of the things
I want in our overview wiki, but it took much longer than it should have. Also, there's
no way at the moment to do a burndown chart which would certainly be a nice thing
to have for a lot of the agile methodologies out there. 
</li>
          <li>
            <a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/list.jpg" atomicselection="true">
              <img style="border: 0px none ;" alt="list" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/list_thumb.jpg" align="right" border="0" height="89" width="240" />
            </a>
            <strong>List
view - </strong>Mingle has some really simple filtering options for its two views.
You can basically choose a value for each of your properties (or any) and add tags
you'd like to filter by as well. Once you have a view you like, you can save that
view. If you really like the view you can add it as a tab to the top for the whole
team to see. Unfortunately there are some limitations: There's no way to give
an OR for two property values and there's no way to specify that you only want to
see cards with a property that has a null value. I'm hoping they will add these things
eventually. There's also no way to specify "Current User" in the view... which makes
views like "My Bugs" out of reach. Also, there's currently a max page size of 25,
so if you want to do batch operations you can only do them 25 at a time. That's pretty
annoying. In the meantime I can get *most* of my views the way I want them, but
not all of them. 
</li>
          <li>
            <a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/grid.jpg" atomicselection="true">
              <img style="border-width: 0px;" alt="grid" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/grid_thumb.jpg" align="right" border="0" height="89" width="240" />
            </a>
            <strong>Grid
view</strong> - OK, this is pretty cool. You can pick a property to group by, and
pick a property to color by. Of course you can specify the same filters as you can
in the list (so the same limitations). What's nice though, is you can drag those cards
around into different values for that grouped property. You can move a Story Card
from New to Open just by dragging it. Pretty slick if you ask me. This view allows
you to make a number of cool views. You can create an Assignment view that lets you
drag unassigned cards to ready and willing developers. You can create an Iteration
planning view that allows you to drag cards around to different Iterations. Or even
an estimation view so you can drag your cards to different story point values. If
you need more detail on a card, you can always just click it. It'll pop up a nice
little window with more information so you don't have to navigate away from the page.
All in all pretty fancy. It would be nice if the lanes were colored... if you have
a long list it'd be easier to tell where you're dragging to when you're at the
bottom. Oh, and where's the sort? I should be able to sort the cards in the grid. 
</li>
          <li>
            <a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/transitions.jpg" atomicselection="true">
              <img style="border: 0px none ;" alt="transitions" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/transitions_thumb.jpg" align="right" border="0" height="143" width="240" />
            </a>
            <strong>Transitions</strong> -
These are cool too. These allow you to add buttons to cards that meet specific preconditions.
Clicking that button will set the properties you specify in the transition. Pretty
slick to kind of workflow your process. Unfortunately there are a few things missing
from these as well. You can't specify "Current User" in either the preconditions or
the set area. This means you can't do things like automatically set the Approved By
field when something is Approved. You also can't say that only the user who a Card
is Assigned To can Resolve it. Just adding that feature would make it so much more
powerful. The other thing that is lacking is that the only way to "trigger" these
transitions is to actually click on the transition button. This means that dragging
things around your swim lanes won't trigger these. Yes, that complicates things but
it'd be nice to have some sort of trigger criteria... or even a view that shows "transitionable"
cards that you can drag to transition them. Obviously I'm rambling now, but I think
this is a cool idea and can be expanded upon. 
</li>
          <li>
            <a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/svn.jpg" atomicselection="true">
              <img style="border: 0px none ;" alt="svn" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/svn_thumb.jpg" align="right" border="0" height="123" width="240" />
            </a>
            <strong> SVN
Integration</strong> - Right now we use Trac as a Wiki and to explore our SVN revisions.
Mingle's SVN integration looks pretty slick but is kind of broken. Take a look at
this diff to the right. See all that white? Why is that white? It's not blank lines
when you do a svn diff... where's my context? I don't know if this is a bug or what,
but it's annoying. Other than that, Mingle's SVN integration is reasonable. I like
the fact that you can define keywords so that when you add things like "#245" or "card
245" in your commit log it will automatically reference that commit with the specified
card. 
</li>
          <li>
            <strong>Support</strong> - Eh... It seems the best point of contact with support is
either email (which I haven't had a high enough priority issue to try) or their <a href="https://75.40.150.117/forums/1">forum</a>.
The forum is painfully slow most of the day (read: unusable, but who knows if that's
a routing issue between me and them or just their forum server/software) and doesn't
have a ton of activity. A few of the bugs I reported were acknowledged via email so
that's good, but who knows how seriously the suggestions are taken. There's only one
guy moderating the forum so I'm sure he's busy, but it would be nice to see a bit
more activity and feedback. 
</li>
          <li>
            <strong>Overall impressions</strong> - It's slick. It's flexible. It's... a little
slow. Loading our Bug Board view just now took almost 5.71 seconds and 51 requests.
Eek. Granted I'm not local right now, but it's not much faster when I'm on my Lan.
That said, we're using it. We moved all our bugs off of <a href="http://www.fogcreek.com/FogBugz/">FogBugz</a> and
we're going to give Mingle a shot for now.  It's free for the first 5 users,
so why not? 
</li>
          <li>
            <strong>Wish list</strong> - 
</li>
        </ol>
        <ul>
          <li>
The greatest thing about <a href="http://www.fogcreek.com/FogBugz/">FogBugz</a> is
its email integration. It can check a mail account you specify and automatically create
tickets for messages in that inbox. You can reply to the senders of that mail via
FogBugz interface and you can receive more correspondence through email from the original
sender. It's pretty slick and great for support. Right now we're just using FogBugz
for this purpose. To handle support requests. If something is upgraded to a bug we'll
move it to Mingle... but the copy/paste operation will probably get tedious, so it'd
be nice to have this functionality built into Mingle as well. 
</li>
          <li>
I want to be able to show/hide properties based on another property such as Type.
If my Type is Bug, I should see Bug Status and not Story Status. Right now all cards
have all properties even if they aren't relevant. It's fine that they have them, because
I could change the type, but I don't want to see them. 
</li>
          <li>
I also want to create Backlogs--Priority Queues. Having just a property with a fixed
# of #s for Priority is annoying at best. It's much more natural to keep things in
a sorted order. I want to be able to create a new backlog with a specific filter and
then drag my cards into an order that I want. I then want to be able to sort in that
order. That way I can pop things off of that stack in that order and as new cards
come in I can insert them. I'm very tempted to write this feature on my own... 
</li>
          <li>
Triggers--I mentioned this before, but it's worth mentioning again. I'd like to be
able to specify what happens when I drag a card from one lane to another in a Grid
view. I'd also like to be able to gate that dragging... something can't be dragged
to Ready for Development until it has an Estimate set. Now that I think more about
it, I think the latter would be more useful. I want to be able to specify constraints
on the Cards that will be enforced by all views and editing techniques.</li>
        </ul>
        <p>
Alright, that's more than enough rambling for now. I'd strongly urge you all to go
take a look at Mingle. It's got a ton of potential and I think it's definitely headed
in the right direction. Remember, it's free for Open Source and it's free for the
first five users of a Commercial project. 
</p>
        <img width="0" height="0" src="http://blog.eleutian.com/aggbug.ashx?id=f16bd97a-8bae-4e5c-8e21-99c86b789efd" />
      </body>
      <title>Mingle: First Impressions</title>
      <guid isPermaLink="false">http://blog.eleutian.com/PermaLink,guid,f16bd97a-8bae-4e5c-8e21-99c86b789efd.aspx</guid>
      <link>http://blog.eleutian.com/2007/07/17/MingleFirstImpressions.aspx</link>
      <pubDate>Tue, 17 Jul 2007 02:56:44 GMT</pubDate>
      <description>&lt;p&gt;
So I recently started using the Early Access edition of &lt;a href="http://studios.thoughtworks.com/"&gt;ThoughtWorks&lt;/a&gt;' &lt;a href="http://studios.thoughtworks.com/mingle-project-intelligence"&gt;Mingle&lt;/a&gt;.
Let me start out by saying I'm impressed. Mingle is a very clean, very powerful and
most importantly, very flexible approach to project management. We all have our approach
to managing our projects and Mingle allows you to handle many of those methods. I've
spent a few days over the last week configuring our Mingle project to map to our newly
developing process.&amp;nbsp; It hasn't been entirely smooth sailing, but it's slightly
less than an R1 product so I won't complain... too much :) Here's a list of my thoughts
thus far:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Installation&lt;/strong&gt; - I've done an install on both Windows and Linux. Both
were relatively painless. The Linux install documentation was missing a few steps
but that has since been fixed. I wish that Mingle could run on IIS and/or Apache.
It's a bit annoying that I have to run it on a separate port than my primary web server,
though Jacob tells me we can proxy a port with Apache, so that'd be nice. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creating a new project - &lt;/strong&gt;The existing templates are nice to allow
you to see what Mingle is capable of. I wouldn't recommend creating your real project
using one of the existing templates as it leaves you with a lot of undeletable properties
you don't need. Start out by creating three test projects, one using each of the three
templates and play around with them until you know what you want to go into yours.
Then create yours from a Blank Project. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Card properties - &lt;/strong&gt;It's really nice to be able to specify exactly
what properties you want to be on each of your cards. The property creation UI could
use some help though, it'd be nice if we could specify the values we want at the same
time we're creating the property--but that's just a minor nitpick. 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/wiki.jpg" atomicselection="true"&gt;&lt;img style="border-width: 0px;" alt="wiki" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/wiki_thumb.jpg" align="right" border="0" height="174" width="240"&gt;&lt;/a&gt;&lt;strong&gt;Wiki
- &lt;/strong&gt;Mingle allows for you to create custom wiki pages that have nifty things
like bar graphs and pie charts and tables. My biggest complaint about the wiki is
lack of documentation. Not all of the samples in the documentation seem to work and
the syntax is a little confusing... plus, if you type something wrong the error messages
you get back are less than useless. Fortunately I've managed to get most of the things
I want in our overview wiki, but it took much longer than it should have. Also, there's
no way at the moment to do a burndown chart which would certainly be a nice thing
to have for a lot of the agile methodologies out there. 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/list.jpg" atomicselection="true"&gt;&lt;img style="border: 0px none ;" alt="list" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/list_thumb.jpg" align="right" border="0" height="89" width="240"&gt;&lt;/a&gt;&lt;strong&gt;List
view - &lt;/strong&gt;Mingle has some really simple filtering options for its two views.
You can basically choose a value for each of your properties (or any) and add tags
you'd like to filter by as well. Once you have a view you like, you can save that
view. If you really like the view you can add it as a tab to the top for the whole
team to see. Unfortunately there are some limitations:&amp;nbsp;There's no way to give
an OR for two property values and there's no way to specify that you only want to
see cards with a property that has a null value. I'm hoping they will add these things
eventually. There's also no way to specify "Current User" in the view... which makes
views like "My Bugs" out of reach. Also, there's currently a max page size of 25,
so if you want to do batch operations you can only do them 25 at a time. That's pretty
annoying.&amp;nbsp;In the meantime I can get *most* of my views the way I want them, but
not all of them. 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/grid.jpg" atomicselection="true"&gt;&lt;img style="border-width: 0px;" alt="grid" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/grid_thumb.jpg" align="right" border="0" height="89" width="240"&gt;&lt;/a&gt;&lt;strong&gt;Grid
view&lt;/strong&gt; - OK, this is pretty cool. You can pick a property to group by, and
pick a property to color by. Of course you can specify the same filters as you can
in the list (so the same limitations). What's nice though, is you can drag those cards
around into different values for that grouped property. You can move a Story Card
from New to Open just by dragging it. Pretty slick if you ask me. This view allows
you to make a number of cool views. You can create an Assignment view that lets you
drag unassigned cards to ready and willing developers. You can create an Iteration
planning view that allows you to drag cards around to different Iterations. Or even
an estimation view so you can drag your cards to different story point values. If
you need more detail on a card, you can always just click it. It'll pop up a nice
little window with more information so you don't have to navigate away from the page.
All in all pretty fancy. It would be nice if the lanes were colored... if you have
a long list it'd be&amp;nbsp;easier to tell where you're dragging to when you're at the
bottom. Oh, and where's the sort? I should be able to sort the cards in the grid. 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/transitions.jpg" atomicselection="true"&gt;&lt;img style="border: 0px none ;" alt="transitions" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/transitions_thumb.jpg" align="right" border="0" height="143" width="240"&gt;&lt;/a&gt; &lt;strong&gt;Transitions&lt;/strong&gt; -
These are cool too. These allow you to add buttons to cards that meet specific preconditions.
Clicking that button will set the properties you specify in the transition. Pretty
slick to kind of workflow your process. Unfortunately there are a few things missing
from these as well. You can't specify "Current User" in either the preconditions or
the set area. This means you can't do things like automatically set the Approved By
field when something is Approved. You also can't say that only the user who a Card
is Assigned To can Resolve it. Just adding that feature would make it so much more
powerful. The other thing that is lacking is that the only way to "trigger" these
transitions is to actually click on the transition button. This means that dragging
things around your swim lanes won't trigger these. Yes, that complicates things but
it'd be nice to have some sort of trigger criteria... or even a view that shows "transitionable"
cards that you can drag to transition them. Obviously I'm rambling now, but I think
this is a cool idea and can be expanded upon. 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/svn.jpg" atomicselection="true"&gt;&lt;img style="border: 0px none ;" alt="svn" src="http://blog.eleutian.com/content/binary/WindowsLiveWriter/MingleFirstImpressions_11620/svn_thumb.jpg" align="right" border="0" height="123" width="240"&gt;&lt;/a&gt;&lt;strong&gt; SVN
Integration&lt;/strong&gt; - Right now we use Trac as a Wiki and to explore our SVN revisions.
Mingle's SVN integration looks pretty slick but is kind of broken. Take a look at
this diff to the right. See all that white? Why is that white? It's not blank lines
when you do a svn diff... where's my context? I don't know if this is a bug or what,
but it's annoying. Other than that, Mingle's SVN integration is reasonable. I like
the fact that you can define keywords so that when you add things like "#245" or "card
245" in your commit log it will automatically reference that commit with the specified
card. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support&lt;/strong&gt; - Eh... It seems the best point of contact with support is
either email (which I haven't had a high enough priority issue to try) or their &lt;a href="https://75.40.150.117/forums/1"&gt;forum&lt;/a&gt;.
The forum is painfully slow most of the day (read: unusable, but who knows if that's
a routing issue between me and them or just their forum server/software) and doesn't
have a ton of activity. A few of the bugs I reported were acknowledged via email so
that's good, but who knows how seriously the suggestions are taken. There's only one
guy moderating the forum so I'm sure he's busy, but it would be nice to see a bit
more activity and feedback. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overall impressions&lt;/strong&gt; - It's slick. It's flexible. It's... a little
slow. Loading our Bug Board view just now took almost&amp;nbsp;5.71 seconds and 51 requests.
Eek. Granted I'm not local right now, but it's not much faster when I'm on my Lan.
That said, we're using it. We moved all our bugs off of &lt;a href="http://www.fogcreek.com/FogBugz/"&gt;FogBugz&lt;/a&gt; and
we're going to give Mingle a shot for now.&amp;nbsp; It's free for the first 5 users,
so why not? 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wish list&lt;/strong&gt; - 
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
The greatest thing about &lt;a href="http://www.fogcreek.com/FogBugz/"&gt;FogBugz&lt;/a&gt;&amp;nbsp;is
its email integration. It can check a mail account you specify and automatically create
tickets for messages in that inbox. You can reply to the senders of that mail via
FogBugz interface and you can receive more correspondence through email from the original
sender. It's pretty slick and great for support. Right now we're just using FogBugz
for this purpose. To handle support requests. If something is upgraded to a bug we'll
move it to Mingle... but the copy/paste operation will probably get tedious, so it'd
be nice to have this functionality built into Mingle as well. 
&lt;/li&gt;
&lt;li&gt;
I want to be able to show/hide properties based on another property such as Type.
If my Type is Bug, I should see Bug Status and not Story Status. Right now all cards
have all properties even if they aren't relevant. It's fine that they have them, because
I could change the type, but I don't want to see them. 
&lt;/li&gt;
&lt;li&gt;
I also want to create Backlogs--Priority Queues. Having just a property with a fixed
# of #s for Priority is annoying at best. It's much more natural to keep things in
a sorted order. I want to be able to create a new backlog with a specific filter and
then drag my cards into an order that I want. I then want to be able to sort in that
order. That way I can pop things off of that stack in that order and as new cards
come in I can insert them. I'm very tempted to write this feature on my own... 
&lt;/li&gt;
&lt;li&gt;
Triggers--I mentioned this before, but it's worth mentioning again. I'd like to be
able to specify what happens when I drag a card from one lane to another in a Grid
view. I'd also like to be able to gate that dragging... something can't be dragged
to Ready for Development until it has an Estimate set. Now that I think more about
it, I think the latter would be more useful. I want to be able to specify constraints
on the Cards that will be enforced by all views and editing techniques.&lt;/li&gt;
&lt;/ul&gt;
&gt;
&lt;p&gt;
Alright, that's more than enough rambling for now. I'd strongly urge you all to go
take a look at Mingle. It's got a ton of potential and I think it's definitely headed
in the right direction. Remember, it's free for Open Source and it's free for the
first five users of a Commercial project. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.eleutian.com/aggbug.ashx?id=f16bd97a-8bae-4e5c-8e21-99c86b789efd" /&gt;</description>
      <comments>http://blog.eleutian.com/CommentView,guid,f16bd97a-8bae-4e5c-8e21-99c86b789efd.aspx</comments>
      <category>development</category>
      <category>reviews</category>
      <category>mingle</category>
      <category>agile</category>
    </item>
  </channel>
</rss>