Moksha in Fedora 11

From FedoraProject

Jump to: navigation, search
Date Status report
2009-05-19 Have already tipped off Creative that we want to do a video on this. Luke is very overtasked right now but we are going to meet up 30 days after F11 release to move forward.
Next action: Tickler for 2009-06-26

Return to Category:F11 in-depth features page

Contents

Video

A video is due to be created for Moksha by the Red Hat Creative team. They will probably not start work until April.

Interviews

Print interview

Tell me a little about yourself and how you came to be on the Fedora Engineering team.

My name is Luke Macken, and I've been working with Red Hat for about 4 years, since my Junior year at RIT. I've been fascinated with code since I was about 10 years old, but didn't start contributing to the open source movement until college. Aside from working on my own pet projects during school, as well as being a member of the Computer Science House, I also started contributing to KernelTrap.org and became a member of the Gentoo Security Team. During that time I had a co-op working for a DoD contractor, where I wrote image processing software for a sensor in the U2 spyplane. This involved sitting in a secure lab all day, with no internet access and only a Solaris box with Javadocs to keep me company. Let's just say that contributing to Open Source in my spare time was the only thing that kept me sane.

After that, I ended up moving to the other side of the software spectrum, and was hired as an intern at Red Hat. I was initially tasked with a variety of projects, including creating the first Updates Management System for Fedora, which has since evolved into what is now known as bodhi. I continued to work on Fedora as an intern for the rest of my college career, and I'm now a Software Engineer at Red Hat, and work full-time on the Fedora Project. Since then I've had the opportunity to hack on a variety of projects, including the liveusb-creator, moksha, TurboGears, yum, PackageKit, func, among others...

When we first met you explained to me that nothing made you happier than rolling out of bed and opening up a vi session. Still true?

Absolutely. The majority of my time is definitely spent in Vim. I use vimoutliner to manage my tasks, mutt for email, the vimperator firefox extension, and the vim project plugin to help me easily navigate through all of my code bases. Vim is more than just a text editor—it's a life style. :)

Where did the idea for Moksha come from? Why did you decide to work on it?

The idea for Moksha grew from our efforts in trying to build a unified Fedora developer dashboard. During the past few years we've created lots of great services in Fedora's Infrastructure, but the problem is that they lack cohesion and consistency between them. This causes developers to have to jump around to a variety of different web sites to get things done.

After a couple of attempts to create this developer portal, we took a step back and really put some thought into the fundamental problems that we were trying to solve. It also became obvious that we needed to solve this problem in a way that was generic and flexible enough to be used in many different situations.

So what we needed, at the lowest-level, was a platform for wielding data from arbitrary services. The core principles of this platform, with regard to data, are Aggregation, Interpretation, Persistence, and Visualization. This is what Moksha aims to accomplish.

What is Moksha exactly? What makes it so revolutionary?

At this point it's really hard to sum up the functionality of Moksha in a single sentence. The more we build things using it, the more powerful it seems to become. In its most abstract and generic sense, Moksha is a platform for aggregating, interpreting, storing, and visualizing data from arbitrary resources.

Moksha is comprised of the best available open-source Python and JavaScript technologies out there. TurboGears2 is a very large piece of this puzzle, as it is a framework built using 'best-of-breed' Python web components. TG2 gives us a comprehensive top-to-bottom web stack. This means that out of the box, we have pieces of middleware for caching, sessions, authentication, authorization, resource injection, transaction management, along with an amazing debugger. Moksha also provides additional middleware for profiling, CSRF protection, resource connectors and compression, extension points, Sphinx documentation and Widget demos. Now, this may be overkill for some applications, but thankfully TurboGears is built in an extremely modular fashion and allows you to easily customize the entire stack.

Aside from the vast plethora of functionality that TurboGears gives us, Moksha also brings other Python and JavaScript technologies into the mix, such as Twisted, Orbited, AMQP, and jQuery. The end result is a framework that makes it simple to rapidly create rich web applications with very little effort. Moksha also provides a plugin architecture that allows you to bring together many different types of apps and widgets under one unified platform. Along with its Resource Connector API, you can easily create live mashups that can extract and extend data from arbitrary resources.

What makes Moksha really stand out from traditional web architectures is its real-time messaging layer. Not only can it seamlessly integrate with existing industry-standard AMQP message brokers, like Qpid and RabbitMQ, but the Moksha Hub makes it simple to consume and produce these messages. This gives developers the ability to easily write plugins that can listen on a given "topic," and react accordingly when messages are received. Moksha also provides a live widget API that trivializes the act of creating widgets that can monitor and react to these message queues, within the user's web browser.

Compared to AJAX applications, Moksha's live pipes give us a much more elegant and efficient way to create highly-interactive websites. In many existing "live" sites, your browser is actually polling the server over and over checking for new data. Moksha utilizes Orbited, which gives us a low-latency socket in JavaScript. This means that when the page is initially loaded, your web browser opens a persistent connection to the server, which stays open for the entire duration of your visit. This allows for fast asynchronous client/server communication. In a sense, Moksha is a bridge that brings industry-standard messaging to the web.

Is Moksha comparable to any other frameworks with which users might be familiar?

Not that I am currently aware of. Moksha heavily utilizes TurboGears2, which itself is similar to Django or Rails, except that it is built using many pre-existing components like Pylons, Paste, SQLAlchemy, ToscaWidgets, etc. So, Moksha is essentially a framework built on top of a framework that is built on top of another framework. It's composed of a very large number of existing modules, but the goal is to provide high-level abstractions that hide the underlying architecture from the developers and designers, while still being transparent and fully-customizable.

Moksha is supposed to be the foundation for the new Fedora Community interaction system. When will we see that, and what will it feature?

A beta version of the Fedora Community portal is scheduled to be released by Fedora 11.

The first problem that we are tackling is Package Maintenance. Right now maintaining a package in Fedora requires jumping through a variety of hoops, across a number of different services. We are going to consolidate these resources under one roof, making it simple for packagers to get their job done as quickly and painlessly as possible.

Once the beta is released, we are going to start tackling many other workflows in Fedora by trying to streamline processes and make things as collaborative and transparent as possible. Some potential problems that we may try and solve in the near future revolve around security tracking, package reviewing, upstream monitoring, patch maintenance, bug management, special interest groups, along with any other ideas people throw at us.

This is obviously a very ambitious effort, but we feel that the platform that we have created will make it simple for people to dive in and start developing apps and widgets without having to learn how our whole infrastructure is put together. The goal is to not only make it easier to improve Fedora, but to make it a much more enjoyable and rewarding experience.

Where can people read more about it? Is there a demo site available?

You can find Moksha documentation and a demo dashboard here: http://moksha.fedorahosted.org Information on the Fedora Community project be found here: http://fedoracommunity.fedorahosted.org

So how do you spend your time when you're not hacking?

Well, I recently helped start a non-profit corporation based around public information, called CIVX. Our goals are to make the unavailable available, the available accessible, and the accessible transparent. The initial platform uses Moksha, and aggregates a variety of data from a number of transparency projects and governmental entities.

Next to coding, my favorite hobby is making music. I've been hitting drums since I was 2, and have recently gotten into bass and circuit bending. I also enjoy reading, philosophizing, zazen, basketball, etc. For more on my day-to-day you can follow me on identi.ca/twitter, or subscribe to my blog.

Audio interview