<?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>Dan Kulp's Blog</title>
	<atom:link href="http://www.dankulp.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.dankulp.com/blog</link>
	<description>Dan's random thoughts on the world</description>
	<lastBuildDate>Mon, 25 Jan 2010 20:18:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Apache CXF 2.2.6 and 2.1.9 are released</title>
		<link>http://www.dankulp.com/blog/?p=182</link>
		<comments>http://www.dankulp.com/blog/?p=182#comments</comments>
		<pubDate>Mon, 25 Jan 2010 20:16:08 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=182</guid>
		<description><![CDATA[I finally managed to get Apache CXF 2.2.6 and 2.1.9 released and out the door.   In a lot of ways, this was a &#8220;big&#8221; release, not because of any cool or exciting new features, but due to the concerted effort of just &#8220;fixing bugs&#8221;.  At the time I did the release build, [...]]]></description>
			<content:encoded><![CDATA[<p>I finally managed to get <a href="http://cxf.apache.org">Apache CXF</a> <a href="http://mail-archives.apache.org/mod_mbox/cxf-users/201001.mbox/&lt;201001251424.59438.dkulp@apache.org&gt;">2.2.6 and 2.1.9 released</a> and out the door.   In a lot of ways, this was a &#8220;big&#8221; release, not because of any cool or exciting new features, but due to the concerted effort of just &#8220;fixing bugs&#8221;.  At the time I did the release build, there were 19 known &#8220;bugs&#8221; (couple more bugs have been logged since then), several of them blocked on third party fixes such as in JAXB and WSS4J.   Getting down that low has been a giant effort for the entire CXF team.   At one point about 4 months ago, we had almost 250 open bugs.   Getting to the current level required a LOT of work on everyones part to dig through JIRA, write test cases, dig into with debuggers, etc&#8230;  The result is definitely all positive.   We&#8217;ve fixed a TON of bugs that have been outstanding for a very long time.   I definitely encourage CXF users to update to 2.2.6.</p>
<p>While the push to reduce the bug count in CXF has been a very welcome and important step for CXF, it has detracted from the development of the new features and stuff for 2.3.   2.3 is definitely many months behind where I would have liked it to be.   Now that the count is down to something reasonable and manageable,  I&#8217;m really hoping to re-concentrate on getting 2.3 ready to ship.   No promises though.   <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=182</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apache CXF: 2009 in Numbers</title>
		<link>http://www.dankulp.com/blog/?p=173</link>
		<comments>http://www.dankulp.com/blog/?p=173#comments</comments>
		<pubDate>Mon, 04 Jan 2010 15:53:01 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[FUSE]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=173</guid>
		<description><![CDATA[Claus Ibsen wrote up a nice blog post about how Apache Camel did this year using some easily obtained metrics.    I thought it was kind of interesting so I wanted to do the same for CXF. 
Number of posts on the users list: 6614
Number of posts on the dev list: 1661
Number of [...]]]></description>
			<content:encoded><![CDATA[<p>Claus Ibsen <a href="http://davsclaus.blogspot.com/2010/01/apache-camel-2009-in-numbers.html">wrote up a nice blog post</a> about how <a href="http://camel.apache.org">Apache Camel</a> did this year using some easily obtained metrics.    I thought it was kind of interesting so I wanted to do the same for <a href="http://cxf.apache.org">CXF</a>. </p>
<p>Number of posts on the users list: <a href="http://apache.markmail.org/search/?q=apache%20cxf#query:apache%20cxf%20list%3Aorg.apache.cxf.users%20date%3A200901-200912%20+page:1+state:facets">6614</a></p>
<p>Number of posts on the dev list: <a href="http://apache.markmail.org/search/?q=apache%20cxf#query:apache%20cxf%20list%3Aorg.apache.cxf.dev%20date%3A200901-200912%20+page:1+state:facets">1661</a></p>
<p>Number of messages on commits list (svn commits and wiki changes and such): <a href="http://apache.markmail.org/search/?q=list:org.apache.cxf.commits+date:200901-200912+">3893</a></p>
<p>Number of JIRA issues raised in 2009: <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&#038;pid=12310511&#038;created:after=31/Dec/08&#038;created:before=1/Jan/10&#038;sorter/field=updated&#038;sorter/order=DESC">595</a></p>
<p>Number of JIRA issues resolved in 2009: <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&#038;&#038;pid=12310511&#038;status=5&#038;status=6&#038;resolution=1&#038;resolution=2&#038;resolution=3&#038;resolution=6&#038;resolution=4&#038;resolution=5&#038;resolution=7&#038;resolution=8&#038;customfield_12310221:after=31/Dec/08&#038;customfield_12310221:before=1/Jan/10&#038;sorter/field=updated&#038;sorter/order=DESC">763</a></p>
<p>Number of JIRA issues raised in 2009, but still unresolved: <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&#038;pid=12310511&#038;created:after=31/Dec/08&#038;created:before=1/Jan/10&#038;sorter/field=updated&#038;sorter/order=DESC&#038;status=1&#038;status=2&#038;status=3&#038;status=4">51</a>  (only <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&#038;&#038;type=1&#038;pid=12310511&#038;created:after=31/Dec/08&#038;created:before=1/Jan/10&#038;status=1&#038;status=3&#038;status=4&#038;sorter/field=updated&#038;sorter/order=DESC&#038;sorter/field=created&#038;sorter/order=DESC">19</a> are bugs, 3 are bugs in JAXB where we need a new release of JAXB and 5 were logged in the last 2 weeks while most devs were on vacation, so really 11 bugs unresolved).</p>
<p>The JIRA stats are kind of interesting.   Put in a graph:<br />
<div id="attachment_174" class="wp-caption alignleft" style="width: 610px"><a href="https://issues.apache.org/jira/secure/ConfigureReport.jspa?projectOrFilterId=project-12310511&#038;periodName=daily&#038;daysprevious=369&#038;cumulative=true&#038;versionLabels=major&#038;selectedProjectId=12310511&#038;reportKey=com.atlassian.jira.ext.charting:createdvsresolved-report&#038;Next=Next"><img src="http://www.dankulp.com/blog/wp-content/uploads/2010/01/cxf-issues-2009.png" alt="CXF issues created/resolved graph for 2009" title="cxf-issues-2009" width="600" height="375" class="size-full wp-image-174" /></a><p class="wp-caption-text">CXF issues created/resolved graph for 2009</p></div></p>
<p>You can kind of see that the last 4 months or so, the CXF community really tried to go through all the old JIRA entries and resolve as many as possible.   The result should be a much more stable and bug free product. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=173</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache CXF has another book!</title>
		<link>http://www.dankulp.com/blog/?p=170</link>
		<comments>http://www.dankulp.com/blog/?p=170#comments</comments>
		<pubDate>Thu, 31 Dec 2009 19:51:59 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[FUSE]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=170</guid>
		<description><![CDATA[Just a week or so after the first book for Apache CXF was released, a second book now appears.   Developing Web Services with Apache CXF and Axis2 (3rd Edition) is an update to Kent Ka Iok Tong&#8217;s book about Axis2, but it now covers CXF as well.
Being on holidays, I haven&#8217;t had time [...]]]></description>
			<content:encoded><![CDATA[<p>Just a week or so after the<a href="http://www.dankulp.com/blog/?p=166"> first book</a> for <a href="http://cxf.apache.org">Apache CXF</a> was released, a second book now appears.   <a href="http://www.agileskills2.org/DWSAA/index.html">Developing Web Services with Apache CXF and Axis2 (3rd Edition)</a> is an update to Kent Ka Iok Tong&#8217;s book about Axis2, but it now covers CXF as well.</p>
<p>Being on holidays, I haven&#8217;t had time to look much at it (I&#8217;m only 1/4 of the way through the first book), but a quick glance through provided me a nice surprise.   I kind of expected that it would be geared more toward Axis2 (since it&#8217;s an 3rd edition of the Axis2 book) with small &#8220;Now here&#8217;s how you do the same thing with CXF&#8221; type sections.   However, it looks to be completely the oppossite.   The initial examples and screen shots and stuff in the text is using CXF and JAX-WS stuff and then a small &#8220;Now here&#8217;s how you do the same thing with Axis2 section.&#8221;   </p>
<p>Anyway, after the holidays, I hope to review both books in more detail.   </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=170</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apache CXF now has a book!</title>
		<link>http://www.dankulp.com/blog/?p=166</link>
		<comments>http://www.dankulp.com/blog/?p=166#comments</comments>
		<pubDate>Tue, 22 Dec 2009 15:12:22 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[FUSE]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=166</guid>
		<description><![CDATA[Someone once told me that you&#8217;ll know your product is a success when someone writes a &#8220;For Dummies&#8221; book about it.   Apache CXF took a step in that direction yesterday with the release of Apache CXF Web Service Development.   As far as I know, this is the first published book about [...]]]></description>
			<content:encoded><![CDATA[<p>Someone once told me that you&#8217;ll know your product is a success when someone writes a &#8220;For Dummies&#8221; book about it.   <a href="http://cxf.apache.org">Apache CXF</a> took a step in that direction yesterday with the release of <a href="http://www.packtpub.com/apache-cxf-web-service-development/book">Apache CXF Web Service Development</a>.   As far as I know, this is the first published book about CXF.</p>
<p>What&#8217;s particularly exciting about this is that it&#8217;s not written by any committer on the CXF project.  The authors and reviewers are completely independent.   They decided that CXF needed a book and set out to write one.   That&#8217;s quite interesting because on most of the OpenSource projects I&#8217;ve seen, the first sets of books are usually written by people actively involved in the project.   The fact that this was written by actual users, not the developers working on the project, gives my some hope that it&#8217;s targeted correctly.   One of the problems I&#8217;ve seen repeatedly with books written by the same developers that are writing the project code is the book gets too technical and makes assumptions about the readers that aren&#8217;t correct.   The &#8220;I know this, so eveyone else must know it too&#8221; fallacy. </p>
<p>Anyway, I haven&#8217;t read it yet (I just bought it and am only up to page 17 or 336) so I cannot vouch for how good/bad it is yet.    However, I&#8217;m very excited as this does fill a gap in the CXF offerings.    I just wanted everyone to know it&#8217;s there.   <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=166</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How buggy is your SOAP stack</title>
		<link>http://www.dankulp.com/blog/?p=137</link>
		<comments>http://www.dankulp.com/blog/?p=137#comments</comments>
		<pubDate>Fri, 06 Nov 2009 00:39:57 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[FUSE]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=137</guid>
		<description><![CDATA[One of the fun things about attending conferences such as ApacheCon is that you get to meet with users of the software I work on and hear &#8220;real world&#8221; stories of the issues they&#8217;ve run into.   I talked to one user yesterday that presented a common story that I&#8217;ve heard over and over [...]]]></description>
			<content:encoded><![CDATA[<p>One of the fun things about attending conferences such as ApacheCon is that you get to meet with users of the software I work on and hear &#8220;real world&#8221; stories of the issues they&#8217;ve run into.   I talked to one user yesterday that presented a common story that I&#8217;ve heard over and over again from many users, but it really got me thinking.</p>
<p>Basically, a short while ago, he was tasked with upgrading some older web services to get them off of Apache Axis.  They started porting to Axis2 assuming that would be the easiest effort.   After hitting bugs and spending a lot of time trying to work around issues and such, they punted on the effort and switched to <a href="http://cxf.apache.org">CXF</a>.   For them, CXF &#8220;just worked&#8221;.   </p>
<p>I hear the same basic thing from many users.   CXF just &#8220;works&#8221;.  It does what it says it will do relatively easily (relative term, nothing in WS-* is designed to be easy)  and bugs, when found, are usually fixed quickly, but most users I&#8217;ve talked to having found any real bugs to log.   It just &#8220;works&#8221;.  </p>
<p>For some reason, the person I talked to yesterday got me thinking about the various Open Source SOAP stacks and how &#8220;buggy&#8221; they are and kind of wondered if that could be quantified.  One of the nice things about the open source stacks is the issue trackers are also &#8220;open&#8221;.  Thus, it shouldn&#8217;t be too hard.  Famous last words.   <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>There are two main issues with trying to compare bug counts:</p>
<ol>
<li>Features:  Each of the three major open source stacks (Axis2, CXF, Metro), while they all implement the same basic specs, they also have unique features.   For example, CXF has bugs logged for the CORBA binding, JAX-RS, Distributed OSGi, etc&#8230; that the others wouldn&#8217;t have.   Axis2 has bugs for the UDP transport which is not available in the others.  Etc&#8230;.</li>
<li>Issue tracker layout: Each of the projects handle their issue tracker differently.   CXF has a single project in JIRA and all bugs for everything are logged there.   Metro has their issues split into two trackers, one for the base JAX-WS implementation and another for the WS-* stuff.   Axis2 splits things across a bunch of JIRAs: a core area, one for Rampart, one for Sandesha, one for Kandula, transports, etc&#8230;.</li>
</ol>
<p>With that in mind, lets look at some numbers.   To make things simple, I looked at the full &#8220;bug&#8221; count from CXF including all the features including JAX-RS, CORBA, DOSGi, etc&#8230;.   Thus, the CXF counts are relatively inflated compared to the others.  I didn&#8217;t look at feature requests, wishes, tasks, etc&#8230;   Just bugs.   For Metro, I looked at the &#8220;defects&#8221; only for the JAXWS RI and WSIT trackers.   For Axis2, to make things simple, I only looked at the &#8220;bugs&#8221; in the core &#8220;Axis2&#8243; jira and didn&#8217;t bother looking at the others.   I didn&#8217;t need to as you&#8217;ll see. </p>
<p>As of this morning, Nov 5, 2009, the counts are:</p>
<table class="bodytable">
<tr>
<td>CXF</td>
<td>78</td>
</tr>
<tr>
<td>Metro</td>
<td>173 (63 core, 110 WSIT)</td>
</tr>
<tr>
<td>Axis2</td>
<td>514</td>
</tr>
</table>
<p>I think those numbers paint a pretty good picture of the state of stacks.  However, it&#8217;s not the whole picture.  Another useful stat is the number of &#8220;critical&#8221; or &#8220;blocker&#8221; bugs.  (For Metro, P1 or P2 level)</p>
<table class="bodytable">
<tr>
<th></th>
<th>Blocker</th>
<th>Critical</th>
</tr>
<tr>
<td>CXF</td>
<td>0</td>
<td>2</td>
</tr>
<tr>
<td>Metro</td>
<td>0</td>
<td>26</td>
</tr>
<tr>
<td>Axis2</td>
<td>16</td>
<td>90</td>
</tr>
</table>
<p>Another interesting stat is how many bugs logged in the last year or 6 months remain open.   This shows how well the community responds to users bug reports.</p>
<table class="bodytable">
<tr>
<th></th>
<th>Last Year</th>
<th>6 Months</th>
</tr>
<tr>
<td>CXF</td>
<td>50/441 (11%)</td>
<td>36/237 (15%)</td>
</tr>
<tr>
<td>Metro</td>
<td>59/335 (18%)</td>
<td>44/222 (20%)</td>
</tr>
<tr>
<td>Axis2</td>
<td>189/332 (57%)</td>
<td>96/168 (57%)</td>
</tr>
</table>
<p>Anyway, that last table is quite interesting to me.   Any non-trivial software (more than &#8220;Hello World&#8221;) has bugs.   (as anyone that implements WS-* will tell you, WS-* is REALLY non-trivial)  When selecting an open source project for use in your enterprise, the questions you need to ask are:</p>
<ol>
<li>How likely am I to hit a bug?</li>
<li>If I do hit a bug, how serious is it likely to be?</li>
<li>More importantly, if I hit a bug, how likely will a fix be made available in a timely manner?</li>
</ol>
<p>That last question is critical.   As I mentioned, all software has bugs.   Getting those bugs fixed when encountered is important.   </p>
<p>In an enterprise, you also need to ask if there is a good company behind the project from whom you can get a support agreement, training, consulting, etc&#8230;    In that case, maybe the above questions are irrelevant.</p>
<p>Of course, being open source, you also should ask: Can I fix it myself and submit the patch back?   The communities love it when you do that.   <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Update: </strong> (12 hours later)  I just wanted to point out that I DO agree with most of the comments posted below.  Raw numbers are kind of pointless and are very hard to do comparisons.   They can be interpreted many ways.   For example, if you look in the last table, CXF had 441 bugs logged in the last year whereas Axis2 only had 332.  Thus, an argument could easily be made that CXF is buggier than the others.  Even if I pull out the JAX-RS and DOSGi bugs, it only drops to 366.</p>
<p>However, the one thing that I think IS comparable are the percentages on that last chart.  The CXF team is resolving over 85% of the bugs that are logged.   The Metro folks are resolving over 80%.   Those are pretty respectable numbers.    Again, that third question is important.   If you do hit a bug, how likely is it to be fixed?   40%? 80%?</p>
<p>Of course, with Open Source, the answer can easily be 100% chance:  fix it yourself and submit a patch.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=137</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Really Rude People</title>
		<link>http://www.dankulp.com/blog/?p=133</link>
		<comments>http://www.dankulp.com/blog/?p=133#comments</comments>
		<pubDate>Sun, 25 Oct 2009 02:58:41 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Family]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=133</guid>
		<description><![CDATA[We had an &#8220;interesting&#8221; experience at dinner tonight.   We (myself, my wife, and 2 kids) went out to dinner at John Harvard&#8217;s in Framingham.   We&#8217;ve been there as a family many times before and always enjoy it.   While it is a Brew House which you wouldn&#8217;t think is the [...]]]></description>
			<content:encoded><![CDATA[<p>We had an &#8220;interesting&#8221; experience at dinner tonight.   We (myself, my wife, and 2 kids) went out to dinner at <a href="http://www.johnharvards.com/index.shtml">John Harvard&#8217;s</a> in Framingham.   We&#8217;ve been there as a family many times before and always enjoy it.   While it is a Brew House which you wouldn&#8217;t think is the most &#8220;family friendly&#8221; environment, we almost always are seated near other families with small kids and plenty of kids are always there.  Today wasn&#8217;t an exception as we were seated next to a couple with a 17 month old girl with them (just a month older than our youngest).  </p>
<p>Within few minutes of sitting down, the couple on the other side of us asked to get their food &#8220;To Go&#8221; because they had to &#8220;get away from all the kids&#8221; (last part said pretty loudly).   That in itself was pretty rude.   I can understand asking to be reseated or quietly asking to change to &#8220;To Go&#8221;, but to emphasize the why was a bit uncomfortable.   </p>
<p>The worse part about it was our kids were REALLY on their best behavior tonight.  Nathan was busy rolling a crayon back and forth with me and Ryan was coloring the ship on the kids menu and chatting with mommy.  Neither was causing and scene.  They were both quiet.  Both sitting nicely.   Etc&#8230;</p>
<p>Anyway, we just kind of let that slide, but when their food came and they paid their bill, things got even worse.   On the way out, the man flipped us the bird.   We were really shocked by that.   Neither of us could believe he did that.   Believe it or not, it gets even worse.   The woman, who had already made it all the way to the door must have looked back and saw the look of shock in our face.   She then walks all the way back to the table.   I was expecting her to apologize for her husband, but instead, she said  &#8220;Next time, you should take your kids to Friendy&#8217;s&#8221;.    I wish I would have had a snappy comeback, but I was in complete shock.   Couldn&#8217;t believe anyone was that rude.  The couple next to us (with the child) couldn&#8217;t believe it either.   </p>
<p>To their credit, the staff at John Harvard&#8217;s was excellent.   Apparently, the manager was on the way in right as this all happened and saw it all.   He came straight over to our table to apologize (not his fault) and the other wait staff also came by specifically to say our kids were behaving quite well and to not take it personally.  </p>
<p>Anyway, just had to vent.   What a bizarre experience.  I still like John Harvard&#8217;s a lot and highly recommend it as a place to eat (and drink very good beer <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .   I just hope those people stay away.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=133</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>3 Years of Apache CXF</title>
		<link>http://www.dankulp.com/blog/?p=127</link>
		<comments>http://www.dankulp.com/blog/?p=127#comments</comments>
		<pubDate>Wed, 26 Aug 2009 00:49:25 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=127</guid>
		<description><![CDATA[Today marks exactly 3 years since my first commit at Apache toward Apache CXF:
commit email
A lot has definitely happened in 3 years.   We&#8217;ve gone from two very separate codebases (Celtix and XFire) and have produced one of the leading  Web Services frameworks.  We were the first Apache Licensed JAX-WS compliant implementation. [...]]]></description>
			<content:encoded><![CDATA[<p>Today marks exactly 3 years since my first commit at Apache toward Apache CXF:</p>
<p><a href="http://mail-archives.apache.org/mod_mbox/cxf-commits/200608.mbox/&lt;20060825131821.44C591A981A@eris.apache.org&gt;">commit email</a></p>
<p>A lot has definitely happened in 3 years.   We&#8217;ve gone from two very separate codebases (Celtix and XFire) and have produced one of the leading  Web Services frameworks.  We were the first Apache Licensed JAX-WS compliant implementation.   We were the first Apache Licensed JAX-RS compliant implementation.   CXF is embedded in MANY applications including JBoss, Geronimo, Jonas, Camel, ServiceMix, and more&#8230;     </p>
<p>Anyway, it&#8217;s been an exciting 3 years.  Looking for many more.  <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=127</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managers vs Leaders</title>
		<link>http://www.dankulp.com/blog/?p=122</link>
		<comments>http://www.dankulp.com/blog/?p=122#comments</comments>
		<pubDate>Tue, 11 Aug 2009 14:12:26 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[FUSE]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=122</guid>
		<description><![CDATA[On a recent thread on the general@incubator list at Apache, Niclas Hedhman pointed out a very interesting list of differences between Managers and Leaders from Wikipedia.   I really like this list:

Management involves power by position.
Leadership involves power by influence.

and specifically these distinctions:

Managers administer; leaders innovate.
Managers ask how and when; leaders ask what and [...]]]></description>
			<content:encoded><![CDATA[<p>On a recent thread on the general@incubator list at Apache, Niclas Hedhman pointed out a very interesting list of differences between Managers and Leaders from <a href="http://en.wikipedia.org/wiki/Leadership">Wikipedia</a>.   I really like this list:</p>
<ul>
<li>Management involves power by position.</li>
<li>Leadership involves power by influence.</li>
</ul>
<p>and specifically these distinctions:</p>
<ul>
<li>Managers administer; leaders innovate.</li>
<li>Managers ask how and when; leaders ask what and why.</li>
<li>Managers focus on systems; leaders focus on people.</li>
<li>Managers do things right; leaders do the right things.</li>
<li>Managers maintain; leaders develop.</li>
<li>Managers rely on control; leaders inspire trust.</li>
<li>Managers have short-term perspective; leaders have long-term perspective.</li>
<li>Managers accept the status-quo; leaders challenge the status-quo.</li>
<li>Managers have an eye on the bottom line; leaders have an eye on the horizon.</li>
<li>Managers imitate; leaders originate.</li>
<li>Managers emulate the classic good soldier; leaders are their own person.</li>
<li>Managers copy; leaders show originality.</li>
</ul>
<p>I REALLY like that list.  It definitely sums up the causes of many of my &#8220;problems&#8221; when dealing with &#8220;managers&#8221; in the past (and present).   I definitely tend to fall into the &#8220;leader&#8221; roll and generally have trouble trying to see the other side of the situations.   I readily admit that.   But I think it&#8217;s also very important to have both types of people represented.  One or the other and things don&#8217;t happen, or at least not well.   It takes a good balance.</p>
<p>So, which do YOU strive to be?   A &#8220;Leader&#8221; or a &#8220;Manager&#8221;?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=122</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>git-svn: a better svn client</title>
		<link>http://www.dankulp.com/blog/?p=117</link>
		<comments>http://www.dankulp.com/blog/?p=117#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:21:12 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[FUSE]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=117</guid>
		<description><![CDATA[A month or so ago, I decided I really should spend some time learning Git to see what all the fuss was about.   Unfortunately, nearly everything I work on is in Subversion repositories.   Thus, I really don&#8217;t have an opportunity to really see everything that Git has to offer.   [...]]]></description>
			<content:encoded><![CDATA[<p>A month or so ago, I decided I really should spend some time learning Git to see what all the fuss was about.   Unfortunately, nearly everything I work on is in Subversion repositories.   Thus, I really don&#8217;t have an opportunity to really see everything that Git has to offer.    </p>
<p>However, I did decide to give the git-svn integration a whirl to start getting a feel for git.   Basically, learn some of the basic commands, experiment with the tools, etc&#8230;.   I must admit, I&#8217;ve been pleasantly surprised and I now feel that git-svn is nearly the perfect svn client.   I don&#8217;t think I&#8217;ll be going back to normal svn clients for day-to-day work anytime soon.   Why do I like it?</p>
<ul>
<li>It&#8217;s fast &#8211; a &#8220;git pull&#8221; is much faster than a &#8220;svn update&#8221;.   What&#8217;s more, &#8220;git pull&#8221; updates all branches, not just the one I&#8217;m working on.   Other options like &#8220;git blame&#8221; and &#8220;git log&#8221; and such are nearly immediate where with svn, they take forever.</li>
<li>Disk space &#8211; yes, disk space is cheap these days, but it does matter.   A fresh &#8220;svn checkout&#8221; of <a href="http://cxf.apache.org">CXF</a> trunk takes about 225MB of space.   A fresh &#8220;git clone&#8221; of CXF takes about 154Mb of space.   The git version also has the advantage of having all the branches and tags in that 154MB of space.   With svn, I need an additional 225MB for each tag/branch.</li>
<li>Works better with tools &#8211; thing like &#8220;grep -r&#8221; and &#8220;find . -name&#8221; and such work much better with git as there is only the top level &#8220;.git&#8221; dir, not a &#8220;.svn&#8221; all over the place.  I had to create a bunch of silly wrappers to various things to make using those tools in svn easier.  </li>
<li>All tags/branches are available &#8211; if someone posts a stack trace to a JIRA, it&#8217;s trivial to flip over to whatever tag they are reporting it against to see what lines the line numbers line up with.   Takes just a couple seconds.   No &#8220;svn checkout&#8221; of various tags (or keeping 225MB of space per tag around) or digging through fisheye or similar.</li>
<li>Saves me a TON of time by allowing me to test multiple &#8220;commits&#8221; together.   </li>
</ul>
<p>That last entry is really key.  If you read my <a href="http://www.dankulp.com/blog/?p=113">last blog</a> post, you know I&#8217;m a firm believer in &#8220;DON&#8217;T BREAK THE BUILD&#8221;.   The best way to achieve that is to run the full set of tests before committing any changes.  However, the full CXF test suite takes a little over 1/2 hour to run on my machine.  Thus, it&#8217;s not something you WANT to run on all the little changes.  It kind of becomes a limiting factor with how many commits/changes you can do in a day if you always run it.</p>
<p>That&#8217;s where git-svn comes in.   It&#8217;s brilliant.   With svn, if you make a small change and then &#8220;svn commit&#8221;, it&#8217;s immediately sent to the central repository for all (and the CI builds) to grab.   Thus, you BETTER have run all the tests.   With &#8220;git commit -a&#8221;, you just commit the changes locally on your branch.   Thus, I can make some changes, run just the unit tests and maybe a couple of related sys tests, commit the changes, then move to the next JIRA/bud, make some changes, run a few tests, commit, etc&#8230;    Basically, collect the changes as individual commits in my local git branch.   At the end of the day, run a full &#8220;mvn install&#8221; to make sure ALL the tests pass.   If so, run &#8220;git svn dcommit&#8221; to push the changes back into SVN.   The way &#8220;git svn dcommit&#8221; works is that each commit to the branch goes to SVN as an individual commit.   Thus, each JIRA or other change that was worked on and committed locally appears in SVN as an individual commit.  This is good as you may need to merge (or backout) just those individual changes.   With SVN, I always ended up committing several things together as a single commit which made things harder to track/merge to the fixes branches and such.   Separate commits also help boost your commit count.   <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>There are some downsides to using git-svn:</p>
<ul>
<li>The egit eclipse plugin sucks, even compared to the subversion eclipse plugins.   Call it a &#8220;work in progress&#8221;.</li>
<li>Merge tracking &#8211; for CXF, we&#8217;ve decided to use the svnmerge.py script to track merges between the fixes branches.  This doesn&#8217;t work with git so I still need the fixes branches checked out to do the merging.   Ideally, everything would be &#8220;pure git&#8221; and we could all use the git merging, but that day isn&#8217;t going to come any time soon.  <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </li>
<li>No integration with maven release plugin &#8211; I have no idea how the release plugin would deal with git-svn.   Releases still need a &#8220;pure&#8221; svn checkout.
</ul>
<p>Anyway, I&#8217;ve started pretty much using git-svn for most of my work.   I&#8217;m definitely happy with it.   I&#8217;d be happier if Apache would allow us to go 100% git and not have the svn repo, but for now, this is certainly better than svn.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=117</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t break the build!</title>
		<link>http://www.dankulp.com/blog/?p=113</link>
		<comments>http://www.dankulp.com/blog/?p=113#comments</comments>
		<pubDate>Tue, 23 Jun 2009 20:35:01 +0000</pubDate>
		<dc:creator>Daniel Kulp</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[FUSE]]></category>

		<guid isPermaLink="false">http://www.dankulp.com/blog/?p=113</guid>
		<description><![CDATA[Throughout my career as a developer, one &#8220;mantra&#8221; that has been deeply ingrained into my brain is &#8220;commit away, but DON&#8217;T BREAK THE BUILD!&#8221;.   Breaking the build can include things like breaking checkstyle/pmd checks, committing code that doesn&#8217;t even compile, having unit/system test failures, sticking dependencies in the poms that don&#8217;t exist in [...]]]></description>
			<content:encoded><![CDATA[<p>Throughout my career as a developer, one &#8220;mantra&#8221; that has been deeply ingrained into my brain is &#8220;commit away, but DON&#8217;T BREAK THE BUILD!&#8221;.   Breaking the build can include things like breaking checkstyle/pmd checks, committing code that doesn&#8217;t even compile, having unit/system test failures, sticking dependencies in the poms that don&#8217;t exist in declared repos (example: depending on a SNAPSHOT you built locally) , etc&#8230;    Bunches of things.   </p>
<p>Breaking a build on something you&#8217;re the only one working on is usually not a huge issue.  Just commit a fix at some point and no-one will ever know.   However, when working with a large team or working on OpenSource where people all over the world could be building it, break a build can be a serious issue.  If the build is broken, you can easily have MANY engineers wasting a lot of time trying to debug something they shouldn&#8217;t be.   That can be quite &#8220;expensive&#8221;.    </p>
<p>For example, if I run the tests and see a test failure, I assume one of my changes is the cause of that.  Thus, I start debugging and try and figure out what I did.   I shouldn&#8217;t be trying to debug into tests that aren&#8217;t caused by my changes.   The code base should be stable and just work.   </p>
<p>Unfortunately and apparently, there are a lot of people that don&#8217;t believe the same as I do.  The <a href="http://wiki.hudson-ci.org/display/HUDSON/The+Continuous+Integration+Game+plugin">Hudson Continuous Integration Game plugin</a> provides an interesting way to see who believes what.   Basically, for each build done in Hudson, the plugin assigns a score.   If the build succeeds cleanly, all developers that contributed changes get a point.   If the build fails spectacularly (fails to even compile), it&#8217;s -10 points.   A failing unit test is a minus point.  Fixing a failing test is a plus point.  etc&#8230;   Thus, over time, people that tend to break things end up with less points (even negative) and those that tend to fix things and/or commit clean code end up positive.  Obviously, it&#8217;s not perfect.   People that commit a LOT can earn higher scores as they can get one point per commit.   I commit a couple times a day.   Thus, I have potential to get more points than someone who only commits a couple times a week.   </p>
<p>Looking at the <a href="http://hudson.zones.apache.org/hudson/cigame/">Apache Hudson Instance Leader Board</a>, you can see quite a range of scores.    IMO, there are entirely too many people with negative scores.   Something for those people to start working on.  Get to work!   <img src='http://www.dankulp.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dankulp.com/blog/?feed=rss2&amp;p=113</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
