{"id":3380,"date":"2013-08-01T10:10:37","date_gmt":"2013-08-01T00:10:37","guid":{"rendered":"https:\/\/www.flamingspork.com\/blog\/?p=3380"},"modified":"2013-08-01T10:10:37","modified_gmt":"2013-08-01T00:10:37","slug":"stewarts-dot-twenty-rule","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2013\/08\/01\/stewarts-dot-twenty-rule\/","title":{"rendered":"Stewart&#8217;s dot twenty rule"},"content":{"rendered":"<p>I realised I haven&#8217;t written on this for a while and I was asked about it again today.<\/p>\n<p><strong>Stewart&#8217;s dot twenty rule is that a piece of software is never really mature until a dot twenty release.<\/strong><\/p>\n<p>This was a variant of &#8220;never use a dot zero release&#8221; which has been around the industry for a long time (i.e. <strong>always <\/strong>wait for X.0.1).<\/p>\n<p>My first written observation on my variant on this rule was back in 2006:<\/p>\n<blockquote><p>This is a <strong>really stupid<\/strong> metric of software maturity. It is, however, disturbingly accurate.<\/p><\/blockquote>\n<p>It seems to continue to be both really stupid and disturbingly accurate. The first few point releases are still going to have rough edges and once you get to about 5 you likely have something that&#8217;s intensely usable for a good number of people, by dot 10 the more complex use cases should start to be okay and once you get to dot twenty, then you could say it&#8217;s mature.<\/p>\n<p>A topic for another time is how <strong>releasing often<\/strong> is one thing but <strong>maintaining a release<\/strong> is quite another.<\/p>\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.flamingspork.com\/blog\/2007\/08\/10\/thoughts-on-mysql-release-cycle\/\">thoughts on MySQL release cycle<\/a><\/li>\n<li><a href=\"https:\/\/www.flamingspork.com\/blog\/2006\/04\/19\/beat-on-state-of-the-dolphin-or-why-software-is-never-really-ready-until-a-20-release\/ \">Beat on \u00e2\u20ac\u0153state of the dolphin\u00e2\u20ac\u009d (or: Why Software is never really ready until a .20 release)<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I realised I haven&#8217;t written on this for a while and I was asked about it again today. Stewart&#8217;s dot twenty rule is that a piece of software is never really mature until a dot twenty release. This was a &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2013\/08\/01\/stewarts-dot-twenty-rule\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[76],"tags":[633,536,535,534],"class_list":["post-3380","post","type-post","status-publish","format-standard","hentry","category-code","tag-code","tag-dot-twenty","tag-law","tag-rule"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-Sw","jetpack-related-posts":[{"id":653,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/04\/19\/beat-on-state-of-the-dolphin-or-why-software-is-never-really-ready-until-a-20-release\/","url_meta":{"origin":3380,"position":0},"title":"Beat on &#8220;state of the dolphin&#8221; (or: Why Software is never really ready until a .20 release)","author":"Stewart Smith","date":"2006-04-19","format":false,"excerpt":"Beat Vontobel blogs about \"fu\u00c3\u00beark: The silence of futhark and the state of the dolphin\" which is basically about how he's found that the 5.0.20 release of MySQL is when the 5.0 release is really starting to shine. This confirms my theory (that I've had for quite a while now...\u2026","rel":"","context":"In &quot;GNOME&quot;","block_context":{"text":"GNOME","link":"https:\/\/www.flamingspork.com\/blog\/category\/gnome\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1807,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/02\/23\/on-presenting\/","url_meta":{"origin":3380,"position":1},"title":"on presenting","author":"Stewart Smith","date":"2010-02-23","format":false,"excerpt":"This is totally not confined to at-work presentations. The number of sessions I have sat through that could have taken 5 minutes instead of 20,30,40 or even 60 is amazing. Remember: I have not flown half way around the globe to see you read. I have come to hear a\u2026","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":879,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/08\/10\/thoughts-on-mysql-release-cycle\/","url_meta":{"origin":3380,"position":2},"title":"thoughts on MySQL release cycle","author":"Stewart Smith","date":"2007-08-10","format":false,"excerpt":"Thoughts on latest changes: don't think there's really much to it. I rather disagree with this slashdot headline (MySQL Closing Off Its Source) as I just don't think it's true. However, I have other thoughts (that are a lot more interesting to discuss): We should: Release major version every 6\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2265,"url":"https:\/\/www.flamingspork.com\/blog\/2011\/01\/21\/data-storage-miniconf-lightning-talk-cfp\/","url_meta":{"origin":3380,"position":3},"title":"Data Storage miniconf Lightning Talk CFP","author":"Stewart Smith","date":"2011-01-21","format":false,"excerpt":"Going to linux.conf.au ?\u00ef\u00bb\u00bf Use storage, have tales? Admin storage system, have stories? Hack on a storage system, have software to promote? We want your Lightning Talk! Databases, file systems, cloud storage, network storage, my-insane-mythtv-storage all welcome! Send me email if you'd like to\u00c2\u00a0present (stewart at flamingspork dot com). Tuesday,\u2026","rel":"","context":"In &quot;linux.conf.au&quot;","block_context":{"text":"linux.conf.au","link":"https:\/\/www.flamingspork.com\/blog\/category\/linuxconfau\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2168,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/10\/25\/storage-engine-api-state-graph\/","url_meta":{"origin":3380,"position":4},"title":"Storage Engine API state graph","author":"Stewart Smith","date":"2010-10-25","format":false,"excerpt":"Drizzle still has a number of quirks inherited from the MySQL Storage Engine API (e.g. BLOBs, row buffer, CREATE SELECT and lack of DDL transaction boundaries, key tuple format). One of the things we fixed a long time ago was to have proper methods for StorageEngines to be called for:\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"State transitions for a transaction. Transaction can be empty OR have one or more statements","src":"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2010\/10\/edge30-300x163.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2210,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/11\/29\/a-more-complete-look-at-storage-engine-api\/","url_meta":{"origin":3380,"position":5},"title":"A more complete look at Storage Engine API","author":"Stewart Smith","date":"2010-11-29","format":false,"excerpt":"Okay... So I've blogged many times before about the Storage Engine API in Drizzle. This API is somewhat inherited from MySQL. We have very much attempted to make it a much cleaner interface. Our goals in making changes include: make it much easier to write and maintain a storage engine,\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2010\/11\/engine-300x140.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=3380"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3380\/revisions"}],"predecessor-version":[{"id":3381,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3380\/revisions\/3381"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=3380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=3380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=3380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}