<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Hacking someone&#8217;s gem with github and gemcutter</title>
	<atom:link href="http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/feed/" rel="self" type="application/rss+xml" />
	<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/</link>
	<description>Ruby makes Rails, Javascript makes Ajax, Dr Nic makes Magic</description>
	<lastBuildDate>Mon, 30 Apr 2012 17:04:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>By: Rafael Magana</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-217883</link>
		<dc:creator>Rafael Magana</dc:creator>
		<pubDate>Mon, 19 Jul 2010 22:22:50 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-217883</guid>
		<description>Hey, Dr. Nic, I don&#039;t know why but installing gems from github no longer works for all the gems, so I wrote this post &gt; http://raflabs.com/blogs/silence-is-foo/2010/07/19/installing-a-gem-fork-from-github-source/</description>
		<content:encoded><![CDATA[<p>Hey, Dr. Nic, I don&#8217;t know why but installing gems from github no longer works for all the gems, so I wrote this post &gt; <a href="http://raflabs.com/blogs/silence-is-foo/2010/07/19/installing-a-gem-fork-from-github-source/" rel="nofollow">http://raflabs.com/blogs/silence-is-foo/2010/07/19/installing-a-gem-fork-from-github-source/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian Armstrong</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-193788</link>
		<dc:creator>Brian Armstrong</dc:creator>
		<pubDate>Wed, 20 Jan 2010 01:17:36 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-193788</guid>
		<description>Thanks this helped!</description>
		<content:encoded><![CDATA[<p>Thanks this helped!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ennuyer.net &#187; Blog Archive &#187; Rails Reading - November 15, 2009</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-190769</link>
		<dc:creator>Ennuyer.net &#187; Blog Archive &#187; Rails Reading - November 15, 2009</dc:creator>
		<pubDate>Sun, 15 Nov 2009 14:00:19 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-190769</guid>
		<description>[...]  Dr Nic ’s Hacking someone’s gem with github and gemcutter  [...]</description>
		<content:encoded><![CDATA[<p>[...]  Dr Nic ’s Hacking someone’s gem with github and gemcutter  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: aalex</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-190552</link>
		<dc:creator>aalex</dc:creator>
		<pubDate>Tue, 10 Nov 2009 12:41:29 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-190552</guid>
		<description>Hi Dr Nic! this post is great -&gt; fixing someone&#039;s code in less than a minute! Super! I think this is so cool that I produced a demo of this for my RubyPulse screencast series...

-aaalex</description>
		<content:encoded><![CDATA[<p>Hi Dr Nic! this post is great -&gt; fixing someone&#8217;s code in less than a minute! Super! I think this is so cool that I produced a demo of this for my RubyPulse screencast series&#8230;</p>
<p>-aaalex</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Interesting Ruby Tidbits That Don&#8217;t Need Separate Posts #29</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-190542</link>
		<dc:creator>Interesting Ruby Tidbits That Don&#8217;t Need Separate Posts #29</dc:creator>
		<pubDate>Tue, 10 Nov 2009 03:09:19 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-190542</guid>
		<description>[...] wanted to quickly bust out the big guns and fix it quickly? Surely, we all have.. so he&#039;s written Hacking someone&#039;s gem with github and gemcutter to show us how to easily fork an existing gem, make our changes, and get it deployed on Gemcutter [...]</description>
		<content:encoded><![CDATA[<p>[...] wanted to quickly bust out the big guns and fix it quickly? Surely, we all have.. so he&#39;s written Hacking someone&#39;s gem with github and gemcutter to show us how to easily fork an existing gem, make our changes, and get it deployed on Gemcutter [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Patterson</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-190340</link>
		<dc:creator>Aaron Patterson</dc:creator>
		<pubDate>Thu, 05 Nov 2009 19:02:16 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-190340</guid>
		<description>@Richie 

WRT #2: Maybe the maintainer hasn&#039;t pulled in &quot;cool new feature x&quot; for some *very important* reason.  Or maybe the maintainer doesn&#039;t know that there is demand.  Is it the canonical author&#039;s responsibility to keep an eye on all of the forks?  Why not talk to the author about &quot;cool new feature x&quot; rather than publish a fork?  If your fork is experimental, why are you littering the canonical gem repository with it?

WRT #3: In that case you need to take over maintenance of the canonical gem or change your gem name from &quot;user-xx&quot; to something else and make it a real replacement with different top-level .rb files.  Then people can use the non-forked version without entering &quot;what gem did I require this from&quot; hell.</description>
		<content:encoded><![CDATA[<p>@Richie </p>
<p>WRT #2: Maybe the maintainer hasn&#8217;t pulled in &#8220;cool new feature x&#8221; for some *very important* reason.  Or maybe the maintainer doesn&#8217;t know that there is demand.  Is it the canonical author&#8217;s responsibility to keep an eye on all of the forks?  Why not talk to the author about &#8220;cool new feature x&#8221; rather than publish a fork?  If your fork is experimental, why are you littering the canonical gem repository with it?</p>
<p>WRT #3: In that case you need to take over maintenance of the canonical gem or change your gem name from &#8220;user-xx&#8221; to something else and make it a real replacement with different top-level .rb files.  Then people can use the non-forked version without entering &#8220;what gem did I require this from&#8221; hell.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richie Vos</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-190308</link>
		<dc:creator>Richie Vos</dc:creator>
		<pubDate>Thu, 05 Nov 2009 05:55:01 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-190308</guid>
		<description>Maybe I should move to the mailing-list, but for now:

@Luis great points. I&#039;m going to have to think about that some more. One thing that comes to mind though is that&#039;s not a problem unique to namespaced gems, the same problem can occur with gem A depending on gem C version 1.0 and gem B depending on gem C version 1.5. I do readily admit that upgrading from gem A 1.0 to gem A 1.5 is probably much more likely to work than from moneypools-A 1.0 to gem A-1.0.

The other thing is a library&#039;s probably requiring a non-default version of a gem for a reason. If they weren&#039;t using a non-default version they&#039;d probably do something like monkey-patching or something else under-the-covers to patch in the functionality they need. I&#039;d much rather be debugging gem dependency issues than trying to debug a chain of patches applied to a gem.

But again, I do think most of the time people are going to go with a gem that is (one of or multiple of):
1. canonical
2. with a special feature they require
3. popular

1 should be the default (and will be with a good maintainer)
2 isn&#039;t avoidable, if you need the feature and it&#039;s not getting pulled in, what&#039;cha gonna do
3&#039;s not a good one to use unless &#039;popular&#039; means maintained and the real one isn&#039;t</description>
		<content:encoded><![CDATA[<p>Maybe I should move to the mailing-list, but for now:</p>
<p>@Luis great points. I&#8217;m going to have to think about that some more. One thing that comes to mind though is that&#8217;s not a problem unique to namespaced gems, the same problem can occur with gem A depending on gem C version 1.0 and gem B depending on gem C version 1.5. I do readily admit that upgrading from gem A 1.0 to gem A 1.5 is probably much more likely to work than from moneypools-A 1.0 to gem A-1.0.</p>
<p>The other thing is a library&#8217;s probably requiring a non-default version of a gem for a reason. If they weren&#8217;t using a non-default version they&#8217;d probably do something like monkey-patching or something else under-the-covers to patch in the functionality they need. I&#8217;d much rather be debugging gem dependency issues than trying to debug a chain of patches applied to a gem.</p>
<p>But again, I do think most of the time people are going to go with a gem that is (one of or multiple of):<br />
1. canonical<br />
2. with a special feature they require<br />
3. popular</p>
<p>1 should be the default (and will be with a good maintainer)<br />
2 isn&#8217;t avoidable, if you need the feature and it&#8217;s not getting pulled in, what&#8217;cha gonna do<br />
3&#8242;s not a good one to use unless &#8216;popular&#8217; means maintained and the real one isn&#8217;t</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dr Nic</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-190304</link>
		<dc:creator>Dr Nic</dc:creator>
		<pubDate>Thu, 05 Nov 2009 05:00:24 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-190304</guid>
		<description>@adevadeh oops, thanks. I&#039;ve added the highline dependency and I&#039;ve released 0.3.10.</description>
		<content:encoded><![CDATA[<p>@adevadeh oops, thanks. I&#8217;ve added the highline dependency and I&#8217;ve released 0.3.10.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: adevadeh</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-190303</link>
		<dc:creator>adevadeh</dc:creator>
		<pubDate>Thu, 05 Nov 2009 04:48:40 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-190303</guid>
		<description>seems to be a slight problem in the gemspec:

/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require&#039;: no such file to load -- highline (LoadError)

need to add highline as a dependency.

Thanks for this nice helper gem, i&#039;m trying it out right now.</description>
		<content:encoded><![CDATA[<p>seems to be a slight problem in the gemspec:</p>
<p>/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require&#8217;: no such file to load &#8212; highline (LoadError)</p>
<p>need to add highline as a dependency.</p>
<p>Thanks for this nice helper gem, i&#8217;m trying it out right now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luis Lavena</title>
		<link>http://drnicwilliams.com/2009/11/04/hacking-someones-gem-with-github-and-gemcutter/comment-page-1/#comment-190299</link>
		<dc:creator>Luis Lavena</dc:creator>
		<pubDate>Thu, 05 Nov 2009 03:44:45 +0000</pubDate>
		<guid isPermaLink="false">http://drnicwilliams.com/?p=635#comment-190299</guid>
		<description>@Richie

While your logic sounds reasonable, and under certain circumstances valid, it just turn into a complicated environment for new comers.

For example, in your case, let&#039;s say your Rails/Merb applications depends on this moneypools-thinking-sphinx.

Because is a cool project, or someone want to put it in their system, they clone it and start dealing with the dependencies.

Either using Rails gem dependencies or Bundler, you would get moneypools-thinking-sphinx, which is cool.

That is because both Bundler and Rails-gem mechanism uses &lt;code&gt;gem &#039;foo-bar&#039;&lt;/code&gt; prior the require of the library.

Now, things turn hairy for people that do not pollute their scripts with gem statements.

As my example in the group, I found issues with some users that had installed relevance-rcov and others spiceycode-rcov, which both offer &quot;rcov.rb&quot; to the require method.

Of course, relevance was loaded first, but could be &quot;abc-rcov&quot;, with lower version number than relevance which could be loaded due this simple require.

So, now you want to help out someone that is doing require &#039;rcov&#039; and you ask &quot;please tell me the version of rcov gem you have installed&quot;

&lt;code&gt;gem list rcov&lt;/code&gt; will throw no results.

Instead, the need to do gem search rcov, which will also bring a lot of noise to the results.

Now try to explain to that user &quot;ok, you got the wrong rcov&quot; and the answer will be &quot;I haven&#039;t installed it, was installed by XYZ, but MN uses this other version&quot;

All the above, is not hypothetical, I&#039;m giving a simple example of something that already happened to me and some users contacting me about RubyInstaller.

So, after you burn with this stuff a couple of times... instead of catching it late, why not fix the root of the issue?

In my company we built our own gem server and published there even gems for our private projects, not just open-source forks, that worked for us, and could work for others.

Apologizes for the long answer and my english, which I believe sometimes is not good enough to explain myself.

Cheers.</description>
		<content:encoded><![CDATA[<p>@Richie</p>
<p>While your logic sounds reasonable, and under certain circumstances valid, it just turn into a complicated environment for new comers.</p>
<p>For example, in your case, let&#8217;s say your Rails/Merb applications depends on this moneypools-thinking-sphinx.</p>
<p>Because is a cool project, or someone want to put it in their system, they clone it and start dealing with the dependencies.</p>
<p>Either using Rails gem dependencies or Bundler, you would get moneypools-thinking-sphinx, which is cool.</p>
<p>That is because both Bundler and Rails-gem mechanism uses <code>gem 'foo-bar'</code> prior the require of the library.</p>
<p>Now, things turn hairy for people that do not pollute their scripts with gem statements.</p>
<p>As my example in the group, I found issues with some users that had installed relevance-rcov and others spiceycode-rcov, which both offer &#8220;rcov.rb&#8221; to the require method.</p>
<p>Of course, relevance was loaded first, but could be &#8220;abc-rcov&#8221;, with lower version number than relevance which could be loaded due this simple require.</p>
<p>So, now you want to help out someone that is doing require &#8216;rcov&#8217; and you ask &#8220;please tell me the version of rcov gem you have installed&#8221;</p>
<p><code>gem list rcov</code> will throw no results.</p>
<p>Instead, the need to do gem search rcov, which will also bring a lot of noise to the results.</p>
<p>Now try to explain to that user &#8220;ok, you got the wrong rcov&#8221; and the answer will be &#8220;I haven&#8217;t installed it, was installed by XYZ, but MN uses this other version&#8221;</p>
<p>All the above, is not hypothetical, I&#8217;m giving a simple example of something that already happened to me and some users contacting me about RubyInstaller.</p>
<p>So, after you burn with this stuff a couple of times&#8230; instead of catching it late, why not fix the root of the issue?</p>
<p>In my company we built our own gem server and published there even gems for our private projects, not just open-source forks, that worked for us, and could work for others.</p>
<p>Apologizes for the long answer and my english, which I believe sometimes is not good enough to explain myself.</p>
<p>Cheers.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

