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

More Decks by Evan Morikawa

Other Decks in Technology


  1. None
  2. A sneak peek at an extensible mail client N1 Evan

    Morikawa | evan@nylas.com | @e0m
  3. Why build a mail client?

  4. Email is massive

  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)
  6. Email is the “Database of your life”

  7. Email has hundreds of uses

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

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

    very hard.
  10. N1 Screenshot

  11. Sidebar Screenshot

  12. Composer Templates Screenshot

  13. N1 Screenshot

  14. None
  15. None
  16. <MessageList />

  17. MessageStore <MessageList /> Dispatcher

  18. <TranslationWidget /> Re: ReactConf Europe To: ben@nylas.com

  19. Component regions in red

  20. Sidebar Screenshot

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

    sample code, etc.
  22. Next week, we’re open-sourcing N1. GPL v3 (Free for personal

  23. @e0m evan@nylas.com

  24. @e0m evan@nylas.com

  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.
  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
  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!
  28. Challenges 1. NodeJS is single-threaded 
 2. Windows live in

    separate processes
 3. Platform-specific styling an exercise to the reader
  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)
  30. Party on the Main Thread • Animations • Transitions •

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

  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
  33. Multi-window Flux Architecture Application Process Task Store ActionBridge QueueTask: Send

    Draft QueueTask: Send Draft ActionBridge DraftStore JSON via IPC
  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