What is Suli?

Suli instrction
Suli is the abbreviation for Seeed Unified Library Interface, it is a consistent API that fits multiple platforms (like Arduino, mbed,launchpad ,Raspberry Pi, and etc) .

Why Suli :question:
Previously ,in the market of open source hardware ,the majority of open source modules are applied on arduino platform .the main reason is that arduino is so simple and especially it has enormous arduino-compatible libraries for all sorts of sensors, actuators, displays and the other useful modules .but so far as the development of open source hardware ,there are more and more powerful and multiple platforms are emerging .such as Mbed ,launchpad,raspberry.Each platform has its own APIs ,thus obviously those arduino-compatible libraries can not work on these platforms .Which means as for one and completely the same module ,when it is used on different platforms ,it still needs different compatible library as well . Just like the following images shows :

However ,there are hundreds of modules ,and it will be more ,so are the platforms .Apparently it is very inefficient ,and sometimes not easy .Is there any way to simplify this job ?Can this be avoidable ? Precisely ,one module one library ? The answer is Yes ,that is Suli .

How does Suli works :question:
Just have a look at the following images:

Compared with the images above there are four layers here ,the added layer is Suli API —an consistent interface .it is based on different API of different platform by calling functions respectively. In this way ,the library for any open source modules can be wrote by using the same interface .That means after unifying the interface ,each single module can just has one library regardless of the platform it is applied on .That is suli-compatible library .It is imaginable that suli-compatible library will be more complicated than arduino-compatible library ,however ,considering its advantage of compatibility ,it is worthwhile .

Here is the whole picture:

Platform : Aduino, Mbed ,Raspberry Pi, LauchPad……

Links:
1.How to use a suli compatible library?
2.How to write a suil compatible program?
3.The map of Suli APIs
4.Suli handbook
5.Suli library in github

In general ,using a suli-compatible library is more complicated than using a arduino library , because we should unify the interface frist .But beyond this , the left thing is