21367: Add arvados virtualenv to $PATH
[arvados.git] / README.md
index 6144ec5d9b68475254c397783e6b11d9a3f2b254..fced2eb5b72637a45a0577118151352a7f89091c 100644 (file)
--- a/README.md
+++ b/README.md
-# Google API Client
+[comment]: # (Copyright © The Arvados Authors. All rights reserved.)
+[comment]: # ()
+[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0)
 
-<dl>
-  <dt>Homepage</dt><dd><a href="http://www.github.com/google/google-api-ruby-client">http://www.github.com/google/google-api-ruby-client</a></dd>
-  <dt>Authors</dt><dd>Bob Aman, <a href="mailto:sbazyl@google.com">Steven Bazyl</a></dd>
-  <dt>Copyright</dt><dd>Copyright © 2011 Google, Inc.</dd>
-  <dt>License</dt><dd>Apache 2.0</dd>
-</dl>
+[![Join the chat at https://gitter.im/arvados/community](https://badges.gitter.im/arvados/community.svg)](https://gitter.im/arvados/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) | [Installing Arvados](https://doc.arvados.org/install/index.html) | [Installing Client SDKs](https://doc.arvados.org/sdk/index.html) | [Report a bug](https://dev.arvados.org/projects/arvados/issues/new) | [Development and Contributing](CONTRIBUTING.md)
 
-[![Build Status](https://secure.travis-ci.org/google/google-api-ruby-client.png)](http://travis-ci.org/google/google-api-ruby-client)
-[![Dependency Status](https://gemnasium.com/google/google-api-ruby-client.png)](https://gemnasium.com/google/google-api-ruby-client)
+<img align="right" src="doc/images/dax.png" height="240px">
 
-## Description
+[Arvados](https://arvados.org) is an open source platform for
+managing, processing, and sharing genomic and other large scientific
+and biomedical data.  With Arvados, bioinformaticians run and scale
+compute-intensive workflows, developers create biomedical
+applications, and IT administrators manage large compute and storage
+resources.
 
-The Google API Ruby Client makes it trivial to discover and access supported
-APIs.
+The key components of Arvados are:
 
-## Install
+* *Keep*: Keep is the Arvados storage system for managing and storing large
+collections of files.  Keep combines content addressing and a
+distributed storage architecture resulting in both high reliability
+and high throughput.  Every file stored in Keep can be accurately
+verified every time it is retrieved.  Keep supports the creation of
+collections as a flexible way to define data sets without having to
+re-organize or needlessly copy data. Keep works on a wide range of
+underlying filesystems and object stores.
 
-Be sure `http://rubygems.org/` is in your gem sources.
+* *Crunch*: Crunch is the orchestration system for running [Common Workflow Language](https://www.commonwl.org) workflows. It is
+designed to maintain data provenance and workflow
+reproducibility. Crunch automatically tracks data inputs and outputs
+through Keep and executes workflow processes in Docker containers.  In
+a cloud environment, Crunch optimizes costs by scaling compute on demand.
 
-For normal client usage, this is sufficient:
+* *Workbench*: The Workbench web application allows users to interactively access
+Arvados functionality.  It is especially helpful for querying and
+browsing data, visualizing provenance, and tracking the progress of
+workflows.
 
-    $ gem install google-api-client
+* *Command Line tools*: The command line interface (CLI) provides convenient access to Arvados
+functionality in the Arvados platform from the command line.
 
-## Example Usage
+* *API and SDKs*: Arvados is designed to be integrated with existing infrastructure. All
+the services in Arvados are accessed through a RESTful API.  SDKs are
+available for Python, Go, R, Perl, Ruby, and Java.
 
-    # Initialize the client & Google+ API
-    require 'google/api_client'
-    client = Google::APIClient.new
-    plus = client.discovered_api('plus')
+# Quick start
 
-    # Initialize OAuth 2.0 client    
-    client.authorization.client_id = '<CLIENT_ID_FROM_API_CONSOLE>'
-    client.authorization.client_secret = '<CLIENT_SECRET>'
-    client.authorization.redirect_uri = '<YOUR_REDIRECT_URI>'
-    
-    client.authorization.scope = 'https://www.googleapis.com/auth/plus.me'
+To try out Arvados on your local workstation, you can use Arvbox, which
+provides Arvados components pre-installed in a Docker container (requires
+Docker 1.9+).  After cloning the Arvados git repository:
 
-    # Request authorization
-    redirect_uri = client.authorization.authorization_uri
+```
+$ cd arvados/tools/arvbox/bin
+$ ./arvbox start localdemo
+```
 
-    # Wait for authorization code then exchange for token
-    client.authorization.code = '....'
-    client.authorization.fetch_access_token!
+In this mode you will only be able to connect to Arvbox from the same host.  To
+configure Arvbox to be accessible over a network and for other options see
+http://doc.arvados.org/install/arvbox.html for details.
 
-    # Make an API call
-    result = client.execute(
-      :api_method => plus.activities.list,
-      :parameters => {'collection' => 'public', 'userId' => 'me'}
-    )
+# Documentation
 
-    puts result.data
+Complete documentation, including the [User Guide](https://doc.arvados.org/user/index.html), [Installation documentation](https://doc.arvados.org/install/index.html), [Administrator documentation](https://doc.arvados.org/admin/index.html) and
+[API documentation](https://doc.arvados.org/api/index.html) is available at http://doc.arvados.org/
 
-## API Features
+If you wish to build the Arvados documentation from a local git clone, see
+[doc/README.textile](doc/README.textile) for instructions.
 
-### API Discovery
+# Community
 
-To take full advantage of the client, load API definitions prior to use. To load an API:
+[![Join the chat at https://gitter.im/arvados/community](https://badges.gitter.im/arvados/community.svg)](https://gitter.im/arvados/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
 
-    urlshortener = client.discovered_api('urlshortener')
+The [Arvados community channel](https://gitter.im/arvados/community)
+channel at [gitter.im](https://gitter.im) is available for live
+discussion and support.
 
-Specific versions of the API can be loaded as well:
+The [Arvados developement channel](https://gitter.im/arvados/development)
+channel at [gitter.im](https://gitter.im) is used to coordinate development.
 
-    drive = client.discovered_api('drive', 'v2')
+The [Arvados user mailing list](http://lists.arvados.org/mailman/listinfo/arvados)
+is used to announce new versions and other news.
 
-Locally cached discovery documents may be used as well. To load an API from a local file:
+All participants are expected to abide by the [Arvados Code of Conduct](CODE_OF_CONDUCT.md).
 
-    doc = File.read('my-api.json')
-    my_api = client.register_discovery_document('myapi', 'v1', doc)
+# Reporting bugs
 
-### Authorization
+[Report a bug](https://dev.arvados.org/projects/arvados/issues/new) on [dev.arvados.org](https://dev.arvados.org).
 
-Most interactions with Google APIs require users to authorize applications via OAuth 2.0. The client library uses [Signet](https://github.com/google/signet) to handle most aspects of authorization. For additional details about Google's OAuth support, see [Google Developers](https://developers.google.com/accounts/docs/OAuth2). 
+# Development and Contributing
 
-Credentials can be managed at the connection level, as shown, or supplied on a per-request basis when calling `execute`.
-    
-For server-to-server interactions, like those between a web application and Google Cloud Storage, Prediction, or BigQuery APIs, use service accounts.
-
-    key = Google::APIClient::KeyUtils.load_from_pkcs12('client.p12', 'notasecret')
-    client.authorization = Signet::OAuth2::Client.new(
-      :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
-      :audience => 'https://accounts.google.com/o/oauth2/token',
-      :scope => 'https://www.googleapis.com/auth/prediction',
-      :issuer => '123456-abcdef@developer.gserviceaccount.com',
-      :signing_key => key)
-    client.authorization.fetch_access_token!
-    client.execute(...)
-    
-    
-### Batching Requests
-
-Some Google APIs support batching requests into a single HTTP request. Use `Google::APIClient::BatchRequest`
-to bundle multiple requests together.
-
-Example:
-
-    client = Google::APIClient.new
-    urlshortener = client.discovered_api('urlshortner')
-    
-    batch = Google::APIClient::BatchRequest.new do |result|
-        puts result.data
-    end
-    
-    batch.add(:api_method => urlshortener.url.insert, 
-              :body_object => { 'longUrl' => 'http://example.com/foo' })
-    batch.add(:api_method => urlshortener.url.insert, 
-              :body_object => { 'longUrl' => 'http://example.com/bar' })
-    client.execute(batch)
-    
-Blocks for handling responses can be specified either at the batch level or when adding an individual API call. For example:
-
-    batch.add(:api_method=>urlshortener.url.insert, :body_object => { 'longUrl' => 'http://example.com/bar' }) do |result|
-       puts result.data
-    end
-
-### Media Upload
-
-For APIs that support file uploads, use `Google::APIClient::UploadIO` to load the stream. Both multipart and resumable
-uploads can be used. For example, to upload a file to Google Drive using multipart
-
-    drive = client.discovered_api('drive', 'v2')
-   
-    media = Google::APIClient::UploadIO.new('mymovie.m4v', 'video/mp4')
-    metadata = {
-        'title' => 'My movie',
-        'description' => 'The best home movie ever made'
-    }
-    client.execute(:api_method => drive.files.insert,
-                   :parameters => { 'uploadType' => 'multipart' },
-                   :body_object => metadata,
-                   :media => media )
-   
-To use resumable uploads, change the `uploadType` parameter to `resumable`. To check the status of the upload
-and continue if necessary, check `result.resumable_upload`.
-
-    client.execute(:api_method => drive.files.insert,
-               :parameters => { 'uploadType' => 'resumable' },
-               :body_object => metadata,
-               :media => media )
-    upload = result.resumable_upload
-
-    # Resume if needed
-    if upload.resumable?
-        client.execute(upload)
-    end
-
-## Command Line
-
-Included with the gem is a command line interface for working with Google APIs.
-
-    # Log in
-    google-api oauth-2-login --client-id='...' --client-secret='...' --scope="https://www.googleapis.com/auth/plus.me"
-
-    # List the signed-in user's activities
-    google-api execute plus.activities.list --api=plus -- userId="me" collection="public"
-
-    # Start an interactive API session
-    google-api irb
-    >> plus = $client.discovered_api('plus')
-    >> $client.execute(plus.activities.list, {'userId' => 'me', 'collection' => 'public'})
-    => # returns a response from the API
-
-For more information, use `google-api --help`
-
-## Samples
-
-See the full list of [samples on Google Code](http://code.google.com/p/google-api-ruby-client/source/browse?repo=samples).
-
-
-## Support
-
-Please [report bugs at the project on Google Code](http://code.google.com/p/google-api-ruby-client/issues/entry). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
+See [CONTRIBUTING](CONTRIBUTING.md) for information about Arvados development and how to contribute to the Arvados project.
 
+The [development road map](https://dev.arvados.org/issues/gantt?utf8=%E2%9C%93&set_filter=1&gantt=1&f%5B%5D=project_id&op%5Bproject_id%5D=%3D&v%5Bproject_id%5D%5B%5D=49&f%5B%5D=&zoom=1) outlines some of the project priorities over the next twelve months.
 
+# Licensing
 
+Arvados is Free Software.  See [COPYING](COPYING) for information about the open source licenses used in Arvados.