Redirected from page "Dova"

Clear message



Dova is an experimental application framework written in Vala. It consists of a type system and libraries for application development.

Why Dova?

While writing applications using Vala and GObject works well, there are still some aspects of GLib/GObject that don't fit very well into a higher level programming language such as Vala. The main motivation behind Dova is to create a unified type system with perfect integration into Vala. As a type system without libraries is not very useful, we also aim to create a set of libraries for application development using the Dova type system.


Base Library

Low-level Libraries

  • dova-canvas
    • Scene graph library
    • Status: not started yet
    • dova-canvas
    • dova-canvas-cairo
    • dova-canvas-gl
  • dova-dbus
    • Status: in very early development
    • dova-dbus: DBus, DBusConnection, DBusMessage
  • dova-drawing
    • Status: not started yet
  • dova-http
  • dova-imaging
    • Status: not started yet
  • dova-json
    • Status: not started yet
  • dova-mail
    • Status: not started yet
    • dova-imap
    • dova-mime
    • dova-pop3
    • dova-smtp
  • dova-sparql
    • Status: not started yet
  • dova-sql
  • dova-tls
    • Status: not started yet
  • dova-windowing
    • Status: not started yet
  • dova-x
    • X protocol bindings
    • Status: not started yet
  • dova-xml
    • Status: not started yet

High-level Libraries

  • dova-data
    • High-level Data Framework
    • Status: not started yet
  • dova-messaging
    • High-level Messaging/Remoting Framework
    • Status: not started yet
  • dova-ui
    • UI Application Framework
    • Status: not started yet


  • Write (unit) testing framework
  • Add tests for already implemented/designed parts
  • Add Unicode support (character properties, normalization, collation, line breaking)
  • Add mathematical/numeric functions (math.h, random number generator)
  • Extend fiber-based event handling to support multi-threading (global/concurrent queue)
  • Write basic fiber support in assembler (x86 / x86_64 / ARM / ...) as makecontext/swapcontext are not universally available (and mc/sc is not very fast)
  • Add (internal) low-level cross-platform layer to dova-core
  • Introduce any type as a supertype of Value, Object, Delegate, Pointer, Function, Struct

  • Support boxing of value types
  • Support module-oriented approach in Vala
    • Only generate one .c file per module => enables use of static C functions for internal methods

    • Support something like import MODULE-NAME that combines --pkg and using (allow importing it under any namespace due to possible conflicts)

    • Add vala tool that compiles and runs application at the same time (maybe using compile cache), support #!/usr/bin/vala

  • Design and implement low-level libraries
  • Design and implement high-level libraries


The Dova libraries are licensed under the LGPL 2.1+


Development is happening on gitorious.

You can check out the current development snapshot of dova-core using:

 git clone git://


  • Vala 0.9.2 or later
  • Linux (cross-platform support planned)


  • Jürg Billeter <j at bitron dot ch>

Projects/Dova (last edited 2013-11-22 23:15:12 by WilliamJonMcCann)