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.

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.

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

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?

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.

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?

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 Richards

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 Olson (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