Bioruby site Re-styling

Audience
The site needs to target the following types of audience:


 * Bioinformatics background
 * Biological background
 * Computer Science background (with or without Ruby background)
 * BioRuby Developers

Features
The site should:


 * support automated testing showing supported versions of bioruby
 * pull in tweets from bioruby and other open-bio projects
 * have a way to visualize github commits; If possible, chart the activities of each project.
 * have a page on who is using Bioruby; A list of Labs/Universities/Institutes
 * support a chat/forum for questions by newbies
 * support a weekly bioruby news page
 * support example code snippets that can be run from the browser
 * it would be great if we had a set of tutorials that users can follow in the browser
 * A time ago Katayama san created a BioRuby Shell BioRubyOnRails could be used as a starting point?
 * have a modern, clean style. Please volunteer if you can help.
 * be a Ruby on Rails project.

Inspiration
The jruby site was generally considered as a good model of a good community website to emulate. People have also said that the minimalist style of the sinatra landing page works for them.

Progress
Majan has made a tentative commitment to handle the initial push. We still need to define incremental steps towards creating the new site and distribute these tasks to volunteers.

Until the initial repo hits its straps, this page can serve as a place to define and delegate tasks.

Hosting
Helios: i can host on my private server a rails app. Otherwise we need a public free or with a small $ plan

Possible Designs
robsyme: I spent a couple of hours on Sunday reminding myself why scientists should never try their hand at web design. There is a lot of content I don't have time to put in here - this is just a sketch. Comments very welcome.



pjotrp: I like this design. It invites people to jump right in - while also directly addressing users coming from different backgrounds. What is missing is how to handle news feeds. See https://github.com/pjotrp/NA-BioRuby.org/blob/master/features/main-page-news.feature.

marjan: Maybe we could add two columns on the bottom of the page. One would be for the news feed, and the second could be for commits from github from the main project, but also with commits from the plugins. This way the visitor could see that the software has an active community and has not been abandoned.

helios: I like the black style but the code uses too much space. btw the code could be "gist of the day"

marjan: I integrated a pull request robsyme sent to me yesterday, along with some notes about what needs to be cleaned up:)


 * The annoucements section needs to be fixed up so that we can bring in content in markdown, perhaps?

I will just add one more thing:


 * Replace the code.png picture with text with added syntax highlighting and a max limit for number of lines. On every load of the page, this field would show a different code example (gist of the day).

Authentication
For now there are two kinds of users: admins and users. The former should have complete control over the site and other user accounts. The later should be able to submit news articles, gists with code examples for the front page and similar.

There are two ways to sign up and sign in: using username/password combination or using a GitHub account. The users can sign up/in on the "Contribute" page.

On the technical side, the omniauth-github and omniauth-identity gems are used to implement this. The result of any of the two methods of registering a new account with the site is a record in the users table. The rest of the application needs only to know about this table. Record objects of the table have an admin? and a new_user? methods, and there is a current_user method in the application controller (therefore available throughout the whole application) which return the User object if a user is signed in or nil otherwise.

Here are some interesting resources:


 * Simple OmniAuth http://railscasts.com/episodes/241-simple-omniauth
 * OmniAuth Identity http://railscasts.com/episodes/304-omniauth-identity
 * Railscasts has a "Sign in using GitHub" link and the source code of the website is available at https://github.com/ryanb/railscasts

To think about:


 * Should there be a "review by admin" step between submission and publishing of content for regular users? Or maybe a third group of people, which wouldn't have the same privileges as admins, but still be able to submit code examples, news and similar?
 * Should the regular users be allowed to register for a regular username/password, or should they be able to sign in only using their github account?

Content submission
Still not sure how is this going to be implemented, but one of the requirements for this process that has been mentioned is that markdown should be supported.

Beside giving a user the option to submit content that is located in a github repository, it might be a good idea to allow this to be done directly on the website. In the case of markdown, there are a few editors available that can be embedded into the website:


 * EpicEditor: http://oscargodson.github.com/EpicEditor/
 * markitup: http://markitup.jaysalvat.com/examples/markdown/

Content that is going to be submitted:


 * Announcements,
 * News,
 * Gists of the day (code examples),

Run examples in the browser
There seem to be two approaches to a solution for this:


 * http://tryruby.org/ - the session is running on the webserver. A javascript application is sending commands to the backend and then displays the results of the command when received,
 * http://jruby.org/tryjruby - the session runs as a java applet in the browser. Here are some additional resources:
 * http://stackoverflow.com/questions/5423888/how-do-you-create-a-java-applet-using-jruby

Both solutions need to be further investigated to see if any of then is suitable for our website.