What is TideSDK? - LemontechSA/TideSDK GitHub Wiki
Introduction
TideSDK (formerly Titanium Desktop) is a remarkable project inherited from Appcelerator. It is now managed as community open source project by group dedicated to the availability of this unique solution.
TideSDK, formerly Titanium Desktop, is an open source software development kit for creating multi-platform desktop apps using HTML5, CSS3, JavaScript and other common scripting languages. The project is hosted on Github. The main web site has comprehensive documentation and hosts an active developer community. Thousands of developers have used the former Titanium Desktop to develop deskop applications. Perhaps the most recognized applications is Wunderlist
The ability to deploy a Webkit-based desktop application across all three major desktop operating systems, with privileged access to native APIs, empowers web developers to escape the browser and deliver rich, desktop apps.
Users create applications using familiar HTML5, JavaScript and CSS technologies. Beyond this, the unique support for Python, PHP and Ruby extend the capabilities of TideSDK beyond the realm of any competitive framework. Further, our plans include the expansion and extension TideSDK's API's for even better, more complex, and reliable user experiences on the desktop as we move forward.
Tide MicroKernel
TideSDK has a compact microkernel written in C++ for running pluggable modules. The microKernel supports a cross-language, cross-platform 'binding' and invocation framework which supports mixing and matching code. This means you can pass a Javascript object to a Python function and so on.
Tide currently supports the following languages:
- C/C++
- Python
- Ruby
- PHP
- JavaScript
That said, any C/C++ exposed language that supports embedding can be supported without much effort. Possibilities for the future include:
- Lua
- Falcon
- C# (maybe through Mono)
- Java
The Module API
The Module API is simple but powerful. Modules to extend the api may be written in C++ or even in the supported languages like Python. Once the module is loaded, you can can do anything you wish with its functionality.
The Binding API
A Module communicates to other modules through 'binding'. Binding is the process of either adding values (primitive, objects, functions etc) to the SDK runtime or retrieving them. There are also a small number of other utility functions such as logging etc that are exposed through the API module.
The binding implementation for each language knows how to exchange values between the SDK runtime and the native language runtime. This is the some of the magic of TideSDK.
As an extreme example, you could invoke a function from Ruby which might take a Python function as a reference and return a Javascript object.