Giter VIP home page Giter VIP logo

sciencefair's Introduction

The open source p2p desktop science library that puts users in control.

API stability Latest release MIT license

We've released ๐ŸŽˆ v1.0 ๐ŸŽˆ! But we're just getting started. Check out the roadmap to see where we're headed.


Why ScienceFair?

How we access, read and reuse scientific literature is largely controlled by a few vast publishing organisations. Many wonderful innovations are being explored outside those organisations, but they are rarely integrated into the platforms where people actually access science.

We have a vision of a different, better, future for science. A future that's more fair, inclusive and open. A future where people can explore and innovate and where users control and customise their experience.

ScienceFair aims to help pave the road to that future. The main thing that sets it apart? Freedom from centralised control.


We're creating a desktop experience for discovering, tracking, collecting and reading scientific articles that:

  • is completely free from external control (e.g. by publishers or platforms)
  • helps decentralise the distribution and storage of the scholarly literature
  • allows the user to customise their experience
  • promotes and integrates open data and metadata
  • helps grow an ecosystem of open source tools around scientific literature

contents

downloads

You can download installers or bundled apps for Windows, Mac and Linux from the releases page.

If you find a bug, please report it in the issue tracker.

technical details

Some of the things that ScienceFair does differently:

A reading experience optimised for Science

We use the beautiful Lens reader to render JATS XML to a reading experience optimised for scientific papers.

reader

Instant multi-source search

Instant search of your local collection and remote datasources, only downloading the data requested.

results

Secure, flexible, distributed datasources

A ScienceFair datasource can be a journal, a curated community collection, a personal reading list... anything you like.

v1.0 comes with the eLife journal by default, and more will follow very soon.

Datasources are append-only feeds of JATS XML articles, signed with public-key encryption and distributed peer-to-peer (using dat). This means:

  • downloads come from the nearest, fastest sources
  • it doesn't matter if the original source goes offline
  • only the original creator can add new content
  • anyone can create a datasource (tools to make this easy coming soon)
  • your local collection of articles is ready for data mining

And importantly, datasources you create are private unless you decide to share them, and nobody can ever take a datasource offline.

Built-in bibliometrics and analytics

Basic bibliometrics are built-in in v1.0.

Full analysis and data-mining tools, alt-metrics and enriched annotation will be coming soon.

selection

ScienceFair also follows a few simple design principles that we feel are missing from the ecosystem:

  • we keep the interface minimal and clear
  • incremental discovery is the way
  • be beautiful

home screen

development

This project uses node v8, ideally the latest version. It also uses the two-package.json structure (what??).

To get a local copy working, clone this repo, then run

  • npm install to install dev dependencies
  • cd app && npm install to install regular dependencies
  • cd .. && npm run dev to start in development mode

roadmap

  • v1.0 proof of concept:
    • incorporate major new technologies (dat/hyperdrive, lens reader, instant search)
    • core user experience and design
    • development, packaging and distribution architecture in place
    • 1.0.x releases will be bug fixes and non-breaking improvements
  • v1.1 focus on datasources:
    • more, and bigger, datasources available by default
    • tools for creating and managing datasources
    • interface for creating and securely sharing p2p collections within the app
    • a platform and interface for discovering and managing datasources
  • v1.2 focus on enrichment:
    • altmetrics, updates (e.g. retractions), etc. displayed in context in realtime
    • advanced bibliometrics and data-mining tools
    • annotation and commenting, within the app and drawn from existing sources
  • v2.0 focus on user customisation:
    • a package system, allowing customising and extending key aspects of the experience
    • tools and documentation for making new packages
    • a platform and interface for discovering and managing packages

sciencefair's People

Contributors

40thieves avatar alexmorley avatar alvesjtiago avatar bencevans avatar blahah avatar caydenberg avatar freeman-lab avatar giorgiosironi avatar greggraf avatar jqrgen avatar katrinleinweber avatar kdm9 avatar klmr avatar mafintosh avatar meis avatar npch avatar ralphtheninja avatar sirrujak avatar treblesteph avatar trott avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sciencefair's Issues

Package management system

Possibly we can just rip apm from electron?

Basically we just want a wrapper around npm, with ~/.sciencefair/packages as the install location, and with a nice interface for finding, installing and managing the packages.

And we'll need to structure the API with extensibility in mind.

Add an 'about' pane

We need a simple about pane that shows the version, links to the website, and tells whether there's an update available.

Might be provided automatically by using electron-builder (see #44)

UX for 'Collections'

It's confusing to me to have 'collections' be so prominent - it'd be nice if it was a drawer and not open by default

Package idea: export citations

Take a (sub)set of search results and export them in a variety of citation formats, ready to go into a reference manager.

Could also take the references of all the selected papers and export them.

cmd-v paste

Paste (cmd-v on mac) doesn't paste in the search bar or datasources modal

I know from other issues you're generally aware of these, but you asked for more documentation tracking them, so here goes.

Excited to see your progress. Youve got my star and watch..

Global state store

@maxogden @freeman-lab can you elaborate on what you had in mind? I'd like to get this in place before going too much further - it will get harder to do the more we build without it.

Approaching browse/download problem

Hi,
for starters, I would like to say, that I really like the idea behind this app.
I was wondering, however, how do you plan to approach the problem of browsing a journal's archive and downloading papers of interest?

For example, two acknowledged open-acces journals in chemistry, Molecules ans BeilsteinJOC, do not offer a public API (as far as I know). There is a possibility of concluding the URLs and thus making the requests, but it does not seem to be a "clean" approach.
There is another option (in my opinion a better one), where you use PubMed API to do the job. As far as I know, there is no JavaScript wrapper for that, so it has to be written.

Either way, I would like to participate somehow in the project by, for example, writing a JS module for PubMed API (I've already created a PubChem API wrapper). I see myself rather as a hobbyist JS programmer, since I'm still a PhD student (Chemistry), but I'll be glad to help.

"Open in Finder"

Would be nice to have an "Open in Finder" option when reading a paper that just open the folder where the data is stored

Decentralised Web Summit demo

Science Fair will be demoed at the Decentralised Web Summit by @Karissa

This is the stuff we need to do to prep:

Working in the dat branch...

Harmless dtrace-provider error traces printed to console

The bunyan logging library is used by one of our dependencies, and it tries to import native bindings for error trace reading. For whatever reason the library that provides those readings, dtrace-provider, doesn't rebuild properly for electron, so the import fails. Three errors are printed - they're harmless but it would be good to get rid of them eventually.

Track progress on this in bunyan here: trentm/node-bunyan#216 and here: trentm/node-bunyan#487

search never times out

Was searching for a keyword of which I suspect had no results. The page was left as "searching" without returning any results. I think it might be useful to provide some feedback so people know when there are no results. Perhaps sources scanned or similar, or time out after a while. Just so people don't get frustrated haha.

Possibly related to #66

Install problems (SQLite bindings related)

Tried to run sciencefair on my local machine on Node 5.1.1.

Uncaught Error: Cannot find module '/private/tmp/sciencefair/node_modules/sqlite3/lib/binding/electron-v0.36-darwin-x64/node_sqlite3.node'

Anything obvious that, I'm missing?

What would be nice is if we had prerelease packages for OSX/Win just so we can demo it. Would that make sense at this stage?

Setup code signing for macOS and windows builds

Alpha and development builds are blocked by macOS Gatekeeper.

Builds should be auto-signed by electron-builder (see #44 & #49).

  • buy mac developer account
  • generate app certificates
  • sign certificates and store securely for CI retrieval
  • setup certificate urls and passwords as encrypted variables in CI settings
    • travis
    • appveyor
  • test code signing of build artifacts
    • macOS
    • windows

Package idea: summary dashboard

Show a dashboard summarising search results, perhaps sitting in the space to the right of the search bar, with cards that can also be separate packages.

For example:

  • histogram of date distribution
  • top ten authors by number of authored papers in the result set
  • top ten annotations of any given kind (see #16)
  • most cited papers in the results

include example db

Currently when we start in dev mode we download an example db using dat, but while we're still rapidly iterating it might be easiest to just bundle the example db with the app, as it's pretty small.

Lens view not loading, locking up app

[Beta6] After successfully downloading papers, double clocking them from Saved does not load Lens. Furthermore, while hover highlighting is still present, all UI elements lose click interaction - the app's UI is essentially locked up after attempting to read a paper.

Would be good to know what the software actually aims to do

Hi I came and checked it out but have no idea what Science Fair is meant to do, or who it's for. Maybe add a sentence or two about the project and what it is trying to achieve, so people can then evaluate and comment on the basis of the project's goals?

I am sure that would help others who come visit too. And congrats on finally getting a big project out the door.

[Reader] Search in article

Hey, I guess the amazing Lens reader rely on the browser search functionalities?
How do we search from the electron app?

Show a thumbnail for each paper

@freeman-lab's pdf-to-png allows creating a thumbnail from a PDF.

It will be slow to generate these on the fly for each client - it requires downloading a full PDF to create the thumbnail. So a nice setup task is to generate a dataset of thumbnail images from all the papers in our set.

We can start with EuropePMC - download all the PDFs and use pdf-to-png to generate thumbnails with DOIs as filenames. But it should be equally doable for all the open access sources, and even for non-OA papers a thumbnail should be legitimate.

It would be cool to put the images somewhere reusable and behind a nice API.

Linking figures (with thumbnails) to papers

It would be cool to associate individual figures with each paper, and provide thumbnails that can be followed to the full-size images.

I solved a good chunk of this problem for a related project, but the solution only works for articles in EuropePMC: open_access_figures.

The getfigures script there runs getpapers with a user-specified query to download the XML and figure images (where available) for all papers matching the query in EuropPMC. It then parses the XML to identify the figures and extract the captions, and it also generates URLs linking to the thumbnails on EuropePMC (which are predictable once you have the full image filenames).

So, I think the initial goal should be to generate the following:

  • a dataset containing all the figures from EuropePMC
  • another with the thumbnails for those figures
  • metadata for each article - an array of figures with:
    • caption
    • thumbnail (url / checksum)
    • full figure image (url / checksum)

Here's how to achieve that:

  • the captions can be generated using the EuropePMC fulltext dumps here:
  • the full figures can be pulled using getpapers (or the EuropePMC api directly)
  • the thumbnails can be scraped once the full images are pulled, the same way as in the getfigures script linked above.

Help and ideas very welcome. I'm happy to do this myself, but won't get to it for at least a few days, possibly longer.

Distributed search index

Just an issue to track ideas on how to distribute the search index generated from the initialization step

beta3 .deb Ubuntu install just yields an empty window

Very exciting project. I'm really looking forward to using it.

When I install 1.0.0-beta3 on Ubuntu 16.04 using the deb the install appears to run fine, but when I launch the application I just get an empty gray window:

screenshot from 2017-05-03 21-23-44

Windows leveldb LOCK issues

On Linux and OSX, beta9 seems to work pretty well. On my rather paltry windows testing machine however, the app appears to complete the initial loading and presents a search screen, but never returns any results.

When I open the devtools console (Ctrl Shift I or F12), I get an error from leveldb, that the process cannot get a handle on the LOCK file.

I initially thought that this was a problem with the way leveldb constructs the LOCK file path (i.e. with a / as opposed to an OS-specific path separator, but after trying to manipulate the path inside a running electron instance I don't think that's true.

I'm looking for anyone with a Windows machine (preferably better than my netbook) and some knowledge of levelDB to help debug. If any interested parties could download beta9, run it, and if anything seems off open the console and paste the error here I'd appreciate it.

If anyone can offer any insight into the issue (assuming it is reproducible), that would be even better.

cmd+a doesn't work in search bar

I wanted to select all text to clear it but it wouldn't work. Perhaps b/c preventDefault is called? Idk haha. Anyway: figured feedback might be useful (:

Package idea: premined terms packages

EuropePMC runs various text mining pipelines on their papers. We can get the datasets and make a sciencefair package for each one.

For example, adding eupmc-premined-genes would get the genes dataset. Now when you search for a gene name, you not only get the papers with that gene name in their title, but also those with that gene annotated in the text. The annotations could also be displayed inside lens.

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.