nical edited this page Oct 13, 2012 · 28 revisions

#Welcome to the kiwi wiki!


THE WIKI IS NOT UP TO DATE! Some of the information here reflects older versions of the library.

Lately the library has been changing A LOT. Core functionalities have changed, the API has been refactored, and currently the whole library is been rewritten from scratch. Why all these changes ? Well, right now the project is mostly developed by one person, and there is not a lot of people actually knowing of its existence. This leaves room for experimentation, and it is the road I have chose until now.


Kiwi is a generic and easy to use node compositor library developed in C++.

The idea behind Kiwi is to separate actions/scripts/filters/anything into "nodes" that can be connected through their ports. The graph resulting from the connections of these nodes is called a pipeline

Such a system allows easy to use graphical representation and edition of complex pipelines accessible for non-developers.

This work is inspired by Blender's node compositor and aims at providing such a tool for any application (imaging, audio processing, text editing...). Kiwi might also interest you for re-usability reasons: Say you need to develop typographic filters, you may easily implement them using Kiwi and they will be exploitable in D or C++ code but also in a neat GUI (in any program that can load Kiwi filters or within your own program if you wish to use Qiwi, the Qt based kiwi widgets) and even from within a terminal using Kiwi's command line program !

There are already very good node compositors out there, some of which are free (see Blender's compositor or Synapse for example) but most of them are tightly integrated into the application they have been developed for and very specialized in image or video processing. Kiwi, instead, is a fully generic D/C++ library that has almost no dependency and is designed to be easily integrated in any kind of software.

Kiwi offers a playground to test successions of computation on various data structures providing a unified interface in order to make it possible to mix any kind of data types (why not have a filter do some processing on a text container retrieved from the internet through the twitter API before integrating it in an image that will then be inserted in a video while some sound is generated from the input text and included in the video, etc.).

In short :

  • Kiwi is free.
  • Kiwi is generic.
  • Kiwi is lightweight and fast.
  • Kiwi is easy to use as a non-developer and easy to extend.
  • Kiwi is good re-usability and prototyping.
  • Kiwi is not finished yet... (but will be operational soon !)


Most of Kiwi's source code (the core of the library) is under the new BSD License.

###Project member(s)

Right now the Kiwi project is designed/developed/maintained by Nicolas Silva.

I would be very happy to share this experience with anyone who is motivated to contribute!

###Contact Nicolas Silva (5th year Student at INSA Lyon (France), IT & computer sciences department)