On Sat, Jan 07, 2006 at 01:56:44PM -0800, Jeremy E. wrote:
In the interests of starting a more serious discussion of problems with Rails:
As a core member I’ll respond to some of the issues you bring up.
- The internals are undocumented and sparsely commented, making it
difficult to patch when you discover yet another bug.
When you run up against internal code that is poorly documented or not
documented at all and struggle to figure out how it works, documentation
patches would be appreciated. We work hard to make the outward facing
always backwards compatible. Documentation is like code. The more you
the more you have to maintain, so we privilege the public API over the
private API in this regard, as the internals tend to be refactored more
frequently (which requires the overhead of documentation updates). Also,
those delving into the internals are likely more able to determine how
work. Point taken though. Rails would likely benefit from some more
documentation of the internals. Again, patches welcome. Documentation
don’t require tests
- Non-trivial patches only get applied if they affect the core team.
If a patch is non-trivial it needs to be well tested. If it doesn’t
cleanly the core team doesn’t have the time to make it unless it is
important. If it is well tested then it still takes time to evaluate.
how open source works. There are two sides to everything.
I take issue with the “only get applied if they affect the core team”
As a member of the core team who has taken the time to apply, test and
plenty of code that has nothing to do with me I can’t accept such a
We try to make an effort to express in ticket comments when a patch is
complete or needs more work. If a patch is of high quality, well tested
appropriate for inclusion in Rails then it is often applied relatively
expediently. In the cases where this does not happen I apologize. Gentle
pestering on the rails-core list is encouraged. Gentle…
You may take issue with what “appropriate for inclusion in Rails” means.
Rails came out of David and 37signals’ needs for Basecamp so it has its
original motivations springing out of necessity. The core team does have
needs in the applications they build. David, for example, had a need for
tagging in Sunrise. But he did not add a tagging framework to Rails.
after implementing a tagging system he was happy with, he extracted the
higher level database relationship model (the new polymorphic
into ActiveRecord. In other words, there is a distinction to be made
people’s needs and thing that are appropriate to the framework. We
are the judge of what the appropriate level is. If it’s at the framework
level and is a good fit for Rails, it goes in. Scott B., a core team
member with the keys to the svn repository, is using the plugin system
Rails for several of his projects. He has needs for his apps but
they don’t fit in on the framework level.
The relatively high barrier of entry to patch submissions is also
reason why you like Rails so much. We say no before we say yes.
- Implementing new features takes priority over fixing bugs.
Rails has been in growth mode for a while. With the release of 1.0 we
said, “This has enough features.” The 1.0 branch will only receive bug
now. Rails hasn’t stopped its development but non of the core team has
interest in making it huge and bloated so a lot of the work post 1.0 is
into the tools used in conjunction with Rails and not as much on Rails
itself. Either way, new features will be implemented and bugs will be
We could all spend more time fixing bugs but as the considerable test
coverage of Rails indicates, its code health is good.
- There are a lot of bugs.
Undeniably, there are many pending bug reports. There is a distinction,
though, between there being many tickets and many egregious bugs. Rails
always going to have bugs. A lot of bugs, though, are edge cases or
not a priority so simply going off the number of pending bug reports is
the whole picture. Regardless, if you are so inclined go through and
identify, say, the 10 most critical bugs as you see it and post their
numbers to the core mailing list making a case. Help prioritizing bug
would be appreciated.
- It’s slower than other frameworks (if you can’t use caching).
Rails privileges programmer productivity over execution speed. Always
and will. As does Ruby itself. That aside, the core team is mindful of
performance and we are working closely with Stefan K. who has taken it
himself to work exclusively on Rails performance. I personally spent
hours for the 0.13.x release integrating his performance work into
Rails is slower than other frameworks. There are other criteria by which
can be compared to those same frameworks as well. Ruby 2, out there in
distance, will likely make that a non issue. Rails is most of the time
enough. There are real world apps with lots of traffic backing that
- def many_method_names_are_really_long_like_this_one; end
What is the problem with this? You want intension revealing method
Your text editor should alleviate the hassle of typing the whole thing
I like Rails and I think it is the best web framework for my needs,
but there are still a lot of problems with it.
Thanks for the list. It’s very useful to have people who like Rails
out what they don’t like rather than people who’ve already made up their
to hate it looker for things to throw rocks at. So I do really
your candor. I’m all for people willing to help.