I believe that the process of science - how discoveries are made - will change more in the next twenty years than it has in the past 300 years. Michael Nielsen. Reinventing Discovery (2012).
Rather, knowledge is becoming inextricable from - literally unthinkable without - the network that enables it. Our task is to learn how to build smart rooms - that is, how to build networks that make us smarter, especially since, when done badly, networks can make us distressingly stupider. David Weinberger. Too Big To Know (2012).
I'm a guy trying to be a successful scientist and I'm convinced it's time to change the way we do Science. And I'm also convinced that the way to change it is using the most powerful cognitive tool we have now: the Internet. I believe David Weinberger's quote above to be absolutely right, we have now the means of providing humanity an extended mind for the benefit of all. But we, scientists, are too reluctant to make the jump, while we probe the limits of human mind's capabilites every day (well, at least we try) we haven't changed the way we do science in hundreds of years.
Right now, the minimun contribution to science (for which you can get credit for) is a journal article. And this is no easy feat to achieve. Usually a published article represents the culmination of many months of work, after spending months browsing the literature, making many trials and erros and following dead-ends, when you finally find something worthy, you write a distilled pristine text with your shining result and send it to publication. I'm not arguing (for now) against the value of journal articles. What I'm concerned is that a journal article is the minimum and only way to make a contribution to science that will get a scientist some reward for his/her work. All the errors, dead-ends and partial results get lost to the overall community. And I'm convinced all that unpublished information is not only valuable but should be rewarded.
Take as a contrasting example the open source community. I don't think we can easily overstate the impact open source software has had in the world. But take a look at this study, the authors find that the most common size of code contribution is one line of source code. Imagine if it was forbidden to make such a meager contribution to an open source project, imagine you needed to change at least 200 lines of code to be considered for a contribution, imagine also that your contribution had to go through a peer-review process which can take from a couple of weeks, to many months (my last experience was 8 months long). And God help you if you copy-pasted a line from some place else! Certainly you wouldn't bother to correct a typo or make a micro-optimization when you had the chance. That's why I'm frustrated when I see a clear error or a possible improvement in a published article, I wish I could share and discuss my small contribution to everyone else reading that article, but it's really hard to do that. In general it's really hard to contribute to and/or correct the scientific record in any way.
And don't get me started on the exhorbitant high prices and abusive policies from publishers!
If you think about it, science is perhaps humanity's most impressive collaboration. It spans many centuries of cumulative work from people all around the world. It's thus equally impressive that our tools for collaborative work haven't been improved. I think the only significant change has been from traditional mail to e-mail. But it's clear now that there are many successful ways to collaborate in large scale. Take also a look at this post from Aaron Swartz about how Wikipedia is written. The most common contributions, as in the open source movement, are also simple changes, mostly of spelling and formatting. But most of the information comes from a wide range of casual contributors who happened to be experts in a small (sub)topic. The editors with most contributions mostly provide coherence and structure to the whole site. Perhaps we can learn a lesson here and try to incorporate the general public in our intellectual endeavour. Already we have some citizen science with amazing results.
I think we need to restructure the way we work with scientific knowledge. First we need to acknowledge that all intellectual production is potentially valuable including dead-ends, negative results and even personal opinions so we should record it all in some way that makes it accesible to everyone who could use it. We also neeed to encourage small contributions, more dynamic discussions and better collaborations. Then we need to find some way to give credit where credit is due. This is still very far away from my dream of an humanity's extended mind to the benefit of everyone but perhaps this will start to light the way. None of the ideas I previoulsy stated are new, and I'm glad to see a growing comunity of scientists concerned with new ways of working.
My aim in building Research Engine can be stated as:
Every intellectual activity related to my research is valuable and should be recorded in an open, organized and accesible way that can be escalated to bigger collaborations.
By intellectual activity I mean many things including my notes while working through a problem, my thoughts and critics while reading someone else's work, the source code I use for my projects and also smaller one-time-use snippets, the datasets I get from experiments and/or simulations, the discussions I have with colleagues and finally the cumulative knowledge I gain through time in a topic.
There are some projects where I could keep a record of many of these things. For example I like Academia.edu where you can share Facebook-style thoughts about your research and find colleagues with similar interests. I think also ResearchGate has the right idea by promoting discussion and trying to measure the impact of your contributions in a more widely sense than just publications. Another interesting site is figshare where you can post some of your partial or negative results. For some time I also used a WordPress blog as my open science notebook. However, after some time, I found that none of these sites provided just what I wanted and they aren't integrated in any way. However, my main motivation is that all of them put emphasis in sharing but not much thought in providing better ways to create new knowledge in innovative ways.
As I said before, I split the idea of intellectual activity in a couple of different things, in particular I broke it down to six different concepts and I'm implementing each one of those variants as a separated section in Research Engine. Here I to outline how I treat them:
This project is based on Google's App Engine so it should be relatively easy to escalate and improve. I assume most of the improvements will be made by researchers so they need to be able to make changes easily and return to their science production as fast as possible.
You can have a look at the features I'm planing to implement and the bugs I've found in the issues tab of this GitHub repository. Besides those ideas I also want to do the following:
If you want to play around with the code you will need Google's App Engine, please look into their documentation for instructions on how to get an instance working on your machine. If you want to make it public you will also need to register an app with them and change some basic settings:
app.yaml
file change the line application: research-engine
to your own app name.mail.py
file change the ADMIN_EMAIL = "admin@research-engine.appspotmail.com"
parameter to your own appspot domain.src/generic.py
file change the parameters APP_URL
, ADMIN_EMAIL
and APP_REPO
. Be sure that you use ADMIN_EMAIL
consistently.static/edit_help.html
file
.src/secrets.py.template
to src/secrets.py
and fill in the appropriate information to your app. In the current version of this app we only use Google Login so you can leave the other options without modification. To use the Log in with Google feature you will need to register a new App in your Google Cloud console for your appspot domain and copy its OAuth 2.0 CLIENT ID and CLIENT SECRET keys in this file. In the OAUth 2 options add as web origins https://your-app-name.appspot.com
and http://localhost:8080
and as redirect uris https://your-app-name.appspot.com/auth/google/callback
and http://localhost:8080/auth/google/callback
.ADMIN_EMAIL
parameter you wrote on src/generic.py
in CrossRef. To do this you should go to http://www.crossref.org/requestaccount/ and submit there your ADMIN_EMAIL
. They will send you a verification link which you can check in your app's logs.Code developed here is released under a GNU GPLv3 license so you have the freedom to do a lot of things with it, but please look into it's details before using this package. You can find a copy of it in doc/LICENSE.txt
file or in this GPLv3 page