Skip to content

Latest commit

 

History

History
93 lines (66 loc) · 6.71 KB

tech-behind-calypso.md

File metadata and controls

93 lines (66 loc) · 6.71 KB

The Technology Behind Calypso

Understanding the technologies and abstractions on which Calypso is built can make for a much better learning and building experience. Even if you are a student of the “learning by doing” school, we would still encourage you spend some time with the resources in this document.

No Big Famous Framework

Calypso is using neither Angular nor Ember; because we are building Calypso for the long haul, updating and improving a home-grown framework is a better long-term approach for us. Currently, we're using React and Flux; they're great, but knowing we have the control to use better technologies as they come along makes us feel more confident in our future. Calypso isn't a small startup project; we know it will need to scale and our technology will need to scale with it.

Modern Modular JavaScript

Instead of a named framework, we decided to assemble our own out of small, focused JavaScript modules.

In the recent years, JavaScript went a long way from the language hidden behind jQuery selectors to the engine behind huge single-page applications and fast node.js async server-side daemons. ES6 is a confirmation the language is going in the right direction.

Here are few resources to get up to speed with “modern” JavaScript and ES6:

Key concepts checklist:

Do you know any good videos and presentations on the subject? If yes, please send a pull request to add them here.

React

React is a library by Facebook that implements a virtual DOM. Instead of carefully changing the DOM, we can just re-render whole components when the data changes. React radically simplified our code and allowed for an awesome composition of reusable components.

Here are some great React resources:

Key concepts checklist:

Git

Calypso is developed on Github, and we use Git extensively. Git is extremely powerful, and understanding how it works and controlling it are an important part of our daily workflow.

Essential Git resources:

Key concepts checklist:

  • How is Git different from Subversion?
  • How does branching work? Why are branches cheap?
  • What is rebasing? How is it different from merging?
  • What happens when we run git pull?
  • What’s a remote? What happens when we push to it?
  • Which parts of the repository are kept locally and which remotely?
  • What’s the staging area? Why is this extra step useful?
  • What is squashing? How can we edit and reorder commits before pushing/merging?

The way we use Git with Calypso is described in the Git Workflow document.

Other technologies used in Calypso, worth checking out:

  • page.js – router
  • express.js – light server-side framework we use to serve the initial page
  • lodash – general purpose utility library; includes a ton of useful functions for dealing with arrays, objects, and collections
  • webpack – building a JavaScript bundle of all of our modules and making sure loading them works just fine
  • make – our build tool of choice

Previous: Hello, World! Next: Contributing to Calypso