July 22, 2013
Why we've moved on from Chromium Embedded Framework (CEF)
We have used CEF for the past 2 years and been very impressed with the community, quality and overall utility of the project. It is a truly awesome tool that helps address some key problems in bringing HTML5 to desktop applications – CEF has certainly accelerated our development. Using its clean and easy to use interface to add HTML5 rendering to your application allows you to not worry too much about the underlying Chromium codebase which is quite complex.
However, the core problems we are addressing at OpenFin around security and truly native user experience for pure HTML5 applications are not in the forward path of the project so it was time for us to peel back our use of CEF and operate directly on the Chromium codebase. Doing this has required a big investment in getting up to speed on direct use of Chromium – navigating 25GB of code is not the easiest task – but will pay big dividends over time.
CEF integrates with the Chromium code using the Content API. This API was mainly introduced to make testing easier for those working on different parts of the code but it means that CEF and any other consumers of the Content API have to re-implement key, powerful, features that are available in the full Chromium browser.
Key missing features:
- Sandbox
- Desktop Notifications
- UI implementations for authentication challenges and SSL certificates
- Visually clean alert dialogs
- Support for clearing cache, data and cookies
- Managing unresponsive renderer processes
Perhaps even more compelling than having to re-implement/port some core features that are not present in the Content API is the Chromium team’s progress around packaged apps and its related API’s. These API’s expose many cross platform native windowing features in addition to the the ability to launch HTML5 applications outside of currently running browser context. Though this work is at a very early stage it is clear based on Chromium’s blistering delivery track-record that now is the right time to start leveraging as much of this work as possible. The gaps we will fill here have proven to be much smaller than the work we would have needed to do to continuing to come at it from the Content API.
So, to complete the move, we have retired quite a bit of our code that bridged the CEF gap in favor of leveraging the core Chromium components. This pruning process is not a one-time-event – as the packaged apps API matures and the Shell/NativeApp gets further refined we will be leveraging all of the powerful features that are exposed and closing the new gaps that are created.
CEF – thanks for getting us going – we have jumped from the nest…
Enjoyed this post? Share it!
Related Posts
All Posts ->Featured
Enhanced Deployment Flexibility with OpenFin's Fallback Manifests
Thought Leadership
Featured
ING Integrates OpenFin for Salesforce to Optimize Workflows
Thought Leadership