Friday, 11 May 2012

GeoExt2 Sprint Results

Today was the final day of the sprint, and we are proud to announce that GeoExt2 is ready for an early alpha release. Most of the key features that our sponsors were interested in could be ported from GeoExt1. Examples matching previous examples are available for most of the ported components, so it should be easy for application developers to port their applications to Ext4/GeoExt2.

To continue our tradition of giving credit to the developers who put an incredible amount of energy into making GeoExt2 a reality, here is the list of today's achievements:

  • Alexandre finished a MVC demo application that shows the power of Ext4 and GeoExt2, and fixed many tests and examples.
  • Andreas and Julien were able to finish big portions of the tree functionality, just in time before the end of the sprint, and just before going crazy over the complexity of the internals of Ext4. In addition to the synchronization between map and tree, all the loaders (except for the LayerParamsLoader) and the TreeNodeComponent plugin were implemented. Because the Ext4 architecture of trees is too much different from Ext3, a new (and nicer) API for building tree configurations was introduced.
  • Bart and Matt and Frédéric wrapped up their work on data components - even the not so famous ones like the SymbolizerColumn or the GeocoderCombo. A nice improvement, which also received contributions from other sprinters, is the common OwsStore base class for OGC data sources. Bart also brought basic i18n to GeoExt2.
  • Christian, Marc and Johannes made all print components work with Ext4. They also made huge improvements to many of the examples.
  • Éric gave the new MapPanel a big overhaul, so it is more lightweight and feature complete than the initial port. Together with François, he finished the AttributeReader and all components from the form namespace. They also took care of dependency management and made improvements to the build story.
  • Stéphane did a great job reviewing many of the pull requests that had piled up during the week, and helped to keep the pile of open tickets small. He also contributed to the MVC demo application mentioned above.

Next Steps

Over the weekend, we will be trying to brush up the API documentation and create an official alpha release. At this point, some components still need unit tests, and there may be some loose ends that are best encountered by using GeoExt2 in real life applications.

This means: we invite everyone to test the upcoming alpha release, or get the latest code from github. Bug reports, and - more than ever - code contributions and bugfix pull requests on github are welcome. Getting out a final 2.0 release soon is a goal that can only be reached with help from the community. For talented developers, a reward for repeated quality code contributions is the nomination for GeoExt2 core committer status.

Thanks again to all our sponsors, and to terrestris for the organization of the sprint and the perfect venue. And of course to all my fellow sprinters for all the good and hard work.

Happy coding, and may the odds be ever in your favor!

Thursday, 10 May 2012

GeoExt2 Code Sprint - Day 4

The fourth day of the GeoExt 2 codesprint has been as intensive as the other days, things are really coming together, but tomorrow is gonna be a crucial day. But sometimes we wish Ed Spencer from Sencha would be here to explain a few things to us.

Andreas Hocevar from OpenGeo and Julien Samuel-Lacroix from MapGears kept working on their unicorn, the tree components. They can now turn layers on and off through checkboxes, and are currently figuring out more advanced UIs like radio buttons (which they just did as I am writing this blog post). On the data side, they are digging into implementing the remaining loaders - currently they only have the plain LayerLoader.

Alexandre Dube from MapGears worked on an Ext-oriented application using their MVC architecture. Stéphane Brunner from CampToCamp made a build for it. You can see the current built version using a FeatureStore at: http://dev8.mapgears.com/geoext/git/2.0-12051017/examples/app/simple/simple.html

Stéphane also combined his efforts with Frederic Junod from CampToCamp to finish off the FeatureStore. Frederic also ported the grid.SymbolizerColumn (now in master with test and example) and worked with Alexandre on the app example.

Matt Priour of OpenGeo debugged data model inheritance issues and crafted an OwsStore to act as a base class for all of the OWS data stores.

François van der Biest and Eric Lemoine from CampToCamp completed the work on the Attribute model, reader and store and on the Form.toFilter and Form.recordToField functions. Two pull requests are ready for review. Next step for them is the SearchAction.

Marc Jansen, Christian Mayer and Johannes Weskamm from Terrestris worked very hard on the print components. Marc also did several reviews.

I myself worked on porting more of the data components (WfsCapabilities, WmsDescribeLayer, CswRecords, Wmc and ScaleStore) and started porting the ProtocolProxy but the differences are very big here between Ext 3 and Ext 4, so this needs more work.

Some links to the German music that inspired some of us today (new versus old), and a big thank you again to Terrestris for hosting us in their fantastic office:

http://www.universal-music.de/deichkind/videos/detail/video:270107/bueck-dich-hoch
http://www.youtube.com/watch?v=KhihBMG4oMs

Tonight we will have a social activity at KleinsPeterBerg (a restaurant alongside the river Rhine): http://www.kleinpetersberg.de/

Bart van den Eijden

Wednesday, 9 May 2012

Another big day today at the GeoExt 2 Code Sprint

After a three days of around twelve hours of work, things are really coming together. Today started more quiet as people worked in pairs to complete core functionalities. A lot of effort was put to port the main GeoExt features to ExtJS 4. Here are the main aspects of the work our tireless sprinters accomplish today:

* Documentation (http://geoext.github.com/geoext2/docs/index.html) was worked on by Andreas Schmitz and Markus Schneider, who joined us today, from Occam Labs. All functions are now automatically generated from the code without error. The new documentation framework (JSDuck) is really easy to use for developers and produce really nice docs à la ExtJS.

* Print forms work started today with efforts from Marc, Christian and Johannes. Not only did the Terristris team provide all the sprinters with good food and a great network connection, they also built essential data components for the printing capabilities of GeoExt.

* Tests (http://geoext.github.com/geoext2/tests/) are now nearly completed as they all pass in Chrome and Firefox. Thanks to Alexandre who also worked really hard to make everything work in IE8+. This helped to not only get all functionalities out by the end of the week, but also to have a very robust library.

* FeatureStore, one of the most important data components of GeoExt, was completed by Frédéric and Stéphane. The examples are still in a Pull Request at the time of writing this, but be sure it's amazing. From now on we'll be able to not only consult our features but also get to interact with them with all the ExtJS potential.

* Forms have been addressed by Eric and François. AttributeModel, AttributeReader, AttributeStore + form components (for editing and search) are all in the pipeline. Combined with the FeatureStore feature, this will provide us interesting applications to consult and edit feature data.

* WMSCapabilities (http://geoext.github.com/geoext2/examples/wmscapabilities/wmscapabilities.html) support was added by Bart and Matt. This key feature needed the model, reader and store to be addressed. They got it working and combined with the LayerStore effort of the previous days, the example is now working just like before.

* Layer Tree architecture design was addressed by Andreas and Julien. This work could have its own blog post. Let us just say that everything is different in ExtJS 4. They finally found a really clean way to configure the Layer Tree using the latest functionalities of ExtJS 4. After a day of design and test, let's hope they we will be able to show us something working tomorrow.

Feel free to download the code on GitHub (http://github.com/geoext/geoext2).

The live documentation is here (http://geoext.github.com/geoext2/docs/index.html)

And after 3 days, here are the examples and tests:

* Tests
* action
* layeropacityslider
* legendpanel
* mappanel
* permalink
* popup
* wmscapabilities
* zoomslider

Thanks Julien-Samuel for this great summary !

Tuesday, 8 May 2012

GeoExt 2 Day 2

Day 1 was about getting organized, getting up to speed with Ext JS 4, and starting some work based on what the Terrestris guys did in a previous code sprint. We also started designing the data components, with an initial focus on the Layer Store.

Today we've been essentially consolidating things, focusing on what we started yesterday. To avoid too much dispersion we've essentially worked in pairs.

Here's a brief list of today's achievements:
  • We have added tests and docs for the Map Panel, Action, Popup. These components are now in good shape.
  • We have agreed on policies regarding setters and getters. The basic rule is to use getters and setters where it makes sense only, as opposed to defining every property in the config object.
  • We have ported a number of components from GeoExt 1, including the Zoom Slider, the Slider Tip.
  • We have been developing data components for handling features and layers. This work will serve as the base for feature grids and layer trees.
  • The test suite is now available online. We still have failing tests, they should be taken care of in the coming days.
  • We have attempted to create a Sencha Touch 2 app based on the new Map Panel. Our goal was to determine if the Map Panel could work seamlessly with both Sencha Touch 2 and Ext JS 4.
    It turns out that the Sencha Touch API is very different (or at least too different) from the Ext JS 4 API. Having a Map Panel that works with both libraries is out of reach for the time being.
  • We have investigated creating builds using the Sencha build tool. The good news is that it works with GeoExt. But there are still things to sort out in order to include OpenLayers code in the builds.
The GeoExt 2 code base is available on GitHub. And here's what the new API docs look like:


    Monday, 7 May 2012

    Hello GeoExt 2 - GeoExt meets Ext JS 4

    GeoExt 2 Code Sprint

    This week is an important week in the history of GeoExt: Developers from Austria, Canada, France, Germany, The Netherlands, Switzerland and the United States have gathered in Bonn (Germany) for a code sprint to work on GeoExt Version 2, which will be based Sencha's Ext JS 4 framework.

    The sprint is a joint effort of terrestris, Mapgears, Camptocamp and OpenGeo, and is accompanied by developers from Occam Labs and m-click.

    Other than with many code sprints where only the sprint venue and food are covered by sponsors, the following sponsors generously provided enough funds to cover travel, accommodation and a significant share of the development costs:


    • University of Bern, Centre for Development and Environment
    • Swisstopo
    • David Bitner, Metropolitan Airports Commission
    • The U.S. Army Corps of Engineers
    • Jacob Westfall
    • SYNCADD
    • Mettenmeier GmbH Utility Solutions
    • FOSSGIS e.V.
    • Felix Reichert und Partner
    • landplan Büro für Landschaftsgestaltung

    Day 1 - Getting Started

    14 developers participated today, one of them remotely via IRC. The goal was to get up to speed with Ext JS 4, and to port some of the existing examples to the new GeoExt 2 code and GeoExt 4.



    Hello World in GeoExt 2

    The above live example shows a basic MapPanel - one of the achievements of efforts. In particular, the following tasks were worked on by the developers:

    • Alexandre Dubé, Mapgears: work on the testing framework; updated unit tests; various small fixes.
    • Andreas Hocevar, OpenGeo: set up live examples and API docs; investigated how the tree components can be ported.
    • Andreas Schmitz, Occam Labs: used JSDuck to parse the API doc comments, and achieved a nice result.
    • Bart van den Eijnden, OpenGeo: ported the LegendPanel.
    • Christian Mayer, terrestris: ported the Popup.
    • Éric Lemoine, Camptocamp: worked with Marc on the MapPanel; paired with Alexandre on the test framework.
    • François Van Der Biest, Camptocamp: shared an Ext 4 tutorial; work on the examples; Ext autoloading in examples
    • Frédéric Junod, Camptocamp: Ext autloading for GeoExt 2; started on the FeatureGrid and an improved FeatureStore architecture.
    • Johannes Weskamm: ported the Action component.
    • Julien-Samuel Lacroix, Mapgears: set up the sprint wiki and a wrote a git tutorial; work on the improving the LayerStore architecture.
    • Marc Jansen, terrestris: shared an initial set of GeoExt 2 components from a previous code sprint; provided advice on Ext 4 to newbies.
    • Matt Priour: LayerStore architecture improvements; provided guidance on Ext 4.
    • Stéphane Brunner, Camptocamp: example improvements, work on the PrintPanel.
    • Volker Grabsch: our contributor from Berlin, helped with autoloading.

    Thursday, 22 December 2011

    Announcing GeoExt 1.1

    The GeoExt Development Team is proud to announce the release of GeoExt 1.1.

    With GeoExt 1.1, more than 80 issues were addressed, from tickets reported on GitHub and trac.

    Some of the highlights include:
    • Simple i18n framework to facilitate localization of applications
    • TreeNodeActions plugin for rendering tree nodes with actions
    • More layer types supported by GeoExt.data.PrintProvider
    • New data and grid components for visualizing and editing styles
    • More flexible popup positioning
    • Easier deployment with OpenLayers cross-library dependency management

    More information about the improvements in GeoExt 1.1 are available in the Release Notes. To upgrade from a previous release, read the section on API changes.

    The release can be downloaded on GitHub.

    Thanks you for using GeoExt!

    Wednesday, 14 December 2011

    GeoExt 1.1-rc1 released

    It's been a long time since the last release, but we're finally back with the first release candidate of GeoExt 1.1. And if you haven't heard already, the source code repository has moved to GitHub, which gives the project new momentum.

    Many bugs are fixed in the 1.1 release candidate, and some cool new features were added, including
    • Simple i18n framework to facilitate localization of applications
    • TreeNodeActions plugin for rendering tree nodes with actions
    • More layer types supported by GeoExt.data.PrintProvider
    • New data and grid components for visualizing and editing styles
    • More flexible popup positioning
    For more information, refer to the release notes. To upgrade from a previous release, read the section on API changes.

    We invite you to test GeoExt 1.1-rc1. To do so, download the distribution archive. Stylesheet and script tags in your application should point to resources/css/geoext-all.css and script/GeoExt.js. You will also need OpenLayers (version 2.11 or higher recommended) and Ext JS 3 (version 3.4.0 or higher recommended).

    Bug reports can be filed in Trac, under the 1.1 RC1 version. Regressions should be filed under the 1.1 milestone. Also, feel free to fork us on GitHub and send pull requests.