A lot goes on in Dojo each week and in the past we haven’t done a great job of telling the world about it. As we begin this new chapter (working towards Dojo 2), we will be publishing a weekly update that gives some insight into what was accomplished the previous week, our goals for this week (in case you want to get involved), and a brief agenda for the weekly IRC meeting.
In preparation for the 1.11 release planned for late Spring, we are landing high quality pull requests to fix various bugs and add enhancements to the dojo, dijit, and dojox packages.
Improvements this week
- Fix for dijit Tree node rename when textDir is auto (#18543)
- Convert LocalStorageProvider to AMD (#18565)
- Add Basque language support (#18560)
- Fix reconnect options for dojox/socket (#17761)
- Fix RangeSlider callback notifcations (#18381)
Last week in Dojo 2
Package Template Updates
We are using this package template as the starting point for creating the Dojo 2 packages. Key changes to it were to enable TypeScript build and testing support for both atom-typescript and the included Grunt task, as well as support for a new combined CJS+AMD module format that supports both CJS and AMD in an exported module, but does not export a global like UMD. The main benefit of this is to prevent the need to compile all code twice for Node.js/io.js and browser usage of modules.
Package combination discussion
We discussed whether it truly makes sense for each package to be delineated as described on the Dojo 2 roadmap. The challenge is that some of these packages are dependent on each other, and to make them truly stand-alone in all cases may require a lightweight version of the API in one place, and then a duplicate but more complete implementation in a child package. This would be fine if they were large packages, but some of these packages are not expected to be very large. Some of these packages cannot easily be stand-alone without a shim when native capabilities aren’t available.
The current plan for each package is:
- loader: remains stand-alone package
- platform: combine with core
- async: combine with core
- stream: keep stand-alone or combine with core (TBD)
- io: combine HTTP client with core, leave remainder as stand-alone package
- core: remains stand-alone, add core events, io, async, platform, and perhaps stream
- dom/html: remains stand-alone, add DOM events
- i18n: remains stand-alone
- dstore: remains stand-alone
- parser: remains stand-alone, in the future it may make sense to combine with dom/html
- history/routing: remains stand-alone
- crypto: remains stand-alone
- events: split into core events and DOM events and merge into respective core and dom packages
These decisions may change as get further along and revisit our options, but for now, we want to find a good balance between separate packages and ease of development experience.
This week’s Dojo 2 goals
Publish initial packages
We are working on getting the repositories in shape so that we can open them up to the community to start contributing!
We hope to have a working draft of readable streams complete, and progress made on writable streams.
- platform: We expect to have some initial shims complete, and some work on polyfills.
- async: pre-alpha implementation
- object copying: pre-alpha implementation
- string functions: pre-alpha implementation
- comparison: pre-alpha implementation
TypeScript compiler improvements
To improve the developer workflow, we will be making improvements to the TypeScript compiler.
These improvements include
- Source map generator should be configurable to inline the TS content into the source maps rather than having to keep separate files
- tsconfig.json should allow globbing
Browser support decision
We are currently discussing which minimum version of IE and browsers for Android we should support. For IE, we are deciding between IE9 and IE11. The popular decision is to start with IE11, but some dependencies such as Intern prefer having a core that is more widely compatible, if the effort to support IE9 for core is not substantially greater than IE11.
Similarly, we are analyzing current Android market share and effort to support Android versions to determine what the earliest version of either Android browser or Chrome for Android that Dojo 2 should officially support. It is worth noting that the core packages may support a more conservative list of browsers, whereas the widgets and other features on top of them may choose to support only more modern browsers.
Weekly IRC meeting
As usual, our weekly IRC meeting is on irc.freenode.net #dojo-meeting at 9am Pacific time.
Last week we discussed
- Why TypeScript was selected
- interfaces, export to AMD/CJS/ES2015, typing, and an extensible compiler
- Current status of class declaration and multiple inheritance with TypeScript
- ES 2015 module syntax
- GFX/charting and widgets in the Dojo 2 story
- Not yet defined, but expected to be their own top level packages
- Why crypto is a separate top level package
- To make it easy to remove
- New website feedback
- Current status of 1.11
- Waiting on flat theme work to be completed before finalizing the release plan
This week’s agenda
- Core package consolidation: Discussion of included modules & approach
- Dojo 2 Browser Support Decision
- General community and contributor feedback to the Dojo 2 roadmap
- Any pressing issues with 1.x
Thanks to everyone for their valuable contributions this past week! Please let us know if you’d like to help out too!