<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Segment7: A RubyGems + GitHub proposal</title>
    <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>The Blog</description>
    <item>
      <title>A RubyGems + GitHub proposal</title>
      <description>&lt;p&gt;I know many people have added &lt;a href="http://github.com/"&gt;GitHub&lt;/a&gt; to their RubyGems sources list and find it sub-optimal.  For example, &lt;a href="http://nokogiri.rubyforge.org/nokogiri/"&gt;Nokogiri&lt;/a&gt; is installed via &lt;kbd&gt;gem install nokogiri&lt;/kbd&gt; from RubyForge and &lt;kbd&gt;gem install tenderlove-nokogiri&lt;/kbd&gt; from GitHub.  Furthermore, it&amp;#8217;s possible to create a username/gem name combo on GitHub that overlaps a RubyForge name which could lead to pain and suffering for GitHub users.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve come up with a potential solution to this problem:&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;Add an alias name attribute to gem specifications that point to the &amp;#8220;RubyForge name&amp;#8221; for the gem
&lt;li&gt;Add an index to the gem server that maps alias names to &amp;#8220;RubyForge names&amp;#8221; 
&lt;li&gt;Only signed gems with an alias name will be included in this index
&lt;li&gt;When RubyGems looks for a gem to install it considers aliased gems as exact matches for a name, provided they satisfy the user&amp;#8217;s trust policy
&lt;/ul&gt;

	&lt;p&gt;Using this solution, a user could install a gem that has a dependency on nokogiri.  If nokogiri is signed on GitHub and there&amp;#8217;s a newer version on GitHub than on RubyForge, the GitHub version would be installed.&lt;/p&gt;


	&lt;p&gt;Here are some discussions points this solution presents:&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;GitHub currently builds gems for authors, so it is impossible for these gems to be signed.  GitHub would have to store the author&amp;#8217;s private key for signing.
&lt;li&gt;By default RubyGems sets no security policy, so it doesn&amp;#8217;t address the name overlap problem (this default could be changed)
&lt;li&gt;Furthermore, it would not prevent a trusted author from turning rogue
&lt;li&gt;Using a trust policy, a user can choose to pull gems from GitHub for specific authors by trusting the author&amp;#8217;s public key (e.g. only install signed gems, only install trusted gems)
&lt;li&gt;There&amp;#8217;s no infrastructure for easily trusting an author&amp;#8217;s key (beyond &lt;kbd&gt;gem cert&lt;/kbd&gt;)
&lt;li&gt;It doesn&amp;#8217;t give GitHub a central authority for gems, but one could be built through a &lt;a href="http://en.wikipedia.org/wiki/Web_of_trust"&gt;web of trust&lt;/a&gt;
&lt;/ul&gt;
</description>
      <pubDate>Wed, 04 Feb 2009 18:33:09 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:06e3d80c-d1c1-40c0-9799-0298a4398d1a</guid>
      <author>drbrain@segment7.net (Eric Hodel)</author>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal</link>
      <category>Rubygems</category>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Francis Hwang</title>
      <description>&lt;p&gt;More bikeshedding here: &lt;a href="http://fhwang.net/2009/02/18/URIs-in-RubyGems" rel="nofollow"&gt;http://fhwang.net/2009/02/18/URIs-in-RubyGems&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 18 Feb 2009 07:47:04 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:229e9b0b-8ffd-42bb-9a0f-5e635848faef</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1009</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Daniel Berger</title>
      <description>&lt;p&gt;Wilson: No, that doesn&amp;#8217;t follow. To me this is a process issue, not a technical issue.&lt;/p&gt;</description>
      <pubDate>Mon, 16 Feb 2009 07:25:45 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:824b4d79-e53b-4b69-af63-ba89ab8dc57d</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1008</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Francis Hwang</title>
      <description>&lt;p&gt;Ara, I&amp;#8217;m wondering if we need to start thinking about a future where you aren&amp;#8217;t pulling from just two or three sources, but hundreds. The idea of Ryan &amp;#38; Eric running their own gem servers off of gems.zenspider.com or gems.segment7.net seems fairly natural to me.&lt;/p&gt;


	&lt;p&gt;So in that scenario the idea of maintaining mappings so that RubyGems knows that&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;install zenspider.autotest&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;pulls a gem from&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;gems.zenspider.com&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;seems like an unnecessary wrapping of DNS to me.&lt;/p&gt;


	&lt;p&gt;Of course, I could just be living in some bikeshed fantasy-land right now. Maybe this feature wouldn&amp;#8217;t be that useful if it were built.&lt;/p&gt;</description>
      <pubDate>Fri, 13 Feb 2009 11:07:17 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:b5106255-f42e-4acb-b79c-4719e81b09ca</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1007</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by ara.t.howard</title>
      <description>&lt;p&gt;i really think the solution is for there to be one master and proxy installs.  that way we can solve the issue of trust exactly one time for all other sources to come &amp;#8211; not only github.  this even solves the domain issue since a proxy install could span domains.  basically inverting the problem makes it really easy:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;. rubyforge is the master&lt;/code&gt;&lt;/pre&gt;


	&lt;pre&gt;&lt;code&gt;. gems can (as they always have been able to) do whatever they please during install, so simple proxy out to other sources if needed via a super light weight helper&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;this also solves the &amp;#8216;what happens when something better than git comes along&amp;#8217; issue by keeping all stubs on rubyforge.  when &amp;#8216;got&amp;#8217; comes out and it&amp;#8217;s the latest hotness we can all just change our gemspecs to pull from &lt;a href="http://gothub.com/" rel="nofollow"&gt;http://gothub.com/&lt;/a&gt; &amp;#8211; in insulating the community from the tides of scm frothting and foaming&lt;/p&gt;</description>
      <pubDate>Fri, 13 Feb 2009 10:26:28 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:0e8f61a0-3313-4664-a61e-0e3cf85f9ba7</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1006</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Francis Hwang</title>
      <description>&lt;p&gt;In general I&amp;#8217;m not certain that RubyGems is the right place to set any significant trust policies. It&amp;#8217;s always been possible to write and distribute a gem that deletes your whole hard drive when you try to install it, right?&lt;/p&gt;


	&lt;p&gt;I think there&amp;#8217;s a difference between trust and security, and just insuring no name collisions on the other. I think the most elegant no-name-collisions idea would be to use URIs, though I&amp;#8217;m not going to fool myself about how easy that would be to implement. (Also, since I wouldn&amp;#8217;t have much time to contribute myself, my right to have a say in it is obviously limited.) But I think an elegant way to have cross-source dependencies is fairly important, and URIs could solve it in a clean way.&lt;/p&gt;


	&lt;p&gt;But maybe I&amp;#8217;m just trying to sneak urirequire back in the system somehow &amp;#8230;&lt;/p&gt;</description>
      <pubDate>Fri, 13 Feb 2009 10:12:27 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:020d87c5-9ae2-40d0-bb7f-741a7bea648b</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1005</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by ara.t.howard</title>
      <description>&lt;p&gt;one thought i&amp;#8217;m having &amp;#8211; what if only one source (rubyforge) were ever considered authoritative but an easy mechanism were built to install via proxy.  so if one installed&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;sudo gem install lockfile&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;that of course installs lockfile from rubyforge.  however, my gem itself, via extconf.rb or other proxy.rb or some sure, could do&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;github.install 'ahoward-lockfile'&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;the basic concept is that people trust my gem, if i make that gem install from github that should be okay.  this also provides a trusted mapping between rubyforge gems and github ones which could be searched.&lt;/p&gt;


	&lt;p&gt;with something like this we would simply not require people to use&amp;#8212;source as a rule.&lt;/p&gt;</description>
      <pubDate>Fri, 13 Feb 2009 10:07:42 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:17fe7df7-79a1-4548-b4e6-900aa9ba6a20</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1004</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Francis Hwang</title>
      <description>&lt;p&gt;Yeah, URIs are definitely less user-friendly than the current gem names. I guess the question is whether that&amp;#8217;s worth the tradeoff. I feel like everywhere I look I see people installing stuff from URIs now, so I feel like things are going that way.&lt;/p&gt;</description>
      <pubDate>Tue, 10 Feb 2009 17:39:48 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:08c57185-b5d2-4baf-bb32-63ab571ce4ab</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1003</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Christian Romney</title>
      <description>&lt;p&gt;Eric,&lt;/p&gt;


	&lt;p&gt;Thanks for helping me better understand the problem. I&amp;#8217;m wondering though, what if you and I both fork nokogiri 1.0.0 and each make some meaningful change to the gem that we each then release as version 1.0.1? Without some sort of name-spacing, how could Rubygems know I wanted one version or the other?&lt;/p&gt;</description>
      <pubDate>Mon, 09 Feb 2009 14:43:19 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:328d1f07-e694-411f-b82f-7acd279774be</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1002</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Eric Hodel</title>
      <description>&lt;p&gt;Daniel: Wilson: I believe the GitHub people saw two alternatives when creating gems for GitHub projects, either have a gem repository per user or prefix the gem name with the user&amp;#8217;s name.  They chose the latter since it was easier to implement.&lt;/p&gt;


	&lt;p&gt;People aren&amp;#8217;t giving gems different names, they&amp;#8217;re forced into it.  Aaron&amp;#8217;s nokogiri gem on GitHub is &amp;#8220;tenderlove-nokogiri&amp;#8221;.  If I forked nokogiri and made a gem, it would be &amp;#8220;drbrain-nokogiri&amp;#8221;.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Feb 2009 14:13:55 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:c24fc09c-25d9-46e4-8ef5-1b23681c43bb</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1001</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Eric Hodel</title>
      <description>&lt;p&gt;Francis: Yes, we develop in perforce then release via RubyForge.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m not sure that URIs are as user-friendly as names, though.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Feb 2009 14:07:42 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:ef737e4d-11ee-4259-bbbf-d6cf61486244</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-1000</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Eric Hodel</title>
      <description>&lt;p&gt;Christian: Trusting an author&amp;#8217;s key takes care of your preference without having to supply&amp;#8212;prefer all the time.&lt;/p&gt;


	&lt;p&gt;Also, resolving dependencies on nokogiri should happen without being prompted.  Usually I don&amp;#8217;t want to use nokogiri straight up, instead I&amp;#8217;ll install mechanize or something else that uses nokogiri and want to automatically get the latest bug-free version available.&lt;/p&gt;


	&lt;p&gt;Per-repository preferences don&amp;#8217;t help since RubyGems is version based, not repository based.  RubyGems always picks the latest version regardless of where it&amp;#8217;s coming from.  I&amp;#8217;m trying to solve a multiple name problem here, not a where-do-I-get-it-from problem.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Feb 2009 14:02:57 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:0ce5d364-5b76-4727-bb7c-4f1ecfb5763c</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-999</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Eric Hodel</title>
      <description>&lt;p&gt;Chad: Having RubyForge pull gems won&amp;#8217;t solve the problem since there could be several appropriate gems to pull.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Feb 2009 13:53:30 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:1bf9b60f-84e9-42da-97f6-bff23d68ca83</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-998</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Wilson Bilkovich</title>
      <description>&lt;p&gt;Daniel: People are doing it because there are now multiple versions of a particular project that you might want to install.  Decentralized development requires decentralized packaging.&lt;/p&gt;</description>
      <pubDate>Fri, 06 Feb 2009 11:22:52 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:0ba257d7-7ddd-44a2-a434-94b60bf4b492</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-997</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Daniel Berger</title>
      <description>&lt;p&gt;I guess I don&amp;#8217;t understand why people are creating gems with different names on github. I&amp;#8217;m not so sure we should be catering to this.&lt;/p&gt;


	&lt;p&gt;Francis, you can already do &amp;#8220;sudo gem install flog&amp;#8212;source &lt;a href="http://gems.zenspider.net" rel="nofollow"&gt;http://gems.zenspider.net&lt;/a&gt;&amp;#8221;.&lt;/p&gt;</description>
      <pubDate>Fri, 06 Feb 2009 05:52:51 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:e080be6e-1938-42d0-ac90-9185f6a4b562</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-996</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by sanbit</title>
      <description>&lt;p&gt;I Like Francis&amp;#8217;s idea, though not sure how it would be implemented.&lt;/p&gt;</description>
      <pubDate>Fri, 06 Feb 2009 05:00:53 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:7431103c-6ecc-44c7-af85-397db339d2a4</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-995</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Francis Hwang</title>
      <description>&lt;p&gt;Github might be the first, but it definitely won&amp;#8217;t be the last. We should be decentralizing RubyGems anyway. Even before Github, there were a number of people using SCM besides what Rubyforge had, and then just routing their gem releases through Rubyforge because that was the only way to get them out. You and Ryan do that, right?&lt;/p&gt;


	&lt;p&gt;I think URIs should be part of the solution somehow ideally. I&amp;#8217;d love to be able to type:&lt;/p&gt;


	&lt;p&gt;sudo gem install &lt;a href="http://gems.zenspider.net/flog" rel="nofollow"&gt;http://gems.zenspider.net/flog&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Though perhaps this seriously mess with the current mirrors system, I dunno.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Feb 2009 19:27:01 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:cf950345-ddf1-4527-a545-27e2353e021c</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-994</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Christian Romney</title>
      <description>&lt;p&gt;Sorry for the second post. It occured to me you might want to install from your non-preferred repository on a per-gem basis, so something along the lines of&lt;/p&gt;


	&lt;p&gt;gem install nokogiri&amp;#8212;prefer github&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m kind of shooting from the hip here. It&amp;#8217;s not real clear to me that&amp;#8212;prefer doesn&amp;#8217;t overlap with&amp;#8212;source substantially. I do like only having to specify a minimally unique string for the source, though.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Feb 2009 09:09:17 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:08d194fc-1a0b-4f20-a23b-7ede338709ea</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-993</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Christian Romney</title>
      <description>&lt;p&gt;Why give special status to Rubyforge at all? Why not either A) iterate through all sources looking for a name and if there&amp;#8217;s a clash prompt the user for the source repository to install from or B) allow the user to specify an order of preference (by default Rubyforge can be the preferred repository) and in the case of name clashes simply choose the version from the preferred repo and display something like &amp;#8220;Installing nokogiri 2.0.0 from gems.rubyforge.org&amp;#8221; Perhaps I&amp;#8217;m missing something?&lt;/p&gt;</description>
      <pubDate>Thu, 05 Feb 2009 09:05:02 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:6f23dbdd-daf2-4a3a-8d96-3254f785cfb8</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-992</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Konstantin Haase</title>
      <description>&lt;p&gt;That would be great. For ruby 1.9.1 I had to do a lot of git clone + gem build, simply for having gems with the same name. This would really solve issues like that and clean up my gem list a lot.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Feb 2009 01:32:31 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:a811570c-fd48-428e-80d2-fae47d36163b</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-990</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Chad Woolley</title>
      <description>&lt;p&gt;What are the downsides of having RubyGems &amp;#8220;pull&amp;#8221; all built gems from a designated github repo (or any other repo)?  Wouldn&amp;#8217;t this avoid the trust issue by relying on the project owner&amp;#8217;s rubyforge credentials?  I&amp;#8217;m just wondering why this wouldn&amp;#8217;t be easier.  If the only answer is that it would be hard to add to RubyForge, that can be good enough :)&lt;/p&gt;


	&lt;p&gt;Also, are you going to link this post on the rubygems dev list?&lt;/p&gt;


	&lt;p&gt;&amp;#8212;Chad&lt;/p&gt;</description>
      <pubDate>Thu, 05 Feb 2009 01:32:33 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:d30954c1-93b2-42fc-95c6-b88aa66e6735</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-991</link>
    </item>
    <item>
      <title>"A RubyGems + GitHub proposal" by Nick Quaranto</title>
      <description>&lt;p&gt;Awesome ideas, I&amp;#8217;m really liking the web of trust concept&amp;#8230;especially since there doesn&amp;#8217;t seem to be one and that may be a problem.&lt;/p&gt;


	&lt;p&gt;Something you may want to help out with is a project I&amp;#8217;ve started called &lt;a href="http://wiki.github.com/qrush/gemcutter" rel="nofollow"&gt;gemcutter&lt;/a&gt; that aims to fix the issues with RubyForge and gem hosting as a whole.&lt;/p&gt;


	&lt;p&gt;Perhaps these improvements could be realized through this project. Edit on the wiki or let me know if you think so! :)&lt;/p&gt;</description>
      <pubDate>Wed, 04 Feb 2009 21:33:47 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:e3e596ba-ffe4-450b-a0b1-88f843c79bf3</guid>
      <link>http://blog.segment7.net/articles/2009/02/04/a-rubygems-github-proposal#comment-989</link>
    </item>
  </channel>
</rss>
