Labs/Jetpack/Reboot/Best Practices

< Labs‎ | Jetpack‎ | Reboot
Revision as of 18:22, 5 February 2010 by Dandonkulous (talk | contribs)

The following are best practices for reboot development. Nothing is (yet) set in stone, so propose and debate and stuff.

We also need to cover:

  • how to namespace packages (e.g., require("foo/bar/baz"))
  • out-of-code documentation (e.g., tutorials and guides)
  • unit testing
  • memory leak detection
  • module unloading
  • security
  • localization
  • API design
  • Some Cuddlefish modules, like file.js, take pains to be broadly compatible as JS modules and loadable as-is in Web pages, in addition to being SecurableModules used in Jetpack. Do we really want to go that route for all modules?
  • Creating code that can exist side-by-side with different versions of itself; implies not mutating the outside environment in certain ways.
  • When creating objects, do we want jetpack.thing() or new jetpack.Thing()?
    • Atul has found the case of forgetting the "new" operator to be unforgivingly difficult to debug.
    • Atul has also found that "new" operator problems are hard to debug when the operator associates w/ a different operand than one intends, e.g. new require("foo").Bar().