June 26, 2008

I’m going to be blogging once a week about an Extension that is available for MindTouch Deki. The extension I’m highlighting this week is the FlowPlayer Extension.

FlowPlayer enables a user to embed FLV media into a Deki page. This will help liven up your MindTouch Deki site while allowing you to keep media relevant to your organization on your Deki site as opposed to hosting it on a third party video site.

To use the extension you would activate it first by following the install instructions. Once installed, attach an FLV file to a Deki page, copy the url for the FLV file, and then put the url in the box provided by the Extension dialog(which can be found by clicking on the Cog icon in the editor and then selecting FlowPlayer).

After installing, use the following script to see an example flv(note there is no sound with the example):

 {{ flowplayer{source: "http://wiki.developer.mindtouch.com/@api/deki/files/2989/=test.flv"} }} 

More information about FlowPlayer.
Main FlowPlayer Extension Page

If you have any questions about it please feel free to contact us.

Use DekiScript to skin MindTouch Deki

Damien Howley @ 11:12 am

Until now the only portion of a page that has been editable by the user is the content inside the editor. Logically this makes sense, however, there are times when a user or administrator may want to add additional content to the skinning template*. For instance a user may want to add advertisements, navigations, widgets or some custom html. Such functionality has been available since November, 2007 but was fairly basic. Users could add site-wide content into numerous different custom HTML areas and were limited to HTML and client side scripting languages.

With our latest improvement (8.05.1) users can now designate custom skin content by assigning a page template** to specific skinning regions. This process offers two noticeable benefits. First, custom content can now be injected on a per-page basis. Second, and most importantly, custom content can now utilize DekiScript which means that both server-side and client-side functionality is acceptable. Another extremely useful benefit of using DekiScript for custom skin content is the ability to script per-user functionality.

In order to support skinning template targeting you need to make some minor modifications to your Deki. First you need to define which portions of your Skinning Template can have Deki content injected into them (for security reasons). To do this you need to crack open LocalSettings.php and add the following line:

$wgTargetSkinVars = array('customarea1', 'customarea2', 'customarea3', 'customarea4', 'customarea5');
(\\192.168.168.XX\drive\var\www\deki-xxxxx\LocalSettings.php)

By adding the $wgTargetSkinVars to LocalSettings.php your simply granting permission for the listed Skinning Variables to be overwritten with injected Deki content. In the above example you can see that I opened up all the custom areas in a skinning template. If you’re using Fiesta these custom areas are the same as the custom HTML areas that are found in Control Panel > Visual Appearance > Custom Site HTML.

Now that you’ve updated LocalSettings.php you can go to your Deki and start injecting content. To start lets first create the content that is going to get injected. Navigate to Tools > Templates and create a new template called ‘PageTemplateName’. Add some generic text such as “MindTouch Deki is awesome”, save and then navigate to your Deki homepage. Now click edit on your Deki homepage and add the following DekiScript:

{{ wiki.template("PageTemplateName", nil, "customarea1") }}

Using the DekiScript above you’ve injected your Page Template into customarea1. Now you can take this example a little further by adding some DekiScript into your Page Template. Navigate back to Tools > Templates > PageTemplateName and click edit. Add some of the following examples:

{{ web.link(user.uri,'Take me to my page') }}

{{ wiki.contributors(nil, 3) }}

{{ feed.list('http://feeds.feedburner.com/mindtouch?format=xml',5) }}

I’ve been experimenting with this new approach a lot recently. In fact I have created two custom templates that take full advantage our new skinning capability. In both cases I was able to easily add powerful functionality to the templates with very little code. As I continue to experiment with new approaches to skinning I’ll be sure to keep everyone up to date.

Thanks

Damien
DamienH[at]mindtouch.com

* Skinning Template - Refers to the markup (php and HTML) of a MindTouch Deki skin. Examples include Ace, Base, Deuce and Fiesta.
** Page Template - Refers to a user created MindTouch Deki template. Users can create page templates by navigating to Tools > Templates in MindTouch Deki.

June 25, 2008

Last week, we released an updated VMware Appliance and published a new EC2 public AMI for the amazing MindTouch Deki 8.05.1 (Jay Cooke) release.

This week it’s all about our Linux packages ;)
RPM
Among several fixes and improvements, we’ve added repositories for Fedora 9, OpenSUSE 11 and Ubuntu 8.04.

Right now you can upgrade your Deki (1.9.0 Itasca or later release) to the latest 8.05.1 using our repositories and your favorite package manager !
All you’ll have to do after the upgrade is to re-enable Deki in your Apache configuration and maybe flush the cache of your web browser.

Hope you’ll enjoy it and please give us your feedback on the forums !

Mathieu
MathieuO[at]mindtouch.com

June 23, 2008

MindTouch Developer Center Launch!

Steve Bjorg @ 11:20 am
mdc-logo.png

OpenGarden.org has finally taken its rightful place as the MindTouch Developer Center. For now, not much has changed except for the new address: http://developer.mindtouch.com. Your login continues to work and your bookmarks are redirected automatically. But in the coming weeks and months, we’ll be giving MDC a facelift and a new structure that will make it easier to find, contribute, and connect with fellow community members.

Why are we doing this?

There were really two needs I felt we had to address. First, the artificial dichotomy between OpenGarden and MindTouch created a semblance of a two-class structure: MindTouch and the Community. This was never the case, as we all know from our active collaboration on the forums and the wiki. Yet, appearances matter sometime. This small adjustment simply makes it clear to new members that we are one family.

Second, there was some overlap in content between MindTouch and OpenGarden, which caused confusion as to the purposes of the two sites. MDC will be specifically tailored to address the needs and wants of those who want to get the most out of MindTouch Deki: its capabilities, its extensions, its API, and its multi-platform support. To that end, the new structure will make it easier to discover the full set of features, as well as provide an equal home for contributions from MindTouch and the Community alike.

The MindTouch Developer Center is a long-term investment. Its build out will continue over months and years. And it will happen in small incremental steps so that everyone can participate to move it in the right direction.

I’m looking forward to creating with your help the best place for learning and sharing everything there is to know about MindTouch Deki!

June 20, 2008

The Bungee Line

Our friends at Bungee Labs invited me to participate for one of their tech podcasts. They did a great job organizing the interview and asking great questions. Hats off to them!

MindTouch’s Steve Bjorg joins us to tell us all about their wiki platform called “Deki.” MindTouch is rapidly growing Deki’s install base, largely on its slick user interface. But there’s something hidden under the all the UI slickness: under the hood, Deki supports a comprehensive web API. In fact, the PHP user interface fully delegates all operations over web-service calls to the API. In other words, web-dev geeks like us can safely customize or extend the UI without risk of interfering with Deki’s business logic, such as page permissions or revisions. Coooool! Oh, and did we mention that it’s Free Software?

Here is the link to the podcast. Enjoy!

June 19, 2008

The Universal Edit Button!

royk @ 12:28 pm

Martin Cleaver brought to our attention the launching of the Universal Edit Button today - it’s a Firefox plug-in which shows a standardized universal icon for any page that can be edited. Check out this screenshot from the blog post explaining it:

Universal Edit Button

Pretty simple and sweet! We’ve checked in the changes, which will be available in the next release of MindTouch Deki; you can see it live on our Developer Center wiki.

There’s more information about the button on the Universal Button wiki.

June 18, 2008

Working in support I have the benefit of talking with customers and users and finding out what parts of MindTouch Deki cause confusion or need clarification. A recent recurring question is how does MindTouch Deki handle concurrent edits. Specifically if there is a conflict with edits overlapping.
First let me stress that all of the functionality in this post assumes that you are running on 8.05 or higher.

MindTouch Deki has a sophisticated merging engine that will recognize separate changes down to the word and accurately merge the revisions together. This helps with collaboration as there are less chances that if more than one user is editing a page there will be conflicts.

First let’s examine at a high level how MindTouch Deki handles a merge.

Say you have the following set of sentences:

The dog ran along the fence while the boy biked away.
The boy was heading off to college to pursue his lifelong dream of being a developer.  

Bob edits the first sentence to read this: The black dog ran along the white fence while the boy biked away.

And Tim edits the second sentence to read: The boy was heading off to college to pursue his lifelong dream of being a baker.

These edits occur at the same time but are saved at different times. Regardless of who started the edit first and who saved first, MindTouch Deki will merge the sentences together to form a comprehensive set of sentences as it is intended:

The black dog ran along the white fence while the boy biked away.
The boy was heading off to college to pursue his lifelong dream of being a baker.

This is also true on a Section and Page level.

Now if Bob and Tim’s edits were to overlap then both edits will still be saved, but the last person to save will have the opportunity to review and compare the edits and confirm that nothing has been lost that should be kept.

Example:

Using the same sentences from above. Bob edits the first sentence to read:

The black duck waddled next to the white fence while the boy biked away.

While Tim edits the first sentence to read:

The black cat walked on top of the white fence while the boy biked away.

Bob saves his changes first which is accepted by the system. Tim saves his changes which is also accepted by the system. The system notices that there is some overlap and notifies Tim that there is a difference between his edit and what Bob had changed along with prompting him to compare versions to see the difference. This allows Tim to review Bob’s changes at a glance. If Bob’s changes need to be reincorporated, Tim can do so by re-edting the page. Otherwise Tim can also chose to leave the page as is.

We have put a lot of work into our conflict merging to ensure that you don’t lose content and to maintain the integrity of edits so that they can be integrated manually by the user as opposed to removing the edit because of a conflict.

As always, if further clarification is needed please feel free to post a comment or contact us.

June 3, 2008

We’re proud to announce the immediate availability of MindTouch Deki Jay Cooke 8.05.1 for both source and VM installs.

The final bug count was 167 (wow!), plus we made significant improvements in the performance of our application - the combination of API caching as well as third party open-source applications like eAccelerator improved performance on our test box from 1.94 req/second up to 25 req/second! A big thanks goes out to the Mozilla guys for helping out with performance tests and providing feedback on the 8.05.1 release.

As I wrote previously in the RC1 blog post, this release also contains a few features:

  • single sign-on utilizing Apache/IIS authentication modules (experimental) which this allows for easy integration with auth systems like NTLM #
  • digitally signed requests to extensions #
  • authentication for private RSS feeds #
  • ability to generate content inside the editor which affect different parts of the skin #

Get the download instructions for Deki 8.05.1, or read the release notes.

Our next release is Killen Woods, which is slated for the middle of July. For our Wik.is users, we will be updating Wik.is with the 8.05.1 bits sometime in the next two weeks (email forthcoming).

May 29, 2008

google-app-engine.pngYesterday, Google announced the general availability of Google App Engine, another option for deploying Cloud Software.

Google App Engine is a great place to create and share extensions for MindTouch Deki. By design, Deki is a distributed application platform that can be extended in any programming language, including C#, PHP, Java, Python, and the built-in DekiScript runtime. Sharing these extensions can be difficult though since you need to find a place to host them. This is were Google App Engine comes in.

Getting started is incredibly simple:

  1. Download the App Engine SDK.
  2. Create a new application.
  3. Add the DekiExt.py file to it.

After that, creating your own extension only takes a few lines of code:

class MyExtension(DekiExt):

# title for the extension
def title(self): return "My Extension"

# a function is exported in the XML manifest
@function("str", "return user greeting")
@param("str", "name of user")
def hello(self, name):
return "Hi " + name

Now upload your extension to your Google App Engine account and voilà, anybody can now benefit from it!

To invoke from MindTouch Deki, just register your extension in the control panel. Now your users can access it by simply typing:

{{ hello("Bob") }}

To learn more how to write your own extensions using Google App Engine, check out the tutorial. Then drop by the developer forums to share your work, ask questions, and provide suggestions. Enjoy!

May 28, 2008

With all the discussions about about Cloud Computing going on, it’s time to draw lines and explain what the big differences are between Software-as-a-Service (SaaS) and Cloud Software.cloud-jail.jpg

SaaS: The dawn of Cloud Computing

SaaS has been attractive, because it removes all complexity from installation, deployment, maintenance, is globally accessible, and affordable. By its nature, SaaS resides in the “cloud” and overcomes the traditional headaches of VPNs for efficient collaboration. An added bonus is transparent backups (assuming there is backup strategy).

SaaS is great first step towards Cloud Computing, but it also has an important drawback: control. For all practical purposes, your data is not yours anymore. The SaaS vendor has full control over it; can mine it; and can lock you out of it. For consumers, this is generally not a problem, but for the enterprise, it is a concern.

In short with SaaS, the vendor is in control, not the customer. For the early days of Cloud Computing, that was an acceptable compromise, but times have changed and the cloud has evolved.

Cloud Software: The evolution of Cloud Computing

Cloud Software builds on Cloud Infrastructure (as described in this great post by our friends at RightScale). Similar to SaaS, Cloud Software provides instant gratification, taking mere minutes to be up and running. Depending on the vendor, Cloud Software is as easy to maintain and update as SaaS, and is of course globally accessible.

So what is the big difference? Your data and your application is sitting on servers that you control. There are no restrictions on moving data into or off your Cloud Infrastructure. These servers are for all practical purposes indistinguishable from servers in your physical data center.

What about backups? Cloud Software is designed to be run in the cloud. That means, it already addresses the need to replicate data repositories into the Cloud Storage fabric. Again, you control the Cloud Storage, so you can create additional copies of your data offline if you need to.

What about scaling? Cloud Software is designed to run on one to many machines. That means as your needs increase, you simply add more virtual infrastructure to the mix and voilà!

What about vendor lock-in? Cloud Software doesn’t really care what it runs on. With Cloud Infrastructure, all machines look the same, meaning you can move your application from one provider to another with few limitations. If need be, you can even move it back to your physical data center.

In short, with Cloud Software, the customer is back in control.

Is Cloud Software going to replace SaaS?

The short answers is “no” for the simple reason that SaaS works well when a single machine can services 1,000 to 100,000s of individual users, such as in a consumer setting. In the enterprise, however, Cloud Software has a big advantage. The premium to gain full control over your data and your infrastructure with Cloud Software is simply too low to give SaaS vendors the kind of control they have enjoyed so far. High value applications will transition to Cloud Software because customers want control, while SaaS will continue to supply free or low-cost applications and services.

This also reflects the different options for running MindTouch Deki Wiki. Wik.is is free for up 100MB (or $99/yr for 10GB) with no other restrictions, but the data reside on our servers. Alternatively, you can download Deki Wiki as a certified VMware image or from source code and install it on your servers. Or, you can get the best of both worlds, and launch a Deki Wiki EC2 instance directly in an Amazon.com data center in the cloud

It’s good to have choices!