{"id":68,"date":"2007-03-16T09:04:18","date_gmt":"2007-03-16T17:04:18","guid":{"rendered":"http:\/\/jaredrobinson.com\/blog\/?p=68"},"modified":"2007-03-16T09:04:18","modified_gmt":"2007-03-16T17:04:18","slug":"mountain-west-ruby-conference-ruport","status":"publish","type":"post","link":"https:\/\/jaredrobinson.com\/blog\/mountain-west-ruby-conference-ruport\/","title":{"rendered":"mtnwestruby: Ruport"},"content":{"rendered":"<p>\nMountain West Ruby Conference by Gregory Brown<br \/>\n16 March 2007<br \/>\nPragmatic Community Driven Development in Ruby. Or &#8220;Rolling the dice with Ruport&#8221;. &#8220;Reporting Sucks&#8221;.\n<\/p>\n<p>\nGregory spent several minutes at the beginning of the presentation trying to get his Nvidia X display settings worked out for both the projector and his screen. None of the other people using Linux desktops had the same problems, and neither did the people using Windows or Mac OS X.\n<\/p>\n<p>\nRuport couldn&#8217;t have happened without a community to support it. Community = people + problems. Why is community important? Community helps root out bad ideas, and we all have bad ideas. With a good community, you can discover bad ideas sooner, and replace them with better ideas (hopefully).\n<\/p>\n<p>\nHow do we leverage community? One aspect is to pick a license that encourages people to get involved.\n<\/p>\n<p>\nWhat license do we choose? Licenses aren&#8217;t as easy to &#8220;refactor&#8221; as code. Choose a license that is &#8220;right&#8221; for your project. Don&#8217;t write your own. In order to be taken seriously at a community and at a corporate level, pick one of the already approved OSS licenses. Picking a license is a compromise.\n<\/p>\n<p>\nBSD\/MIT favors individuals.<br \/>\nGPL favors communities.\n<\/p>\n<p>\nReporting is a big domain. Sometimes, it&#8217;s necessary to integrate with software with less than ideal licensing terms. The Ruport community chose the Ruby License.\n<\/p>\n<p>\nCommunities are idea warehouses.\n<\/p>\n<p>\nYou can only really work passionately on your problems. Find people who have the same problems. Learn to say &#8220;no&#8221;. Sometimes, less is more &#8211; you&#8217;ve got so many ideas floating around and such large groups &#8211; sometimes you need smaller groups and a focused, trimmed down set of ideas so that you can define software and implement it. It&#8217;s easier to read tens of emails per week than thousands.\n<\/p>\n<p>\nDiscussion led to code, which led to bug reports.\n<\/p>\n<p>\nMailing lists are not a bug tracker. Gforge is, but it does too much. They decided to use SVN + Trac for Ruport. Allows a casual user to subscribe to what&#8217;s happening and to contribute. It&#8217;s amazing how much good tools can affect a community and allow contributions. But what about RubyForge? Virtualy all interesting Ruby software is on RubyForge, which gives your software exposure. They used svk and cron to mirror their repository over to RubyForge.\n<\/p>\n<p>\nFriction affects contribution. Explain how people can contribute bug reports, patches, etc.\n<\/p>\n<p>\nEvery patch is valuable. Not every patch is suitable, but the relationships you can establish are important. Patches  (suitable or not) give you an idea of what people are trying to get out of your software. Still want relevant patches. What is relevant? It took them 15 months to figure it out &#8211; way to long. They came up with a roadmap and a scope definition. They didn&#8217;t just scope features, but the design as well.\n<\/p>\n<p>\nWe have to be careful not to accept code\/features that are only for ourselves &#8211; that will never be used by anyone else. They moved some things out of the core into plugins.\n<\/p>\n<p>\nUnique project identity is good. Half-way implemented features are bad for users.\n<\/p>\n<p>\nRecommends the book &#8220;Producing OSS Software&#8221; by Karl Fogel, which is available for free online.\n<\/p>\n<p>\nRuport 1.0 will be released on May 15, 2007.\n<\/p>\n<p>\nSometimes, developers have to &#8220;hide&#8221; from the large community surrounding their project, simply because they don&#8217;t have time to respond to all questions and ideas. They have to make time for families, work, and for development. It&#8217;s good to get smart users involved to help answer questions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mountain West Ruby Conference by Gregory Brown 16 March 2007 Pragmatic Community Driven Development in Ruby. Or &#8220;Rolling the dice with Ruport&#8221;. &#8220;Reporting Sucks&#8221;. Gregory spent several minutes at the beginning of the presentation trying to get his Nvidia X display settings worked out for both the projector and his screen. None of the other &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/jaredrobinson.com\/blog\/mountain-west-ruby-conference-ruport\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;mtnwestruby: Ruport&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,17],"tags":[],"class_list":["post-68","post","type-post","status-publish","format-standard","hentry","category-programming","category-tech"],"_links":{"self":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/68","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/comments?post=68"}],"version-history":[{"count":0,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/68\/revisions"}],"wp:attachment":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/media?parent=68"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/categories?post=68"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/tags?post=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}