From f1c5c4058a2b4be12fb16268f027862c53893147 Mon Sep 17 00:00:00 2001 From: elemoine Date: Thu, 6 Nov 2014 09:32:09 -0800 Subject: [PATCH] Destroyed Development Phase 1 (markdown) --- Development-Phase-1.md | 242 ----------------------------------------- 1 file changed, 242 deletions(-) delete mode 100644 Development-Phase-1.md diff --git a/Development-Phase-1.md b/Development-Phase-1.md deleted file mode 100644 index 6afe7ba..0000000 --- a/Development-Phase-1.md +++ /dev/null @@ -1,242 +0,0 @@ -# OpenLayers 3 Phase 1 - -This document defines the functionality that OpenLayers 3 will offer as the -result of the first development phase. - -Stated and anticipated future client requirements necessitate architectural -considerations in Phase 1 to ensure that this functionality can be implemented -later phases. Each section of the document includes an *Enabling future -functionality* for that matter. - - -## Animation - -In Phase 1 we will make OpenLayers 3 animate - - * Zoom transition - * Panning (kinetic) - * Tile displaying - * Camera movement - -### Enabling future functionality - -This requires a solid and flexible framework that makes animations possible -with both the WebGL and the DOM renderers. - -Animations with WebGL will be based -on *requestAnimationFrame* loops, while, for performance reasons, animations -with DOM will be based on CSS3 transitions. The animation framework should -accomodate both implementations. - -Related to the animation framework is the way the DOM renderer translates -and scales the layers pane. The DOM renderer currently scales each tile -image individually by changing the dimensions of its DOM element. For -performance reasons we may instead want to apply a CSS scale transform -on container elements. - -We will implement the animation framework in Phase 1, -as a foundation for current and future animation requirements. - -## Camera - -In Phase 1 we will experiment with 3D features. We will work on - - * Integrating with the Cesium virtual globe - * Adding "limited tilt" support (i.e. tilt with same-resolution tiles) - -### Enabling future functionality - -For 3D in general, and integration with virtual globes in particular, we need -to introduce the concept of a camera. In Phase 1 we will therefore add a Camera -type. The Camera will be part of the API. One requirement though is that the -API remain easy for developers of "simple", 2D map applications. - -## Data Source - -OpenLayers 3 has the concept of data sources. One type only is currently -supported: *tile*. (OpenLayers 3 currently supports the XYZ/OSM tile source -family, and tiled WMS.) - -In Phase 1 we will add support for the following layer type: - - * WMTS - * Single Image WMS - * Image (OpenLayers 2's `OpenLayers.Layer.Image`) - * Vector (detailed in the following section) - -### Enabling future functionality - -To be able to rate-control, abort, prioritize tile requests, and manage -resource management a Tile Queue (or Tile Manager) will be implemented. -This work will be based on past experience with OpenLayers 2 and WebGLMaps. - -Also, writing custom, application-specific layer/data source types should be -possible. The architecture and build tool must be designed with this -in mind. - -Vector ------- - -In Phase 1 we will add the following vector functionality: - - * Display styled points, linestrings and polygons with Canvas 2D (or SVG [*]) - * Display unstyled points with WebGL - * Draw, interact with, and modify features - * Support various *formats*, *protocols*, and *strategies* - -We will consider 2D vectors only in Phase 1. - -[*] To be decided considering performance and browser compatibility. - -Note: it is not yet clear whether we will have a Markers layer type as in OpenLayers 2. - -### Enabling future functionality - -OpenLayers 2 offers many vector-related features. It has a flexible -architecture enabling to work with different *strategies*, *protocols*, and -*formats*. It also provides a powerful styling framework, based on SLD. - -Eventually, OpenLayers 3 will, at least, provide the same level of -functionality and flexibility. - -Displaying styled geometries of any type (point, linestring and polygon) with -WebGL must also be possible in the future, and it must exhibit good -performance. For example, sending the vector data to the GPU must not require -expensive memory operations (data copies), and it must be possible to batch the -drawing of multiple objects. - -Also, applying styles to geometries should probably be easier than with -OpenLayers 2, but without compromising on flexibility and performance. - -## Control - -In Phase 1 we will port the following OpenLayers 2 controls, or -functionality thereof, to OpenLayers 3: - - * ArgParser - * Attribution - * MousePosition - * Navigation - * PanZoomBar - * Permalink - * ScaleLine - * TouchNavigation - * Zoom - * ZoomToMaxExtent - * OverviewMap - * DrawFeature - * Geolocate - * GetFeature - * Measure - * ModifyFeature - * NavigationHistory - * SelectFeature - -OpenLayers 2 includes a `Panel` control, for addings buttons onto a map. -Whether something similar will be be ported to OpenLayers 3 is yet to be -determined. - -### Enabling future functionality - -The control architecture will be built with the following requirements in mind: - - * Controls must work with both the DOM and WebGL renderers. - * Controls can be composed of other controls. - * Writing controls must be easy. - * Working with application-specific controls should be possible. - -Note: OpenLayers 3 has *interactions* and *controls*. We will need to clarify -these concepts in order to implement the required functionality in a generic -way. - -## Format - -In Phase 1 we will implement the following formats: - - * WMS Capabilities - * WMTS Capabilities - * GeoJSON (implies JSON) - * KML - * WKT - * GPX - * WFTS (implies GML) - -### Enabling future functionality - -OpenLayers 2 includes an architecture to work with XML (mainly OGC), and share -code between various formats. A similar architecture will be implemented in -OpenLayers 3. - -We will also attempt to make it possible to share formats with other -open-source toolkits (Cesium, Leaflet). This may require collaboration with -other communities. - - * Define format architecture - * define XML format architecture - -## Mobile - -OpenLayers 3 must obviously work on mobile. Panning and zooming should be very -smooth. The common gestures for interacting with the map should be available. -For example, we will add a `PinchZoom` interaction (which we don't have -currently). - -We will focus on supporting the iOS and Android native browsers (WebKit). See -the Browser Support section below for more information. - -## Overlay/Popup - -OpenLayers 3 already includes the concept of overlays. Overlays are -things/elements that can be added atop the map. This is the concept onto which -popups and labels will rely. We will to continue this work, and add a popup -implementation based on the overlay architecture. - -## Browser support - -In Phase 1 we will make sure the features we develop work in - - * IE 9+ - * FireFox 17+ - * Chrome 22+ - * Safari 5+ - * iOS 6 and Android 4.2 native browsers - -Supporting IE from version 9 makes it possible to not rely on VML at all for -vector rendering. VML is an obsolete technology. - -### Enabling future functionality - -OpenLayers 3 will need to be able to leverage modern web technologies such -as Filter Effects and CSS3 (3D) transforms. - -## Infrastructure and Doc - -OpenLayers 3 needs to have good documentations and tools. - -We already generate an API doc using jsdoc3, but a lot -more remains to be done for a decent API documentation. We may need to extend -jsdoc3 to meet our needs. - -We use Travis CI for Continuous testing and integration. We will need to -update our Travis script as we go. - -OpenLayers 3 has to offer easy-to-use tools for creating custom builds of the -library. A convenient command line interface (CLI) will be developed. This CLI -will serve as the base for a hosted build tool developed in a further phase of -the project. - -We will also need to organize the website and the community around two code -bases (OpenLayers 2 and OpenLayers 3). - -## Summary - -In the first phase of development we will mainly work on porting the -functionality from OpenLayers 2 to OpenLayers 3. At the end of the first phase -OpenLayers 3 should major features of OpenLayers 2, and should have a solid and -flexible architecture making it possible, and easy enough, to add more features -in the future. - -In the first phase we will also work on more advanced features (e.g. Cesium -integration, client-side re-projection, millions of geometries handled by -WebGL, limited tilt close to the surface). The goal is twofold: assess our -architecture and design choices, and show off OpenLayers 3 to the public. \ No newline at end of file