DoneJS Contributors Summary – 2017-10-06


Please add topics for discussion (and your status if you’re a contributor).

We did not have a livestream. Catch us next week on Friday, October 13th at 8:30 am Pacific.



Possible Topics for Discussion:

If only we had a tool to transpile our ES6 Code to ES5

I think we should consider writing our framework tools using ES6 instead of sticking to ES5. I have grown accustomed to the convenience and signal-to-noise ratio of ES6 features and when working on our OS stuff I find our adherence to ES5 syntax makes our code harder to follow and lacking conveniences like arrow function and the spread operator. It’s 2017 now, it’s time to use ES2015. We can transpile with steal to keep browser support.

(One exception might be aysnc/await and generators, as the transpiled code gets very very large quickly)

Stache should take an ES Observable by default

After watching Justin’s kefir-stream demo I was amazed to see we could just use the .value helper to get a value out of a kefir-stream. Which got me thinking, what if streams, or specifically the proposed ES Observables, were the default way of using stache, aka not the .value thing, and we just made a special case to easily recognize can-observables?

Then anyone could use stache for a view layer / template, with any observable/stream (Rx, Kefir, xstream… etc), with just a simple adapter to and from ES observables (Kevin has written all these adapters already, I think). Stache would no longer be only usable by can-js and I think could open up more possibilities and maybe get more contributors.

We wouldn’t lose anything either as we could just have the special could just have the special case be our can-observables

Interop with a standard (proposed at least) would be great, as well as defining a nice isolation boundry for stache and view stuff within can.


Last week:

Next week: work with a designer and Build prototype of new sidebar


Last Week:

  • Published CanJS 2.3.33 with memory leak fix
  • Fixed several issues in IE9, IE10, and safari for CanJS 3.11.0
  • Published can-define-lazy-value
  • All issues closed for CanJS 3.11.0 - release on the way

Next Week:

  • Blog post about can-define-lazy-value
  • DoneJS Silicon Valley - File System Navigator
  • Working on can-stache@4.0


@bigab, this has been a common discussion topic. Transpiling would be fine for “single export” packages. For example, packages like can-observation where no one should be importing can-observation/something-else. However, packages like can-connect would be tricky. We’d keep everything in a src folder, but on publish, need to “build” to the root folder. I think this would get messy.

This gets even trickier with tests, all of which are imported like package-name/some-module.

Some care would need to be taken to make sure all of these parts work together.


Last week

  • I Opened a PR in can-stach to fix this
  • I Opened a PR in can-view-parser to fix this issue

Next week


@bigab one more thought … in 4.0, I think we might drop support for IE. This would enable much of the features you wanted.


This past week:

  • Created a fast utility that detects cyclic package dependencies (detect-cyclic-packages in npm)
  • Created a Landscaper job that adds the above utility to npm test scripts (detect-cycles-codemod)
  • Removed cycles from most CanJS packages (can-util, can-vdom, can-view-parser, can-attribute-encoder)
    • can-connect <-> can-fixture remain dependent on each other
    • done-serve is still in some devDependencies; the script is configured to ignore it
  • Fixed can-reflect so tests work again on Win10/Edge
  • put out a minor release of can-define that adds .update() and .assign(), and deprecates the .set(Object) pattern
  • Fixed broken Travis tests for can-element, can-validate, and can-validate-validatejs
  • Released a patch version of can-view-scope fixing a longstanding bug where automatically generated Refs scopes on a Scope weren’t actually Scopes.

Next week:

  • Flesh out the features of can-observe


Yeah, I’m not saying we should bundle them necessarily, just use babel (one way or anther) so we can use ES2015 features and maybe convert the ESM imports to CJS imports


Last Week:

  • created Outline for DoneJS React talk
  • created some issues for steal and RVM for demo
  • learned all about how Done-SSR and Zones work
  • worked on demo for DoneJS React talk

This week

  • finish React talk demo
  • polish up Done-SSR react guide