Working on the installer and Gem.activate on 1.6 showed how crufty and painful 
Gem, Specification and Dependency were. 1.7 is going to focus almost entirely 
on refactoring the API into something useful. Specifically:

+ GemPathSearcher needs to die. God I hate it. 100% of it is bad design and 
equivalent functionality should be built into specifications themselves.
+ The relationship between Specification and Dependency needs to be made more 
usable. In particular, going to source_index every time you need something is 
an abomination. Specification should be able to respond with all specs that 
match it's dependencies.
+ Installer code and activation code needs a refactoring. The fact that I had 
to do _nearly_ the same thing twice was proof of that.
+ Gem.activate should be moved to Specification#activate.
+ Gem.source_index should be hidden as an implementation detail (or removed) 
and proper public counterparts should be added (eg. 
Specification.all/active/find/named).
+ Lots more Gem class methods should be moved to where their responsibilities 
properly belong. There is so many LoD violations that it isn't funny.

I'm sure there is a lot more. That's just off the top of my head.

IMPORTANT: This release is going to be a code contraction month. Feature 
additions / enhancements should NOT go in master and should NOT be released in 
1.7. We can add toys in 1.8.

_______________________________________________
Rubygems-developers mailing list
http://rubyforge.org/projects/rubygems
Rubygems-developers@rubyforge.org
http://rubyforge.org/mailman/listinfo/rubygems-developers

Reply via email to