What is my Rails project going to do?
Published December 3rd, 2006 in Ruby on RailsThis is part of my Ruby on Rails project.
I guess the first thing you need to do before you do something is decide what it is you want to do.
That sounded a bit like humpty-dumpty, didn’t it.
Anyway, I wanted to do something realistic, so I would have to learn how real programs work, and also something with a little twist, so that there would be some actual coding involved, and not just a lot of integration.
I’ve also decided, when this is all over, to push this up onto sourceforge, ’cause I figure that if this open source it’ll force me to try to write good code, rather than cheap, and nasty hacks, just to get it finished.
What I’m not trying to is come up with anything new, so, well, I’m writing a kind of collaborative blog. Right now, I’m thinking of calling it cauliflower, but I’m not married to it.
I really hate cauliflower.
So, what do I mean by collaborative blog?
I mean this:
- Anyone can read it and sign up to write to it.
- Each user has their own personal blog, and all posts are open to comment by other signed-up users.
- When a user writes a post, or makes a comment, then that document will be marked with one or more tags (very web 2.0).
- When a post or comment is rendered by the blog, then any word in that document that corresponds to any tag (created by any user) will link to the results of a search of all documents created with that tag. The results can be sorted by:
- Most recently added document first.
- Most read document first.
- The document which was written by the most active user first. By active I mean who writes the most documents on this topic.
- The document which was written by the most read user first. By most read, I mean which user has written the most documents on this topic, and that have been read most.
- The home page will be split up into three sections: posts; users; tags.
- Posts can be sorted:
- Most recently added first.
- Most read first.
- Most popular author first.
- These searches can also be filtered by topic (i.e. tag).
- Clicking a post will take you to that post.
- Clicking a comment will take you to that comment.
- Users can be sorted:
- Most read first.
- Most active first.
- These searches can also be filtered by topic (i.e. tag).
- Clicking a user will take you to their personal blog.
- Tags can be sorted by:
- Most recently added first.
- Most popular (over all time).
- Most popular (today, last week, last month, last year).
- Clicking a tag will take you you the same search results that the in-document link would take you to (see 4. above).
- From the main page you will be able to search posts by tag. The tag search will be sortable in the same way as the in-document link results (see 4. above).
- From the main page you will be able to search posts by plain text. The results will be sortable by:
- Best match (exact string match/most words/best hit count).
- Where many documents are matched, order them by the most popular author of those documents’ topics (i.e. who has written the most popular documents in that topic). This could be tricky.
So, the plan is to create a big matrix of interconnected documents, where the search attempts to take you to the user who is the most active and most popular author in that field.
Personally, I’m no fan of wikipedia, so as a tool I would have no respect for this in the real world. I think democracy is not good for expertise; mediocrity maybe, but not expertise.
Still, it’s a hard enough project, so by the end of it I should know what I’m doing.