DoneJS Contributors Meeting – 2017-05-19


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


Live Stream:


Last week:

Next week:

  • Update the DoneJS chat presentation to 1.0
  • Continue working on the migration guide blog post
  • Work on other outside evangelism


Last week

  • Worked on a blog post about the upcoming streaming strategies we are pursuing in DoneJS.
  • Updated done-ssr to support setting the navigator.language field.
  • Refactored done-ssr so that it can support multiple rendering strategies in preparation for the “streaming instructions” strategy.

Next week

  • Publish the blog article.
  • Implement the streaming instructions strategy.


Last Week

  • working on can-reflect (can-stache done, finishing up can-stache-bindings)
  • presented at Indy.js
  • published Testee 0.5.1

Next Week

  • continue on can-reflect

Topic: What is can-reflect?


Last Week

  • bit-docs-generate-html
    • Implement Strategy for clearing localStorage in the search when the seachMap changes (searchMapHash)
    • v0.5.0 Release - Remove searchMap generation logic
    • v0.6.0 Release - Allow has syntax in linking like: [some-name#someSectionId]
  • bit-docs-html-canjs
    • v0.5.1 Release
      • Only pushState to urls with same protocol
      • Search - wait until we get a new searchMap before clearing localStorage
      • Search - rewrite to be es5
    • v0.5.2 and v0.5.3 - es6 -> es5 cleanup
  • Created bit-docs-generate-searchmap

Next Week

  • Deploy CanJS Site Search!
  • Move search functionality out of bit-docs-html-canjs into its own repo (issue)
  • Back to can-stache-animate


Last Week

Next Week

  • Add the “slim” format to transpile and put together a working example with the minimal loader.


Attendees: @bmomberger-bitovi @chasen @cherif_b @kdillon @matthewp @mickmcgrath13 @phillipskevin

Discussed topics:

What is can-reflect?

  • Based on Reflect API, which standardizes the APIs for things like getting and setting properties so code can work with any kind of object
  • Reflect JS Bin example
  • can-reflect: same idea as the Reflect API, for CanJS observables
  • We’re in the process of changing all of our code to use can-reflect
  • Benefits:
    • Speed! can-stache will also be updated to use can-observation, making it upwards of 30% faster
    • Makes it easier to use different types of observables in the same codebase, i.e. an app using can-map can start to use can-define/map/map more easily
    • Enables easier interoperability with new types, e.g. Kefir.js streams, RxJS streams, etc.
    • Building modules that work with CanJS observables will be significantly easier

We briefly discussed FuncUnit QUnit 2 support.


@BigAB pointed out that my Reflect example is not actually correct. Reflect.set does not actually do the same thing as Map.prototytpe.set when called on a Map instance. Hopefuly this example will clarify:

var map = new Map();
map.set('hello', 'world');
Reflect.set(map, 'hello', 'universe');

Running this code ends up with map looking like:

This shows that Reflect.set(map, 'hello', 'universe'); is just doing map['hello'] = 'universe'; and not correctly setting the value internally on the map.

The point that this example was trying to make was that Reflect will smooth out APIs to work across different object types. This isn’t actually true with Reflect, but is true with can-reflect. Although this example is bad, hopefully it still explains what can-reflect is trying to do.


Right click should now send PointerEvents like all other forms of mouse-interaction. Note that PointerType is set to mouse by default, even on touch devices. We are still working on a system that will allow for more flexibility for emulating device environment.


@kdillon I’ve been thinking that a good way to organize the code might be event streams. We’d let people dispatch generic interactions, then depending on the browser, these would result in dispatched events.