Software Development – The Key to Ecere’s Success
It is rare to learn of a GIS company in which much R&D is done up front to create the programming language used to build its tools. Ecere, a Canadian company based in Gatineau, Québec, is doing just that.
This article is second in a series of three in which we interview Ecere’s Chief Technology Officer, Jérôme St-Louis.
GoGeomatics: Tell us what inspired you to create a programming language. Bjarne Stroustrup had already given the object-oriented functionalities in C language by creating C ++, so what was the motivation for the creation of eC.
Jérôme St-Louis: The eC language was designed towards the end of 2004 to meet specific needs to advance the Ecere SDK, as well as during the development of several projects, including geospatial visualization solutions. The Ecere SDK (runtime) library had been developed in C language since its inception in 1996.
Having realized the value of object-oriented programming, among other things to build graphical interfaces, by developing code C which was increasingly organized in an OO way, I had tried to build a class library in C++ that acted as a ‘Wrapper’ around the C library. However, C++ lacked features that I aspired to as modules rather than header files, properties, and reflection. eC therefore offers these features, while keeping a C++-inspired syntax that will also be familiar to C# or Java developers – languages that are also inspired by C++.
A few months before conceptualizing eC, I had developed a library of classes for the Ecere SDK in Python, which convinced me among other things to support dynamic modules. This dynamism is particularly useful for a plug-in system. All these features are very good for a GUI toolkit, as well as for an IDE that wants to be able to edit both visually and in the form of code, graphical interfaces or other objects with property sheets. These concepts also apply very well to a geospatial visualization API defined as a hierarchy of classes with properties by changing the visual appearance (such as color or geospatial coordinates).
These modern language features are also common in other languages such as C#, but are not yet standardized in C++. The advantage of eC is that it remains a superset of the C language, API compatibility is maintained (both to export symbols and to use existing C libraries) and the code is always compiled natively for an optimal performance. eC is therefore a system programming language in which one could easily develop an operating system kernel with all the potential for optimization, but it has modern features that greatly increases the productivity of the programmer compared to development with the C language. This makes it an ideal language for building high-performance complex systems, such as our GNOSIS SDK.
import “ecere”
class HelloForm : Window
{
caption = “My First eC Application”;
borderStyle = sizable;
clientSize = { 304, 162 };
hasClose = true;
Label label
{
this, position = { 10, 10 }, font = { “Arial”, 30 },
caption = “Hello, World!!”
};
};
HelloForm hello { };
GoGeomatics: Am I correct in understanding that eC is an open-source multi-platform language?
Jérôme St-Louis: Correct, as a super-set of the C language, eC is meant to be portable and can be deployed to a number of supported platforms, including desktop computers, mobile and wearable devices as well as the web. The Ecere runtime library, which predates the eC language, in turn provides a uniform API to develop for those multiple platforms, abstracting the native APIs for handling things like graphics and input events, while the code is compiled and runs natively on each platform.
GoGeomatics: How is eC being used in developing your own software products?
Jérôme St-Louis: The eC language is used for the development of all of our own software products. The eC compiler itself is self-hosting; the Ecere IDE, the cross-platform runtime library, the GNOSIS library, GNOSIS Cartographer and all of our other tools are also written in eC.
GoGeomatics: Are other organizations using eC and contributing in its development? Do you have user conferences based on it?
Jérôme St-Louis: We have ourselves built a number of systems in production for clients (including the federal government) using eC and the Ecere SDK. The language has not been widely adopted yet, but a large number of users have shown interest or used it to build their own software projects since the first release around 2006. These users tends more to be individuals rather than large organizations, who are more averse to technologies not yet widespread. The SDK has a worldwide appeal and has been translated to many languages by contributors, including complete translation to Chinese, Spanish and Brazilian Portuguese. These translations are facilitated by the built-in support for internationalization. Some of these users are still active in our community which includes the #ecere IRC channel on Freenode, online forums accessible from our website, as well as a monthly meet-up in Ottawa. While the first open-source release dates back from 2008, the Ecere SDK and the eC compiler have been part of the Ubuntu Linux official repositories since 2012, and slightly later for the Debian repositories, under the package name ‘ecere-sdk’.
We’re looking forward to the day the size of the eC community will justify its own user conference, but in the meantime we’ve been participating in the annual FOSSCON conference in Philadelphia, PA, held in the summer, since 2013. FOSSCON promotes free and open source software and has ties to the Freenode IRC network.
GoGeomatics: How is the documentation like for eC at the moment?
Jérôme St-Louis: I published an e-book draft in early 2008, titled The Ecere Tao of Programming, which still serves as a Programmer’s Guide for the language. The book is still a work in progress, which I hope to find the time to complete, but the current draft sections explains well the basics of the eC language. The first section is intended for people with no previous exposure to the C language family, or to serve as a refresher, while the second section gives a tour of all the object oriented features eC provides on top of C. In addition to the Tao, a large number of samples are distributed with the SDK which remain the best reference for quickly figuring out how to use the API for GUI, graphics, networking, audio, multi-threading and more.
The community forums also contain a large collection of posts from users inquiring how to perform certain tasks, which can prove very useful to new users. In addition, we provide a tool called Documentor which lets you browse the API of a library and see its documentation. We are still in the process of improving the API reference documentation itself, after recent improvements to the tool including switching over to a text-based format which makes it a lot easier for the community to collaborate to improve the documentation. The documentation data is now stored in ECON (eC Object Notation – http://ec-lang.org/econ/), a super-set of the JSON language which also directly maps to the object instantiation syntax within the eC language, and provides some useful additions to the widely popular JSON.
GoGeomatics: What advice would you give geomatics educators in Canada to help them produce professionals with the specific skills you are looking for?
Jérôme St-Louis: In my opinion, geomatics students would benefit greatly if the curriculum included more courses in programming-related aspects. Given that the general population is now familiar with the use of geospatial information systems from the avenue of mobile devices, online maps and GPS devices, and that GIS analysis tools are increasingly user-friendly, the professional knowledge sought subsequently includes more and more aspects related to programming.
I believe that many of them have already introduced the use of open-source tools such as QGIS, which is very positive. They familiarize students with a variety of solutions, as well as with the philosophy of free software movement and open-source.
We would like to invite educators to try out our geomatics tools, which we offer free of charge to educational institutions for teaching purposes. We would also be willing to collaborate to develop learning modules based on our GIS tools.
GoGeomatics wants to thank Jérôme for talking to us about the role of software development in creating new geospatial tools. In the next article we will discuss the GNOSIS geospatial suite that Ecere is creating.
Ecere Corporation offers a comprehensive suite of geospatial software including a cross-platform visualization API capable of both 3D and cartographic real-time projection, a GIS tool for styling, processing and publishing maps, as well as a map server.
GNOSIS (http://ecere.ca/gnosis/) is particularly well suited for real time visualization of large scale data sets at varying levels of details, and the real time 3D visualization of elevation models with draped raster imagery or vector data.
The product is highly optimized to achieve optimal performance, and is capable of rendering both map data as well as tracked objects, applying dynamic styles and symbology, while easily keeping up with frequent updates.
Ecere also provides the open-source Ecere SDK, featuring a cross-platform GUI toolkit, an IDE, and the eC programming language (http://ec-lang.org/).
Image Credits:
All images Copyright (c) Ecere Corporation, rendered by Ecere Corporation’s GNOSIS technology
The images in this article are from LANDSAT-8 imagery with View Finder Panoramas Elevation model.