Moksha is a spit of core functionality from the original MyFedora codebase. The original concept of MyFedora was to build an application layer above TurboGears 2 that would allow multiple MyFedora applications to run on one web page or stand alone. Moksha takes this concept and makes it useful to multiple project and not just Fedora Community. By splitting out the base functionality we are able to better focus on each project, Moksha for the base platform and MyFedora/Fedora Community for Fedora's user facing bits.

A lot of the work that will eventually find itself inside Moksha starts out as a Fedora Community proof of concept. Things like the datatable are tested against Fedora data sources, refined and then ported over to Moksha. On the same note as Moksha becomes more defined, MyFedora apps get ported to the new API.

Status

You may read more about the status on Moksha's project page and its Fedora Hosted instance.

Right now Moksha is in its beginning stages and little is shared between Fedora Community besides some key concepts. However, Moksha is being rapidly developed and we are starting to port as the API's become more visible.

Pieces of the Puzzle

If you look at the diagram you will see a couple of major pieces to the Moksha application platform. The platform itself consists of WSGI middleware and TurboGears 2 components as well as a JavaScript API based off of jQuery. There is also a datastreaming API and caching layer which is the heart of the Moksha platform.

The Platform itself allows running applications as standalone web apps but the power really comes from the ability to combine applications into one interface and eventually allow the user to configure their interface to give them the information they care about in one spot. The great things about this is that a developer can go off and create standalone applications and then later easily integrate it into a Moksha instance such as Fedora Community and while a large part of the benifits come from the python API, the platform can still integrate applications written in different languages and on different frameworks. There may be a few things to consider when getting applications to run on the Moksha platform but it is designed to make sure those considerations are minimal. As a n app wishes to become more integrated they can start to use more of the API's. The great things about the platform is it is modular and bits and pieces as well as the whole stack can be used within other frameworks.

The Datastreaming and Caching Layer are designed to make getting data from many different sources efficient and easy. Based on orbited and AMQP messaging it will allow for event listening and pushing live data back to the webbrowser so inefficient queries can be bypassed or run only once in awhile to refresh the cache. This layer brings in the concept of connectors which facilitate different caching strategies based on the capabilities of each data resource.

The Python API is based off of TurboGears 2. API is only added, such as the datastraming API, if it can't be done with the lower levels of the stack or if it would be beneficial to add a convenience function. While a Moksha app can be developed under any framework, Moksha will focus on TurboGears 2 applications and documenting best practices when developing a Moksha app. For instance we use ToscaWidgets extensively so Moksha's tutorial will illustrate developing applications using ToscaWidgets even though you can create a TurboGears 2 application without it.

The JavaScript API is what glues Moksha apps together and allows for efficiently displaying more than one application at a time. It also allows for other frameworks to inter-operate with Moksha apps on the client. The API is being developed within the jQuery and jQuery.UI frameworks so style documentation and best practices will be heavily derived from there. Other API's such as Google's Open Social are planned to be integrated in the future to enable development of even richer applications.

Links