Lessons learnt adapting CppMicroServices to biicode

This post summarizes the lessons learnt from adapting the CppMicroServices framework to a biicode compatible format. It does not go into detail about the actual modifications, but focuses on the lessons learnt adapting the framework.


CppMicroServices is an implementation of the OSGi framework, which enables runtime dependency injection. Modules of code (bundles) can be loaded and unloaded at runtime. In the case of CppMicroServices, bundles are either shipped in the form of shared libraries, or statically linked into the executable.


Based on packaging principles, bundles should be packaged and released separately – so that they can be depended on individually. biicode’s dependency management through blocks is suitable as a dependency management tool that supports this flow.

Continue reading

How to upload to biicode. Example 5: Libuv

Recently, I wrote a post about biicode’s tracks. “Biicode Tracks” mean just that: Actual working versions of the same lib uploaded into different tracks of the same block. 

Biicode tracks enable quick using and switching of versions.

Let’s see how I used block tracks to upload Libuv. This is a successful example of maintaining a library developed using github with several versions, being each one a different line of development.

libuv's logo

Continue reading

How to upload to biicode. Example 4: Oscpack by Ross Bencina

Updated for biicode 2.0!

As the headline states, this is the fourth example about how to upload libraries to biicode.  If you’ve done this kind of thing before, keep reading, we’ll explain how to upload Oscpack lib. Otherwise, you may be interested on reading first any previous articles of the series:

Continue reading

How to upload to biicode. Example 3: Little CMS by Marti Maria

Updated for biicode 2.0!

Once a library is uploaded to biicode, everyone can reuse it easily!  Let’s see a new example about how to upload to biicode just following a few steps, again, this is another example about how to proceed when your library depends on others. For this matter we’re using the fantastic library Little CMS, a free, open source, CMM engine. It provides fast transforms between ICC profiles.

As you can guess, once we’re done everybody will be able to use this library just by typing #include "martimaria/littlecms/include/lcms2.h"

Continue reading

How to upload to biicode. Example 2: Box2D by Erin Catto

Once you upload to biicodThis example about Box2D shows you how easy to upload to biicode ise a library, everyone can reuse it!  That’s why we explained how to upload to biicode any library just following a few steps, but that example didn’t cover the possibility of a library depending on other libraries, which is quite usual nowadays. So today, we’re going to see with an example how to proceed when your library depends on others. For this matter, we’re using BOX2D, an open source C++ engine to simulate rigid bodies in 2D, it is also used in different video-games like AngryBirds motor engine.


Continue reading

How to upload to biicode. Example 1: JSON11 by Dropbox

A few days ago, we came across this fantastic library from the Dropbox team, to encode and decode JSON using C++11. Syntax is very clean and attractive which makes the library very easy to use.
Also, this library is an ideal example to show how to upload to biicode your library like I did.

Why would you want to upload to biicode your library ?

Once it’s uploaded to biicode, everyone (including yourself) can reuse it easily and without any complex configuration.
This is key: If you make a good job configuring and uploading the library to biicode, nobody will EVER do this job again. The library will work for anyone just by typing #include “lasote/json11/json11.hpp”.

Upload to biicode


Continue reading