GithubHelp home page GithubHelp logo

incf / biostar-central Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ialbert/biostar-central

4.0 4.0 4.0 50.38 MB

DEPRECATED, please go to upstream on

Home Page: http://github.com/ialbert/biostar-central

License: Other

Shell 2.84% Python 59.39% CSS 7.03% JavaScript 30.40% PHP 0.34%

biostar-central's People

Contributors

alevchuk avatar egonw avatar enormandeau avatar ialbert avatar kislyuk avatar kumarrishabh42 avatar pindia avatar puntonim avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

biostar-central's Issues

user login broken

currently all the social logins are broken.

also it would be good to be able to reconcile any of these logins to the same account, through verification or some such.

Fix "login to comment" links

Neither /login nor /browserid/login routes seem to work when commenting and logged out.

Also, clicking on ¨New post¨ when not logging in does not find the /login route.

Feature request list for *star

  • search/coordinate search across biostar sites
  • api access for post/search aka stackoverflow
  • RDF export
  • ORCID integration
  • Weighted metrics
  • Prompt for topic when posting
  • Tag filtering
  • Write a good set of deployment recipes
  • Mobile-friendly site

Fix comments (post.edit.actions.html)

Right now trying to post comments in neurostars results in the following (example) 404:

http://neurostars.org/new/comment/f2qIJx936eyyzGhioTajkxmlx10hGeGb/

Additionally, clicking repeatedly on "comment" generates several div=edit-action sections.

I suspect that Django's CSRF is getting in the way:

https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/

Although it is correctly enabled in MIDDLEWARE_CLASSES in settings.py via 'django.middleware.csrf.CsrfViewMiddleware',...

@ialbert, sorry to bother you again, but if you have some insight in this matter, it would be very appreciated :)

[Development] Problem running biostar.sh init import run

When I try run the project following the instructions, I get this error:

"django.db.utils.OperationalError: no such table: django_site"
I have the correct default.env, and this is my "pip freeze":
Django==1.6.2
South==0.8.4
amqp==1.4.4
anyjson==0.3.3
billiard==3.3.0.16
celery==3.1.9
django-celery==3.1.9
django-debug-toolbar==1.0.1
django-markwhat==1.1
django-pipeline==1.3.22
futures==2.1.6
kombu==3.0.13
pytz==2013.9
sqlparse==0.1.11

The complete traceback here: https://gist.github.com/hannicolas/9460328

something just happened -- got bulk of announcements from r2e

I haven't heard anything from neurostars RSS for a while even though my r2e checks every 10 minutes. and few minutes ago all of a sudden got like 30 of those announcements, probably dating all the way back. was there a restart or smth

I received them around Mon, 13 Jan 2014 05:20:02 -0000

[UI] General cleanup/redesign of the frontpage, A/B testing

The current design is a bit cluttered with tags, features and latest user(s) activity. Study other ways to present the information, following today's design practices.

One good example of such simplicity would be Google Scholar and perhaps Stackoverflow itself, we have to find a good balance between simplicity and usability.

login and issues posting

two issues:

  1. login should describe what mozilla persona is - people won't click the link to find out and get confused.
  2. there should be a direct link to github issues on the neurostar banner so people can report bugs easily/directly.

About and *neurostars* FAQ pages replaced by *biostars*

@nimiq, apparently there was a bad merge with the about/faq pages on neurostars. The production page shows generic info from biostars, not neurostars:

http://neurostars.org/info/about/

The following html templates had the correct information. Maybe it's worth to point/refactor them to "themes" folder to avoid future accidental merges.

https://github.com/brainstorm/biostar-central/blob/neurostars.org/main/server/templates/pages/faq.html

https://github.com/brainstorm/biostar-central/blob/neurostars.org/main/server/templates/pages/about.html

Import a popular neuro mailing list such as FreeSurfer into Neurostars

During the OHBM hackathon in Berlin, a few users expressed their interest in having a more interactive version of the FreeSurfer mailing list:

http://www.mail-archive.com/[email protected]/info.html

That would allow users to:

  1. Quickly search through archives.
  2. Rank answers for relevance (collaborative filtering).
  3. Filter by tag(s).

For that import to happen we should:

  • Ask the original archive owners if that's ok for them.
  • Identify the attributes we wish to migrate (usernames, thread structure...).
  • Pre-filter relevant questions to have a good bootstrapping.
  • Setup an email mechanism similar to Gmane so that new emails get into neurostars automatically, not requiring periodic imports.

@satra, @nicholsn, feedback is welcome. I thought about starting with this:

http://stackoverflow.com/questions/22006616/how-convert-an-mbox-to-a-json-structure

While @nimiq is finishing up the deployment roles:

https://github.com/nimiq/ansible-neurostars.org

Thoughts about the new deployment strategy based on Docker and Vagrant

@brainstorm, @satra, @ialbert

I've been working on the new deployment strategy based on Docker and Vagrant last week, but I didn't get any good result and I have some concerns about the entire strategy.

In brief

Building a development environment for Biostar is currently very easy: create a Python virtual environment, install the requirements, change the settings in order to use PostgreSQL (if you want to, otherwise you can keep using SQLite), load the environment variables and run some Django management commands (via the biostar.sh script).

Deploying Biostar to live is more complicated and requires to setup Nginx, Gunicorn, PostgreSQL, Redis, Celery, Supervisord and Elasticsearch.

The reason why we don't need to install all these tools in our development environment is that we don't care what is the tool used for caching or full text searching f.i. as long as it behaves like a cache or full text search engine. This principle lets us keep our development environment very simple and light so we focus only on coding. In the rare situations when we have to test those special features we use a staging website (which is an exact copy of the live environment).

Now we want to build a new deployment strategy which can build a development env and deploy to live in the same way, using Docker containers. Docker is a really cool technology and I am very excited to learn such things, but I found so many complications that I am wondering if I am on the right track. I'll dig into more details later on, but the general idea is: a lot of code is required to configure such a deployment strategy, even some workarounds are required because this technology is still not perfect, and I am worried about the maintainability of the the entire process.

More details

  • Docker works only with linux OS, so if your development machine is a Mac OS, you need to add boot2docker and Vagrant to your toolchain. This adds some complexity to your environment and makes it heavier so it must be worth.
  • Docker containers are meant to contain one or a few tools, so in our case we need to use at least 4 containers. This requires us to write a lot of code to configure Docker and Vagrant. Take a look at this Vagrant file which defines only 2 simple containers (one for PostgreSQL and one for Django). I'm afraid that all this code will easily become unmaintainable.
  • Docker containers must be linked together: f.i. the container with the code and the webserver needs to know the IP address and the port of the PostgreSQL container, the Elasticsearch container and maybe the Celery+Redis container. These links add complexity to the Vagrant configuration file and also the Django settings file because we need to use cryptic environment variables like:
    get_env("PG_PORT_5432_TCP_ADDR")
  • Forwarded ports are hell. You want to forward some ports from a container to your dev machine, f.i. the port 80 (or 8080 or 8000) of the webserver to see the website in your browser or the PosgreSQL port. Exposing a port from a Docker container is easy, but then (assumed that you are on a non-linux machine) you have to expose it again from Vagrant to the host machine and this doesn't work currently, because Vagrant uses a boot2docker light VM which has an issue. Of course there is a workaround for this, but again we are adding complexity.
  • Containers are sort of lightweight wrappers around an app, so they have no SSH access. If you want SSH access to a container you have to add code to install the SSH server and distribute private keys from Vagrant to the Docker container. And you need SSH access at least to manage Django (create migrations f.i. or any other management command).
  • With no SSH access to a container there is no way to view logs or configuration files. You might want to see the PostgreSQL or Celery log files, but you cannot if the container has no SSH access. So you will end up configuring the SSH access for all containers.
  • Usually passwords are managed via environment vars loaded with a source command. With the new strategy we need first to share these environment vars with Vagrant and then with the containers: I don't know what is the best way to do it yet but I have some concern about security.
  • Performance: the code is physically stored in our dev machine. We share it with Vagrant which shares it with the Docker container where the webserver is. This introduce a lag. I did a few tests with my Macbook Pro (with 4 GB RAM, bought in 2010) and the lag was annoying. Vagrant with only 2 containers for PostgreSQL and Django takes at least 0.5 GM RAM.
  • Docker is a great technology and it is getting popular very fast, but most of the info in the Web describes very basic configurations with 1 or a few Docker containers. It is hard to find info about more complex systems.

Conclusion

Docker and Vagrant are cool technologies but there are many complications involved. I am not afraid of complications, I can manage this, but I am afraid of 2 things: first this will take some time, maybe weeks and this means less time to developing new code and features for Neurostars; second the result might be not easy to maintain.

What do you think? Fortunately we can discuss it live in Berlin in a few days!

Write a good set of deployment recipes

Deployment of the web site should be smooth, and maybe pythonic :)

I have a set of ansible roles that need improvement, but that basically deploy a whole neurostars from scratch.

Admin & moderating abilities

  • Integrate openid/mozilla persona login with roles in django
  • provide moderating/editing permissions to editors

[UI] Email notifications too hidden

Currently there's arguably many users that just miss the "getting notified by email" drop down menu on the questions.

image

Exposing it on a different way so that is more obvious to the user would improve the adoption of this feature (which helps on keeping users engaged on the site).

Related box, freebase-like backed system

from @satra:

Much like google generates a related items box based on their knowledge graph, i think the best use of semantic technology would be to create a related box for any question.

This box may contain pointers to code, to websites, to papers, to other relevant discussions.

So this would entail having a box next to a post and building up a database of related areas (like freebase and using freebase where relevant).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.