Saturday, November 28, 2009

exploring Qt

I have been experimenting with Qt for MCrux/Ubuntu port since last couple of days.. I found the Qt C++ APIs are much cleaner compared to the existing VC++/windows specific stuffs.

Current JavaScriptCore(JSC) APIs are native C APIs. This means that If we want to have Object Oriented design for all our extend-able modules then we need to have some dirty hack to make them work with static functions to actual object function call. I have taken a lot of pain to achieve this things in windows.

Qt Provides this functionality by default with QObject. We need to derive our class from QObject. Qt achieves this using "SIGNAL"s and "SLOT"s. This makes the design way cleaner. I will cover the fundamentals of them in a separate blog post.

Apart from having all these functionalities, I am not sure I can continue with QtWebKit (at-least for now). QtWebKit-JSC support is in a very primitive stage. They have exposed all the native data types but custom datatype support is in very primitive stage. This means that I can't play with my custom object and throw it back and forth from JavaScript to C++. I also can't set a custom QObject as property of any other QObject and expose them to JavaScript. The lack of these functionalities seems to be blocking me for using QtWebKit.

Saturday, November 7, 2009

kicking off MCrux/ubuntu linux !!


hello guys..

Its after a long time that I am writing a new post. As many of you know I am starting off with MCrux ubuntu port. Here is a very first snapshot of MCrux/Ubuntu application. I hope the MCrux Ubuntu port will be fully functional in next few weeks.

Tuesday, August 18, 2009

MCrux 0.2.0 Released

Releasing "MCrux 0.2.0 (Alpha)". This is a milestone for windows based releases.
Major Features:
* Abstracted APIs for Plugin Writers.
* coupling between MCrux and JavaScriptCore library is now more abstract.
* plugins are working seamlessly with clean MCruxSpec File.

you can download Latest build from http://code.mcrux.com/ Featured Download section.

Looking forward for your feedback.

Sunday, June 28, 2009

Get.. Set... Go.........

If we are moving alone, we would not be able to gauge the speed and direction in which we should go. We definitely require a watcher and/or a guide which can point out the correct path. Until now we are trying to build a platform which we didn't knew who would be using and what all would be the requirements.

Now We are not alone. We have got a watcher/guide. Pandion a well known chat client, is planning the next version on MCrux.

This is gonna accelerate the development of MCrux platform. MCrux has lots of features in pipeline. The development of all these features will get a power booster. Pandion would be the first application which is built over MCrux technologies. We all need to work hard to achieve this aim.

FYI: Pandion Blog Post describing future plans.

Thursday, March 26, 2009

Data Sharing between two MCrux Windows.



As shown in the above snapshot, we have a small example which demonstrates how the data sharing will work in MCrux. we have a global object "window.mcrux" which has been shared between all the MCruxWindows created. So if we want to share any data between MCrux windows we can share it using this global object.

The above is a small example where we have a text edit box in one window. whenever we type anything in that window the letter will be magnified in the other window.

As we know in any desktop application we have to share data between multiple windows. This makes it easier for the JavaScript to share things easily between two MCruxWindows.

RIA to RDA

we are wondering that RIA is "Rich Internet Applications" but what is RDA. RDA stands for "Rich Desktop Applications". we are now slowly moving from internet based Rich applications to desktop based similar applications. Below is the example of "MCrux File Browser".



As you can see the above file browser looks like a native application on windows. It uses various JavaScript frameworks like ExtJS and JQuery in the background to achieve richer look and feel.

We have used the FileSystem plugin of MCrux to access the actual filesystem and read the files and directories.

This can be served as a very good example of creating Richer GUI applications in desktop. Let's hope this will make the RIA to RDA dream come true.

Wednesday, March 4, 2009

MCrux 0.1.5 Released

I am very happy to announce the first version of MCrux - "MCrux - 0.1.5".
It Includes two plugins namely Socket and LIBXMLSAXParser.

Socket is a MCrux Plugin which uses openssl in the backend to Connect to create any client socket.

LIBXMLSAXParser is a SAX Parsing library which is using libxml's various functionality to parse the XML chunk by chunk.

the binaries are available at http://code.mcrux.com in the featured section.

the documentation is available for how to use MCrux, the "mcruxspec" file, plugins etc. at Documentation Wiki.

you can subscribe to the mailing list of MCrux at MCrux-dev Mailing list

Thursday, February 26, 2009

Moving towards w3c standards

For various events handling I have decided to move towards W3C standard event handling.
I have refactored the current APIs of socket and libxml_saxparser to be using various standard event APIs. (addEventListener(), removeEventListener())

Friday, February 20, 2009

"Hello World!" on sockets............

I have implemented the basic APIs for Socket calls and reading/writing data to and from the socket. Currently we are supporting the non-blocking and multi-threaded implementation of Sockets.

We can connect to any host at any port and send the data through the socket.

When we connects is called over the Socket, we start a background thread which continuously polls the Socket for any incoming data. Whenever any data is available, it reads the data and sends it across to the appropriate DataHandler.

the encryption and gzipping the data is currently next in the pipeline.

Friday, February 13, 2009

c++ to JavaScript calls working..

I found out how to get the JavaScript functions as a parameter to my callback function and call those functions from my C++ code.
I can pass a function like this.
mcrux.callMyJSFunction(function() {
alert( "my anonymous world!!");
});

and the passed function can be called by the backend Code :)
This will be a great step towards having callbacks registered for any of the event.

Thursday, January 29, 2009

Sample Examples using MCrux.

I am feeling proud to announce two of the sample applications using MCrux.


the first one is a basic calculator which supports addition, subtraction, multiplication, division, square-root, modulo, and 1/x operations.

Calculator is not accessing any of the desktop desktop features but in later iterations it will...



The second example is a sample file-browser. This file-browser is the first demo application which uses MCrux features. Using MCrux now JavaScript has access to various FileSystem operations. starting from reading a directory, getting file information etc. can now be done by the JavaScript.



I have included FileSystem APIs as a plugin to MCrux. (The plugin is developed as a separate dll project. The output of the project is "FileSystem.dll".

This dll has been placed in a particular directory (MCrux\Plugins) and MCrux will add all the plugin dlls from that directory by dynamically loading them.

Now the plugin development will be started fully fledged manner. I will be developing various plugins and working on making the MCrux design more flexible to the end-users. (both developers and users)

Saturday, January 17, 2009

Windows stuff integration

After thinking a lot about the usability of various APIs for the developer of various applications of MCrux, I finally decided that we will go for the route where user will give an XML file which is specially formatted metadata for MCrux. He will provide various details about the Application using the xml file. We will call these files as MCruxSpec files.
MCruxSpec files should contain Windows defination and various plugins which are to be integrated with the application.(for now)
As first step of implementing the above requirements I have moved the Window creation library inside within MCrux.
Now the Windows will be created by the MCrux library itself.
we need to do some more work as to make the javascript work properly with this implementation.

Plugin Architecture defined

Today I have finalized the plugin architecture for MCrux.
Each JS plugin should be derived from MCruxPlugin class which provides boilerplate for some of the functionalities of plugin.
They should be defined in different dlls. APIs to get instance of the Plugin class should be provided by defining the function called getMCruxPlugin().
This method returns (MCruxPlugin *)
This architecture seems to be working fine for various kinds of JS plugins. We will refine the architecture once all the other parts of MCrux will be having certain level of stability.