knockout.composite: Parting Thoughts and Future Directions
*UPDATE* Tribe is here! Check out http://tribejs.com/ for guides and API reference.
This is the final part of a multi-part series. Check out some of the earlier posts if you haven’t already.
Part 1: Introducing knockout.composite
Part 2: The Basics
Part 3: Getting Around
Part 4: Putting it All Together
Part 5: Unit Testing: Model Citizens
Part 6: Integration Testing: Playing Nicely Together
Part 7: Functional Testing: Automated UI Tests, Anywhere, Any Time
Part 8: Pack Your App and Make it Fly
Part 9: Parting Thoughts and Future Directions
Finally! We’re at the end of the series! Some parting thoughts before we call it a day…
First and foremost, knockout.composite is a version 0.1 product. It is being used in a production application with great success and stability, but it is not without it’s shortcomings.
The current version is a gradually evolved product and the need for a significant rewrite increases with each added feature. Some of the separate modules are quite tightly coupled; this could be significantly reduced with a better design. Subtle temporal couplings in panes can also be quite difficult to debug.
All this aside, we think even the current version knockout.composite offers some brilliant features and makes building high performance single page web apps easier than ever before. The next version will offer improvements in every area with increased flexibility and extensibility. If you’re interested in contributing, send me a tweet and we’ll take it from there.
*UPDATE*: v0.2 is coming, and it’s part of a much bigger vision we want you to see – get a glimpse here.
What’s Coming?
Devices, Devices, Devices
As mentioned in part 1, we think knockout.composite has great potential within the hybrid web / native mobile application space. Our focus over the next few months is to fine tune the whole experience for mobile devices and develop a set of themes for each operating system. Think single, highly testable codebase for every device, with the bonus of decent performance.
SOA
The composite application pattern is ideal for service oriented architectures. A autonomous business service can easily “own” application components and have them stitched in to applications simply and easily. Seamlessly integrating client and server side message buses makes developing client applications for message based architectures a breeze.
We’ll be releasing libraries to enable this seamless integration between knockout.composite and a range of messaging platforms, like NServiceBus, Azure Service Bus, etc.
Control Libraries
We’ve already got a stack of reusable controls, we intend to release these under an open source license for use in your application. CSS drives the look and feel, so customising each is straightforward.
Amongst Other Things…
Like state machines for navigation, extensible support for validation libraries, better memory management and debugging support, more out of the box transitions, more flexibility and extensibility. The list goes on.
Stay Tuned!
In the meantime, drop me a line and let me know what you think, get involved and help make the web a better place to develop.
10 Comments:
This was a sweet post series and I think you've built something very cool. Can't wait to see where it goes next :)
Thanks, man! That means a lot!
Hey mate, long time! I was awake at two in the morning last night (baby boy) and was thikning about the old times. :D Funny that we seem to have taken the same path...
http://davidprice.pen.io/
It's not 1.42AM here by the way! I live in London now.
hey -- Dave
A million big up's to you..
knockout.Composite is awesome..
like the way you do testing with QUnit and Sinon.
Thanks for sharing..
Thanks Mike! More cool stuff on the way!
Great article and amazing framework.... what type of browser compatability does it have so far? I noticed yoursports.net example displays a friendly "no support for this browser version" when I view it with IE<9.
Thanks Ben!
Good question. It works in IE<9, but there are significant memory leak issues in these browsers, performance tends to drop off fairly rapidly.
There is a workaround for this that I've tested reasonably successfully. There is an option you can set (ko.composite.options.navigateMode = 'refresh') that causes the page to refresh when navigating. It's less than ideal, but it seems to work for most scenarios.
Happy New Year Dale...
Looking forward to knockout.composite vNext
The next evolution is here! Check out http://tribejs.com/.
Post a Comment
Note: Only a member of this blog may post a comment.
<< Home