Although I haven’t been posting much on Kosmos, this doesn’t mean that nothing is happening. In fact, a lot of new stuff is in development. so much so that I’m having trouble concentrating on finishing stuff
.
There are main fronts I’ve been battling since I’ve decided to do a big Kosmos rework: the GUI and the rendering engine. Although I started the rework by concentrating on the GUI code, for various reasons the effort moved to rewriting the rendering engine, especially the rules system.
The problem with this is that now there is a lot of “todo” code on all fronts and it left me wondering what the realistic date for releasing Kosmos v3 would be. Even when the rendering engine has been completed, there would still be a huge amount of work needed to finish the GUI framework.
During a hiking trip a few days ago I started thinking how this could be speeded up. I got the idea that instead of waiting for full-fledged GUI to be finished it would be better to provide a simplified user interface as an intermediate / temporary solution (going back to the old v2 GUI code was out of the question).
So my idea was to provide a set of commands which could be executed by the user through a command window. I know, I know, this is a bit geeky and not too friendly, but I see several good points with this approach:
- The time for releasing the first (“alpha”) version of Kosmos v3 would be shortened by at least two to three months.
- Users will be able to test the two main improvements: the new rendering rules system and the improved graphics engine.
- The idea for the commands is to make them automatically available through menus, so it wouldn’t be a so user-unfriendly after all.
- My plan is to release Kosmos more often than before (at least once a week), so the users would experience continuous improvements to it. Later I would try to implement some kind of auto-updater.
Now let’s see what are the new features I’ve been working on.
Rules Engine
I’ve been writing about this before. The new engine has now been more or less implemented, but I still have to write the parser for it. Also, I want to be able to support the old Wiki-tables rules format (obviously), so there’s some work there before the release. All I can say right now is that the new system will be much more powerful regarding selecting elements to be drawn and much easier to control, without unnecessary repetition when writing rules.
Map Rendering
The idea was to rewrite the graphics code to be able to support different outputs (like SVG) and I think I’ve made a good start. There’s still a lot of work (now there are two separate code bases for GDI+ and for Cairo). Also, the rendering will probably not be as quick as in Kosmos v2, but this is because I plan to work on graphics optimization later.
Scripting
This is a result of the decision to provide a command-line interface inside the Kosmos GUI. The natural next step to this is writing a sequence of such commands. This could then become a powerful automation tool and could also replace the existing Kosmos.Console application. I’m still thinking how best to provide such a scripting functionality. One idea is to have an interpreter of some common scripting language (like Ruby, Python or Lua), but I don’t want to go over the top with this. And I don’t want to open a new front I wouldn’t be able to fight
Spatial Databases
I introduced this topic a few months ago. It is very exciting to see Kosmos working with PostGIS and SpatiaLite, although this feature will not be released very soon – I still think Kosmos is currently most useful when working with smaller map areas which can be loaded from an XML file. Once the general scenarios have been covered, I’ll try to take some time to finish the DB support.
Misc
There’s a lot of other stuff I’d like to see in Kosmos, like better GPX support. The rendering rules will support specifying how to draw GPX features, too. Also, there will be functions like calculating the area size (and using this to filter things when rendering). I would also like to have routing. And editing GPS data (and even an OSM editor). But I guess these things will come later, after v3 has been released and stabilized. Too many ideas and too little time, that’s the problem….
Preview
For those of you who endured to the end of this post, I’m attaching a screenshot of the prototype of what I call “Kosmos Commander”:
