<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Ignite Realtime Blog</title>
    <link>http://www.igniterealtime.org/community/blogs/ignite</link>
    <description>Ignite Realtime Blog</description>
    <pubDate>Sun, 22 Apr 2007 20:13:35 GMT</pubDate>
    <generator>Clearspace 2.5.2 dev (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2007-04-22T20:13:35Z</dc:date>
    <item>
      <title>On the Release Train</title>
      <link>http://www.igniterealtime.org/community/blogs/ignite/2007/04/22/on-the-release-train</link>
      <description>&lt;!-- [DocumentBodyStart:76b16be1-c6f2-43e1-99c2-91d51f332a26] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;The engineering team at Jive Software is growing fast (btw, &lt;a class="jive-link-external-small" href="http://www.jivesoftware.com/company/jobs.jsp"&gt;we're hiring&lt;/a&gt;!). I thought it might be interesting to talk about some of the engineering process changes we're making to cope with that growth, especially since they directly affect product releases. First, a bit of history. We've always had a fairly agile development process -- lots of iterations, tools like unit tests and continuous integration, etc. But, we've consistently had a lot of pain around our current process:&lt;/p&gt;&lt;p&gt;&lt;!--[CodeBlockStart:a1e8cc9e-5848-4b84-8d16-e8a0904b461f]--&gt;&lt;span&gt;
 &lt;span&gt;* Not enough time for QA&lt;/span&gt;* .
 It's always scheduled, but gets squeezed due to lack of time. For
 example, the "official" QA time period for the Spark 2.5.0 release
 got crunched down to almost nothing. 
 &lt;span&gt;* Stress when we don't need
 it&lt;/span&gt;* . The stress is caused by having to cram a ton of work
 into a short period of time to make internally set product release
 dates. It's also caused by scheduling extra features into releases
 at the last minute and by having to do emergency patch releases
 due to bugs we missed. We like working really hard, but there
 should be a way to do that without excessive stress. 
 &lt;span&gt;* Unpredictable release
 dates&lt;/span&gt;&lt;/span&gt;&lt;!--[CodeBlockEnd:a1e8cc9e-5848-4b84-8d16-e8a0904b461f]--&gt;* . The bigger a release is, the harder it is to make accurate work effort estimates. That means that dates slip and that it's hard to communicate to the outside world exactly when a release will ship.&lt;/p&gt;&lt;p&gt;So, there are some clear problems that we want to fix. The trick for us was to come up with a process that fixes those problems but that's still light-weight enough to avoid a huge administrative burden. We're now experimenting with a strict release train model for Spark and Smack. Assuming it goes well, the same model will be applied across all our products, including &lt;a class="jive-link-external-small" href="http://www.jivesoftware.com/products/clearspace"&gt;Clearspace&lt;/a&gt;. A visual summary of the model is below (click the image for a larger version):&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.igniterealtime.org/blog/wp-content/uploads/2007/04/train_small.png"&gt;&lt;img src="http://www.igniterealtime.org/blog/wp-content/uploads/2007/04/train_small.png"/&gt;&lt;/a&gt;&lt;span&gt;[Clearspace|&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/blog/wp-content/uploads/2007/04/train.png|train_small.png"&gt;http://www.igniterealtime.org/blog/wp-content/uploads/2007/04/train.png|train_sm all.png&lt;/a&gt;&lt;span&gt;]&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The key points to this model:&lt;/p&gt;&lt;ul&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;We put out a new release every three weeks (although each release will have gone through a nine week process total).&lt;/p&gt;&lt;/li&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;Three weeks before each development cycle is reserved for product management; three weeks after each development cycle is reserved for QA. But notice that all three processes are all happening at the same time.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There are all sorts of subtleties to the system like how to deal with new features that take more than three weeks of engineering time, but so far everything is going quite well.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The start of the three week cycle is always on a Monday, and we have a big meeting to determine exactly which features will go into the release. Product management has already done the work of prioritizing the features so we just need to choose exactly what we're going to work on and come up with the plan about how to get it done over the next three weeks. On the second and third Mondays during each cycle we go through more detailed updates than in our SCRUM meetings to see what's on track and what's not.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;At the end of the cycle, we:&lt;/p&gt;&lt;ul&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;Do the product release coming out of QA on Thursday.&lt;/p&gt;&lt;/li&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;On Friday, finish all development and create a branch ("spark_2_5_2_branch" for example).&lt;/p&gt;&lt;/li&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;Switch the builds in our continuous integration environment, &lt;a class="jive-link-external-small" href="http://www.jetbrains.com/teamcity/"&gt;TeamCity&lt;/a&gt;. The new branch becomes the "stable" release of the product and trunk becomes "development".&lt;/p&gt;&lt;/li&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;Release a beta version out of the new branch. In other words, the world generally always sees a stable official product release and a beta release that will become official in three weeks.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There's way more that I could talk about with this process (including some of the potential drawbacks), but I'll save that for future blog entries. Things we're jazzed about so far include solid release dates, having a better process in place to deal with new feature requests and bug reports, more stable quality in each release, and always having a place to check in new feature development (trunk). We're still early on in the new system, but we'll all know how exactly how well this works in the next two months. Of course, we'd love your feedback as time goes on about how well you think we're doing.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:76b16be1-c6f2-43e1-99c2-91d51f332a26] --&gt;</description>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">planetjabber</category>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">general</category>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">smack-api</category>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">openfire-server</category>
      <pubDate>Sun, 22 Apr 2007 20:13:35 GMT</pubDate>
      <author>matt</author>
      <guid>http://www.igniterealtime.org/community/blogs/ignite/2007/04/22/on-the-release-train</guid>
      <dc:date>2007-04-22T20:13:35Z</dc:date>
      <clearspace:dateToText>1 year, 5 months ago</clearspace:dateToText>
      <clearspace:replyCount>11</clearspace:replyCount>
      <wfw:comment>http://www.igniterealtime.org/community/blogs/ignite/comment/on-the-release-train</wfw:comment>
      <wfw:commentRss>http://www.igniterealtime.org/community/blogs/ignite/feeds/comments?blogPost=1463</wfw:commentRss>
    </item>
    <item>
      <title>Releases: Second Wave</title>
      <link>http://www.igniterealtime.org/community/blogs/ignite/2007/02/06/releases-second-wave</link>
      <description>&lt;!-- [DocumentBodyStart:f9a8ff0b-c3eb-4958-a3d4-7e98b31b091f] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;Just one week later, I'm pleased to announce the second wave of releases:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Wildfire 3.2.0&lt;/strong&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The production release of Wildfire 3.2 is &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/downloads/index.jsp"&gt;now available&lt;/a&gt;, including updated versions of the Enterprise plugin and the connection manager module. The 3.2 release is a major milestone for the project. We've massively increased scalability and&amp;nbsp; started branching out beyond instant messaging by diving into VoIP support. View the &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/builds/wildfire/docs/latest/changelog.html"&gt;changelog&lt;/a&gt; for details.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Spark 2.5.0 Beta 2&lt;/strong&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;We've &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/builds/spark/docs/2.5.0.beta2/changelog.html"&gt;incorporated&lt;/a&gt; a number of bug fixes and minor improvements since the first beta. Grab the download from the new &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/downloads/beta.jsp"&gt;beta area&lt;/a&gt; of the site.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Smack 3.0.0 Beta 1&lt;/strong&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;After a long wait, Smack 3.0.0 is now in beta. See the &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/blog/2007/02/06/smack-30-beta/"&gt;blog entry&lt;/a&gt; for full details.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Gateway Plugin 1.0.0 Beta 7&lt;/strong&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The gateway plugin, which provides connectivity to AOL, ICQ, Yahoo and MSN, gets a step closer to the final 1.0 release with the beta 7 version. View the &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/projects/wildfire/plugins-beta/gateway/changelog.html"&gt;changelog&lt;/a&gt;, or visit the &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/projects/wildfire/plugins-beta.jsp"&gt;download page&lt;/a&gt;.&amp;nbsp; Also check out &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/forum/thread.jspa?threadID=24503"&gt;Daniel's post&lt;/a&gt; for details on the release.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SparkWeb 1.0.0 Beta 1&lt;/strong&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The first downloadable release of SparkWeb is &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/projects/wildfire/plugins-beta.jsp"&gt;now ready&lt;/a&gt;. Over the last week, we fixed support for Safari, did many UI tweaks and added minor new features like emoticon support.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:f9a8ff0b-c3eb-4958-a3d4-7e98b31b091f] --&gt;</description>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">openfire-server</category>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">spark-client</category>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">planetjabber</category>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">general</category>
      <category domain="http://www.igniterealtime.org/community/blogs/ignite/tags">smack-api</category>
      <pubDate>Tue, 06 Feb 2007 23:27:37 GMT</pubDate>
      <author>matt</author>
      <guid>http://www.igniterealtime.org/community/blogs/ignite/2007/02/06/releases-second-wave</guid>
      <dc:date>2007-02-06T23:27:37Z</dc:date>
      <clearspace:dateToText>1 year, 8 months ago</clearspace:dateToText>
      <clearspace:replyCount>14</clearspace:replyCount>
      <wfw:comment>http://www.igniterealtime.org/community/blogs/ignite/comment/releases-second-wave</wfw:comment>
      <wfw:commentRss>http://www.igniterealtime.org/community/blogs/ignite/feeds/comments?blogPost=1424</wfw:commentRss>
    </item>
  </channel>
</rss>

