Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MIT N1 Preview

Evan Morikawa
September 28, 2015

MIT N1 Preview

A preview of N1, the open source extensible email client.

Evan Morikawa

September 28, 2015
Tweet

More Decks by Evan Morikawa

Other Decks in Technology

Transcript

  1. View Slide

  2. A sneak peek at an extensible mail client
    N1
    Evan Morikawa | [email protected] | @e0m

    View Slide

  3. Why build a mail client?

    View Slide

  4. Email is massive

    View Slide

  5. ~200B Emails / day
    (Radicati Group April 2014)
    ~45B WhatsApp + FB (TechCrunch. Jan 2015)
    ~30B WeChat (Speculative. Equivalent DAU to WhatsApp)
    ~40B iMessage (Tim Cook 2014)
    ~0.5B Tweets (Twitter 2015)
    ~0.7B Snapchat (Verge 2014)
    ~0.01B Slack (FacstCompany, Feb 2015)

    View Slide

  6. Email is the “Database of your life”

    View Slide

  7. Email has hundreds of uses

    View Slide

  8. Email has hundreds of uses
    and old, inflexible interfaces

    View Slide

  9. Email is very valuable, but creating new
    email experiences is very hard.

    View Slide

  10. N1 Screenshot

    View Slide

  11. Sidebar Screenshot

    View Slide

  12. Composer Templates Screenshot

    View Slide

  13. N1 Screenshot

    View Slide

  14. View Slide

  15. View Slide


  16. View Slide

  17. MessageStore

    Dispatcher

    View Slide


  18. Re: ReactConf Europe
    To: [email protected]

    View Slide

  19. Component regions in red

    View Slide

  20. Sidebar Screenshot

    View Slide

  21. Next week, we’re launching N1.
    Hack away! Lots of docs, sample code, etc.

    View Slide

  22. Next week, we’re open-sourcing N1.
    GPL v3 (Free for personal use)

    View Slide

  23. View Slide

  24. View Slide

  25. Nylas API Platform
    • REST APIs for email,
    contacts, and calendar
    • Gmail, Exchange, iCloud,
    Yahoo, and hundreds more.
    • Powers email integration in
    CRMs, mobile apps, etc.
    Making email easy.

    View Slide

  26. N1 Mail Client
    • Clean, minimal foundation
    with “must-have” features
    • Robust APIs for dealing with
    threads, messages, etc.
    • Cross-platform: Mac,
    Windows, Linux
    • Easy to extend with modern
    technologies
    Making email easy.
    Nylas API Platform

    View Slide

  27. Why Electron?
    • Mac, Windows, Linux support
    • Great APIs for desktop integration
    • Support for C/C++ code via native modules
    • Atom = open-source sample code and tooling
    • Large numbers of developers know JavaScript, HTML, CSS,
    can write extensions easily!

    View Slide

  28. Challenges
    1. NodeJS is single-threaded 

    2. Windows live in separate processes

    3. Platform-specific styling an exercise to the reader

    View Slide

  29. Party on the Main Thread
    • BrowserWindows render and run JavaScript
    on the same thread.
    • All work is created equal. Great for a web
    server, not so great for a desktop app.
    • (Web Workers don’t get NodeJS integration)

    View Slide

  30. Party on the Main Thread
    • Animations
    • Transitions
    • Scrolling
    • User interaction
    • Applying mailbox changes
    • Running spellcheck
    • Downloading attachments
    • Running mail rules

    View Slide

  31. Party on the Main Thread

    View Slide

  32. Windows are process-isolated
    • No shared memory between windows
    • Messaging between windows requires hops
    through the parent application process
    • Major conceptual barrier to multi-window
    app development

    View Slide

  33. Multi-window Flux Architecture
    Application Process
    Task Store
    ActionBridge
    QueueTask:
    Send Draft
    QueueTask:
    Send Draft
    ActionBridge
    DraftStore
    JSON via IPC

    View Slide

  34. 1. JavaScript is single-threaded 


    2. Windows live in separate processes


    3. Platform-specific styling an exercise to the reader
    Move CPU-intensive tasks to a worker window
    Bridge Flux stores and actions across windows
    Fine-tune CSS to match platform standards

    View Slide