Interest in Cesium - Ozone integration

The Ozone Widget Framework (OWF) is now open-source with the release of version 7.0.
If you are not familiar with OWF, please see its web site at http://owfgoss.org.

In short, OWF provides a common JavaScript-based library to enable new and/or existing Web-based applications to become "widgets" within the Ozone marketplace. Using its toolset, a developer can enable completely separate applications to communicate with one another via an eventing API. Widgets can be dragged/dropped into their custom application stack accessible from a single place.

Many of the common uses of Ozone include mapping applications in one shape or form. For example, a data widget might contain information that can be geo-tagged. With the click of a button in this data widget an event can be sent that, say, a Google Maps widget listens for and then plots the location within its own widget.

Now, consider how cool it would be to include a Cesium widget within the Ozone community.

Therefore, I'd like to guage interest in a roadmap for an out-of-the-box Cesium widget for Ozone.

Right now, a developer can easily wrap their own Cesium application within an Ozone widget. However, the developer would need to define and write their own event listeners and eventing standards. After doing so, the widget's Cesium functionality may be mostly hidden or less applicable to other developers.

In coordination with the Cesium development team, I would like to begin work on such a solution but would like the community's input on how best to proceed.

In my opinion, the first question to ask is whether the Ozone integration should happen within Cesium or as an external "plugin". If an external plugin, we are able to start fresh in terms of defining possible new standards for how external plugins are defined and interact with Cesium (think jQuery plugins) since, as far as I know, there are currently no external Cesium plugins.

Next on my list would be to figure out what features would be most important to include in an initial iteration; and then, how open do we want the integration to be for other developers to extend on the base functionality to fit their needs.

Does anyone have any input they would like to provide in order to get the ball rolling? What would you like to see in terms of Cesium / Ozone integration?

Thank you.
Disclaimer: I am a third-party developer currently using Cesium for our application development and am also familiar with the OWF project but am not currently a contributor to either project.

Chris,

Thanks for getting the ball rolling on this. A few other users are already using Cesium with OWF too. Ed was exploring OWF last week and Matt also has ideas for it. So we’re definitively interested. I believe that Cesium can become the defacto standard 3D map in OWF.

I’m trying to clear my plate so I can focus on 3D models so I won’t be personally involved in this, but here’s a few thoughts to get the discussion going.

In my opinion, the first question to ask is whether the Ozone integration should happen within Cesium or as an external “plugin”

Scott is the best person to comment on overall code organization, but if this happens directly in Cesium, what third-party libraries need to be included? Anything? Or would the example only work if the user first downloaded OWF?

We’re not keen on including large dependencies. Currently, Dojo is the majority of the Cesium release, which is disappointing since Dojo is not required for Cesium.

Does anyone have any input they would like to provide in order to get the ball rolling? What would you like to see in terms of Cesium / Ozone integration?

I think it’s important that we scope this accordingly. What is the minimal viable product that we can provide OWF to seed an ecosystem of users and contributors? That is - we don’t need to do all the OWF work upfront, but what is the most important work to foster Cesium’s adoption and meet our initial needs?

Also, we should write a tutorial once we have something.

Finally, their roadmap says they started a six-month refactoring to remove ExtJS and do some back-end work. Do we anticipate that this will impact our development?

Regards,

Patrick

Chris,

Thanks again for getting the ball rolling on this. I’m still very much an OWF novice, but here are my current thoughts on the subject. Obviously I expect things to change as we prototype different concepts.

  1. My pie-in-the-sky goal would be to have Cesium be included as part OWF as the default map widget. Of course I don’t expect that to happen overnight. I say we start by working in a fork of Cesium for the time being (I can look into setting this up and provide interested parties access) and just treating it as part of Cesium development. If the amount of code starts to get pretty big, we can then create our own repo with just the widget and rely on Cesium and OWF as third-party dependencies. If the code stays small, we pull it into Cesium master. At some point we talk to the OWF team about their feelings towards including it in OWF itself, at which point we probably fork OWF and open a pull request.

  2. The first thing I would want to see happen is a bare-bones widget. This widget would always have the time set to “now” and it would try and handle all of the existing notifications built into OWF. In short, it’s a replacement for the standard Google Maps based widget that already exists. We could have a simple toolbar for changing map styles and scene modes. Eventually the toolbar will just be the official “standard toolbar widget” we plan on implementing soon.

  3. Once we have that working, we would start to look into how to handle time. I’m not sure if OWF has a concept of “what time is it?” built into the framework or if each widget has to handle it separately. For example, if I have 2 Cesium widgets open at the same time, one for 2D and one for 3D, I would probably want them to be in sync as to what time it is. We could wrap our Cesium Timeline/Animation widgets into a separate Cesium widget that can drive the Cesium map widgets (and other widgets that care) via events. If OWF has no standard time constructs, we could try and create one as part of this effort.

  4. Once we are happy with time, we can start to explore hooking into time-dynamic data sources and ingesting them in Cesium. I plan on doing a lot of refactoring in Cesium to make this easier than it is now, this way we can have “data source” plug-ins which would work well for any application, including OWF.

Obviously the devil is in the details, and I’m sure I’m over-simplifying things here, but does this sound like a reasonable start to you? I’d love to hear about specific use cases people would like to see covered and feedback about these ideas.

Thanks,

Matt

Matt,

Thanks for the input. I hadn’t thought about the importance of time within the context of Ozone + Cesium but can certainly see the need. I did some research and haven’t come up with any out-of-the-box Ozone solution for current time. You would think there should be so I will reach out to their group. Though, it doesn’t bode well when the Ozone examples show how to develop a JavaScript widget to announce the time to other widgets. :slight_smile:

The control panel idea for toggling between map modes is a good one; OWF has a “Chrome” button panel that can be loaded into the widget (essentially looks like a Windows or ExtJS toolbar at the top of the widget’s iFrame content. The “Chrome” toolbar seems like a good fit for these generic Cesium options (to include toggling map layers, turning on/off time). I also brought up the idea of dragging/dropping CZML files from anywhere onto an Ozone/Cesium widget - I think it could work given OWF’s embedded drag’n’drop capabilities which essentially just return a dataUri.

More to come. Thanks for your comments.

  • Chris

Chris,

Looks like you got some great feedback here.

If you haven’t already seen, looks like an alpha of version 8 is available - http://owfgoss.org/platform.html

I’m not sure if this impacts us.

Patrick

Has there been any progress on Cesium-OWF integration? My company is exploring using Cesium in OWF and I was wondering if this has gone anywhere? Maybe a fork or branch or something?

Nick

Hi Nick,

I’m not aware of any updates, but Chris will know better than me. We’ve had some users build a one-off Cesium Ozone Widget “in an hour”, but it, of course, wasn’t fully integrated into OWF. What kind of integration are you looking for? What kind of app are you building?

Regards,

Patrick

Not sure why my initial response got deleted...but I'll try again.

We are looking for a lot of the things that Matt talked about above and just a lot of the Cesium features in general. The app we are building is going to be OWF based with several widgets one of which will be a geospatial widget. We are just in the planning stages right now. Other than that I'm not sure how much I can go into.

We have been watching Cesium for awhile and recently started using it for another app we are building (not OWF) and we are starting work on an OWF based app and thought of using Cesium since it has a lot of features we like and are looking for.

-Nick