Choosing tools (RoR/drupal/other)

Hi! I have an idea for a project that would be based around a
community like website. I am currently trying to evaluate different
tools for me to build my site with. Though I’m fairly new to
developing server side things, I do have some programming experience
and a lot of gerenal computer/web know-how, so I know roughly what I’m
heading for. I want something that is proven to work for semi-big
community sites, that is reasonably easy/quick for me to learn and
use, that I can thoroughly brand and theme the way I want, easy to
maintain and update for whatever future changes and additions I may
want to do to the site, and so on. The website has to be finished
early spring 2008, and I have fairly much time to devote to it.

I’ve been looking at Drupal, which seems nice because it looks like it
has a gentle learning curve which may make it more realistic for me to
actually finish the project alone. It’s also good because most of what
I need appears to be available out of the box or through different
modules. What I don’t like about Drupal though is that it feels like I
don’t easily have any control over the actual mechanics of my site,
because of the layers of interface between me and the code.

Now I’m also looking at Ruby on Rails. It seems to offer a higher
level of control, meaning you’re not forced to rely on the work of
others. Otoh, this might mean a lot of extra work for me?

Let’s look at what I need for the website (I recently posted this list
(but slightly different) on the Drupal forum as well):

  • A regular CMS for managing the website, including news articles
    (essentially a blog) and articles of more static nature (such as FAQ’s
    etc)
  • A good, clean, fast and easy-to-use forum that doesn’t feel bloated
    (a good example of what I want would be Vanilla)
  • The ability for users to start their own “teams”. Each team
    automatically gets its own private/hidden forum section as well as a
    public group blog. A user must not be part of more than one team at
    the same time. Anyone can apply to be part of any team, but the
    initiator of each team decides who is allowed and who is not. There
    must be a maximum limit of say 15 members in each team.
  • A public gallery with support for at least images, text and movies
    (streaming, preferably a flash application). Every uploaded submission
    must be manually approved by a moderator before it appears on the
    website. Support for rating, comments, sorting, albums etc would be
    welcome but not absolutely necessary.
  • A natural connection between news articles and the forum, similar to
    how you can discuss blog articles, but in the forum instead. So, when
    a news article is published, it automatically creates a new discussion
    in the forum. Another variant would be to have a certain forum section
    in which only some people are allowed to post, and where a new post
    automatically shows up as an article on the news site.
  • Super easy sign up but still good spam protection
  • Google maps integration, with icons showing how the members of each
    team are spread out over the country

Would it be unreasonable for me to use Rails for this?

What other tools would you recommend that I take a look at? :slight_smile:

I don’t know how objective I can be about this, but I’ll give you my 2
cents. I’ll just comment about the parts I know something about.

On May 25, 9:11 pm, nvm [email protected] wrote:

early spring 2008, and I have fairly much time to devote to it.

It looks like you’ve looked at your resources and opportunity costs.
Good move.

others. Otoh, this might mean a lot of extra work for me?
One beautiful thing for people new to Rails is how much work you can
use from others, if you know how to guide the process. There are
plugins and gems for a lot of standard things. These get real easy to
implement and test.

automatically gets its own private/hidden forum section as well as a
how you can discuss blog articles, but in the forum instead. So, when
a news article is published, it automatically creates a new discussion
in the forum. Another variant would be to have a certain forum section
in which only some people are allowed to post, and where a new post
automatically shows up as an article on the news site.

  • Super easy sign up but still good spam protection
  • Google maps integration, with icons showing how the members of each
    team are spread out over the country

Would it be unreasonable for me to use Rails for this?

I don’t see any reason why you couldn’t build all of that with Rails
and be able to scale it and meet all of your requirements. As far as
I understand your requirements, I’ve seen or built something like each
piece you have listed with Rails. Besides, Rails is simply a
framework. If you really came up with something that didn’t fit the
MVC paradigm, what’s to stop you from writing that part in plain Ruby,
or even something else?

What other tools would you recommend that I take a look at? :slight_smile:

I think, more than whether to use Rails is HOW you’d use Rails. I can
speak for myself, and it seems to be common in the community, that
we’re learning Rails the “wrong” way. We get excited and do a
tutorial or two. Then we write a few sandbox applications to take the
thing out for a spin. Then, we just kind of hack away, pick up books
or articles to try and fill in the gap. Now, 2 years into it, I’m
starting to get a different picture. I wasted a lot of time in
undirected learning.

Here’s what I’d propose you do:

  • start with a good foundation in test-driven development (or BDD).
    Use that approach to explore Rails and Ruby. It seemed to pedestrian
    to me before, so I avoided this approach, but then I realized how vast
    the Rails world is and how quickly I could get lost, and I just think
    that the test-driven work I do today is much cleaner and easier to
    build off of than my original work. (I use RSpec for my test/specs by
    the way. I’d recommend those). Here’s a decent article defending
    this approach to learning rails:
    http://notrocketsurgery.com/articles/2007/02/23/the-scientific-method-learning-bdd-rspec-ruby-and-rails-with-language-experiements
  • Approach your project interface-first. That way, if you decide
    you’d prefer a different framework, it’s because of a design decision,
    and you haven’t thrown away a lot of your work. It’s a good practice
    anyway, even if you’re not wondering whether to use Rails.
  • See how many elements of active learning you can use (short lectures/
    articles/chapters, reflective questioning, practical experiments, and
    peer feedback)

I think if you approached Rails this way, the learning curve wouldn’t
seem so unnavigable and you’d probably enjoy the trip a lot more.
Also, you might discover some of the things that I’ve discovered about
Rails:

  • It’s a joy to write in Ruby
  • The beginning of a good app can start to take shape in minutes
  • About as much of the mundane that can be done for me has been done
    for me. In the areas where things still seem mundane, I’m discovering
    that there were better practices that I hadn’t been taking advantage
    of (both things generic like wireframing and test-driven design as
    well as more Rails-specific stuff that you’ll pick up as you go along)
  • The learning curve mostly represented the undisciplined parts of my
    work process that I had to bring under control (like thinking in terms
    of MVC, getting into a regular refactoring habit, and learning
    something new every day)
  • The community is a very good place to hang out. People are
    thoughtful and considerate, often. What’s more important, a lot of
    them are very smart. Good group of people to associate with.

As far as the Google Maps part of your application, there’s a whole
book put out on using Google Maps with Rails from Apress (Google Maps
Applications with Rails and Ajax). It’s pretty good.

Good luck with things, whichever direction you end up going.

David R.

I agree with David’s comments.

You might check into Mephisto for a CMS and the forum stuff from the
Pragmatic Programmers (Pragmatic Bookshelf: By Developers, For Developers ) or
Rick O. (http://beast.caboo.se/). If you started with those you’d
not only have a very functonal base in RoR, but some of the best code
to work from as samples.

Good luck.

Great reply! It’s very late here, so I don’t have time to write much
more than this right now, but I’ll come back tomorrow!

Thanks!

  • nvm