Mailspring/CONTRIBUTING.md
2015-10-07 21:54:02 +01:00

3.8 KiB

Contributing to N1 Core

Thank you for contributing!!

N1 core is the foundation our community uses to build email extensions with the modern web.

You currently need an early invitation code to get setup on N1. Sign up here to request one. Drop us a line saying you'd like to contribute to N1 core and we'll get you set up immediately.

Pull requests

We require all authors sign our Contributor License Agreement when submitting pull requests. (It's similar to other projects, like NodeJS or Meteor.)

Getting Started

Important! To build N1, you need to use Node 0.10.x. You can use nvm to run Node 0.10.x alongside your existing version.

Once you have an invitation code:

git clone https://github.com/nylas/N1.git
cd N1
script/bootstrap

Read the getting started guides.

Running N1 Core

./N1.sh --dev

Once the app boots, you'll be prompted to enter your early invitation code and email credentials.

Our early invitation codes are designed control access to our production mail sync engine while we roll out N1. However, the sync engine is open source and you can set it up yourself to begin using N1 immediately. Follow instructions on the sync engine repository.

Testing N1 Core

./N1.sh --test

This will run the full suite of automated unit tests. We use Jasmine 1.3.

It runs all tests inside of the /spec folder and all tests inside of /internal_packages/**/spec

Building

Once you've checked out N1 and run script/bootstrap, you can create a packaged version of the application by running script/build. Note that the builds available at https://nylas.com/N1 include licensed fonts, sounds, and other improvements. If you're just looking to run N1, you should download it there!

Running Against Open Source Sync Engine

N1 needs to fetch mail from a running instance of the Nylas Sync Engine. The Sync Engine is what abstracts away IMAP, POP, and SMTP to serve your email on any provider through a modern, RESTful API.

By default the N1 source points to our hosted version of the sync-engine; however, the Sync Engine is open source and you can run it yourself.

  1. Go to https://github.com/nylas/sync-engine for instructions on how to get the Sync Engine running on a Vagrant virtual machine.

  2. Open up src/flux/nylas-api.coffee and change the @APIRoot variable to point to your Sync Engine instance.

  3. After you've linked accounts to the Sync Engine, populate your ~/.nylas/config.cson as follows. You can get a list of connected accounts and their attributes from the /accounts endpoint (ex. http://localhost:5555/accounts):

     "*":
       nylas:
         accounts: [
           {
             server_id: "{ACCOUNT_ID_1}"
             object: "account"
             account_id: "{ACCOUNT_ID_1}"
             name: "{YOUR NAME}"
             provider: "{PROVIDER_NAME}"
             email_address: "{YOUR_EMAIL_ADDRESS}"
             organization_unit: "{folder or label}"
             id: "{ACCOUNT_ID_1}"
           }
           {
             server_id: "{ACCOUNT_ID_2}"
             object: "account"
             account_id: "{ACCOUNT_ID_2}"
             name: "{YOUR_NAME}"
             provider: "{PROVIDER_NAME}"
             email_address: "{YOUR_EMAIL_ADDRESS}"
             organization_unit: "{folder or label}"
             id: "{ACCOUNT_ID_2}"
           }
         ]
         accountTokens:
           {ACCOUNT_ID_1}: "{ACCOUNT_ID_1}"
           {ACCOUNT_ID_2}: "{ACCOUNT_ID_2}"