Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News CanJS 3.0 Release Breaks Framework into Smaller Modules

CanJS 3.0 Release Breaks Framework into Smaller Modules

Bitovi has released version 3.0 of JavaScript framework CanJS. CEO Justin Meyer said the release "ultimately represents an understanding and embrace of CanJS's identity — adapt or die."

Starting life in 2007 as part of JavaScriptMVC, a "monolithic" JavaScript framework, CanJS was one of a number of projects split out .Almost 10 years after its initial launch, the 3.0 update brings new features for developers.

Among the technical improvements in the latest release are steps to make the CanJS model layer and observable objects more powerful and easier to use. Significantly, the 3.0 release sees the framework broken up into even smaller modules.

Chasen Le Hara is the developer evangelist for Bitovi, the company behind CanJS. Speaking directly to InfoQ, Le Hara explained the changes made to CanJS.

"Big upgrades are tough on projects because they’re 'all or nothing': developers have to work through all of the breaking changes in one go. Worse, is that if something 'old' is removed, devs have to make the choice to either upgrade to the replacement, or not upgrade at all," Le Hara said.

"We’ve experienced this with one of our tempting languages (can-ejs), that was deprecated years ago, but we still wanted to support our community members that are still using it. Now that it lives as its own project, it can be maintained without holding back the main project.

Le Hara said that splitting CanJS into smaller modules helps the team (and the community) experiment with new tech.

"There are lots of projects in our ecosystem that don’t have to be shipped in the main module," Le Hara said and "it’s easier to switch out modules when you want to experiment with something new. We’re doing that with our can-stream and can-define-stream libraries, which integrate with Kefir" to make functional reactive programming easier.

Improvements made to the CanJS model layer, can-connect, include abstracting features including memory management, automatic list updates, and fall-through caching. Le Hara told InfoQ that by including the features in the library it is easier for developers to include the features in their apps "without having to deal with the complexity of writing them on their own."

CanJS is a decade old in 2017, and while Le Hara says the community is "still discussing" its priorities, there are plans for improving the framework's modules to work well with other projects and new tech. The can-connect model layer was designed to work with projects such as Angular and React, and the team are reaching out for contributors familiar with the technologies to work out the best way to integrate with them.

Open source and released via the MIT licence, InfoQ readers are encouraged to contribute to CanJS. The project's contributing guides are the best place to start, with info on how to report bugs and suggest features. The CanJS forums and Gitter chat are also active, and welcome for developers new to the project.

Rate this Article