Jitsu FAQ

Basics

Q: What is Jitsu exactly?

Jitsu is an open source project. We are developing a user interface toolkit to make it easier to build the "front end" (i.e. the user interface compoent) of rich web applications. Our objective is to enable web developers to utilize features such as Xml markup and client-side data binding to build more sophisticated web "Ajax" applications with less code.

The Jitsu tool set currently includes an Xml markup languge, a compiler that converts that markup to a JavaScript representation, a JavaScript runtime, and a set of basic controls.

See the Jitsu Overview for more information.

Q: Who created Jitsu?

Jitsu is being developed by Attap, a small group of innovators whose goal is to help fulfill the promise of the web by making useful stuff available to all.

Two of the principal architects are Ken Cooper and Jon Meyer.

Ken Cooper has extensive experience with OO UI frameworks. Previous to Jitsu, Ken was a UI architect at Microsoft, contributing six patents in his work on ASP.Net and the Windows Presentation Foundation. In earlier work as a founder of Cooper & Peters, he co-wrote Eyeopener, a Java UI framework and application suite subsequently purchased by Microsoft. Prior to that he coauthored several popular tools for the Smalltalk environment: Widgets, a UI framework and interface builder; WindowBuilder, a interface designer, and edIt, a programmer's editor.

Jon Meyer has been creating user interface frameworks and tools since 1988. Before Jitsu, Jon worked at Microsoft on the Expression Sparkle Interactive Designer. Prior to that, he was a research scientist at New York University's Computer Science department, working with Ken Perlin and Ben Bederson on zoomable user interfaces, including Pad++, Jazz and Piccolo. His earliest UI work includes a multimedia X11 widget framework for Integral Solutions Limited, adopted by Clementine, a successful data mining toolkit acquired by SPSS.

Q: Who is using Jitsu?

Jitsu is still very new and only has a few alpha testers to date. Jitsu is a core technology for the user interface of LifeIO, a web application for consumers. LifeIO will ship later in 2006.

Q: Is Jitsu free? What is the Jitsu license?

Jitsu is being made freely available under an open source license. See Licensing for more.

Q: What does the name Jitsu mean?

We picked Jitsu simply because we liked it. Its not an acronym.

"Jutsu" is a Japanese word that roughly translates as "techniques" or "art". You've probably seen it before in the word Ju-jutsu (from the Japanese Jū, 'gentle'), a defensive martial art. We certainly riffed on that meaning.

Jitsu is a common romanization of Jutsu (a quick Google search shows many more hits for Jitsu than Jutsu). As Tim Mansfield (our first external contributor) pointed out, the formally correct ISO encoding is "Jutsu". Since there are only the five pure vowel sounds in Japanese, there's no way a Japanese person would mis-speak the 'i' sound for the 'u' sound, but we thought you should know.

Q: When will Jitsu ship?

Please see the Jitsu Roadmap for details on release plans.

Q: How can I contribute?

Right now we are gathering feedback on all aspects of the design of Jitsu. Please use the feedback forms on this site.

If you are interested in contributing controls or other modules, or being involved in other ways, send us email at: jitsuattap.com.

Using Jitsu

Q: What web browsers can run Jitsu applications?

The Jitsu runtime is written in pure JavaScript and DHTML, so any "modern" web browser should do - no special browser plugin is required.

Jitsu was developed using FireFox and IE, so those two browsers work best. We've tested it less extensively on Safari and Opera.

Q: What development requirements are there to build Jitsu apps?

The Jitsu compiler is implemented in C#, so you need either Windows XP (and Microsoft .NET CLR), or Linux / Mac OS X (and Mono) to run the compiler.

There is currently no visual builder or GUI for Jitsu - you have to write your application by hand in Xml and JavaScript. So a good code editor is important.

Q: What server-side requirements are there?

Once a Jitsu app is compiled, the resulting HTML/JavaScript files can be deployed onto any web server - you don't need either Mono or Windows to deploy a Jitsu application.

Jitsu is back-end agnostic. We don't prescribe (or even provide) any particular back-end server solution. Use PHP, Ruby, Java, Perl, .NET, Python, Windows, Linux, Apache, Oracle, MySql, or all of the above...

Our one requirement is that the server talk to the front-end using JSON (JavaScript Object Notation). We provide a JSON format and marshalling mechanism, and give a PHP sample connector. If you are already generating HTML and XML, we believe adding a JSON connector should be straightforward.

Q: Should my web application use Jitsu?

Jitsu is still in its infancy and the code provided here is intended for evaluation and feedback only. We don't feel that Jitsu today is suitable for use in a large-scale project. In the near future, we will release a Beta version of Jitsu that will be much more suitable as a building base.

Solutions like Jitsu are a good fit for large and highly-interactive AJAX applications, like email apps, note taking programs, web blog editors, etc. Jitsu is probably not a good choice if you simply want to add a few bells and whistles to a page (use a lightweight solution for that). Similarly, if your site handles a lot of ad-hoc traffic or primarily serves text HTML (e.g. sites like Wikipedia, NYTimes.com etc), you may not want the overhead of an Ajax framework.

Jitsu and other UI Toolkits

Q: What technologies are related to Jitsu?

Some other technologies incorporating an Xml user interface markup are:

Other toolkits for web applications include:

Q: Why isn't Jitsu based on (X)

When we started building Jitsu, we investigated several other web toolkits (including those on the list above).

The toolkits we looked at did not have the infrastructure necessary to support Jitsu's rich client-side data binding or compiled Xml markup. Rather than trying to retrofit another toolkit, we decided to create a new framework designed from scratch with these features in mind.

Q: Can Jitsu interoperate with other Ajax technologies?

Yes. We have built Jitsu controls that embed e.g. FckEditor or Dojo's Rich Text editor. We are working on samples that demonstrate how to do this. Our goal is to "play nice with others".

Also, outside of a Jitsu App on the page you can do any of the old JavaScript tricks you are used too.

Design Issues

Q: Jitsu seems pretty complex, why should I switch?

We agree there's a steep learning curve. There’s a lot of power here, and it takes a while to absorb it all (any comments on opaque docs are very welcome). Jitsu is very new and we think we can do quite a bit more to make it cleaner and easier to adopt.

In the long run, we believe a compiled-Xml approach with databinding is the right one for non-trivial apps. Adobe Flex and Microsoft XAML have both moved in that direction, and Jitsu represents an open source alternative.

Technical Issues

Q: Why doesn't DockPanel Work?

Q: I've created a DockPanel and some of its contents aren't appearing. What's going on?

DockPanel requires you specify its width and height through styling so it can determine how to layout its contents. (It can't "size-to-fit" because of various issues with browsers like IE).

You can either give the DockPanel a specific width or height e.g. <j:DockPanel style="width:xxx;height:yyy;" ... >. Alternatively, look at the code in htdocs/jitsu/tests/dockpanel.src.html - this shows a full-page dock-panel that occupies the entire browser window.

Q: My app is running slow, what's going on?

The most common reasons apps run slowly is that you have a lot of controls or a lot of bindings on a page.

Browsers (especially IE6) have significant limits on how many objects they let you create before they start "garbage collective" frequently, which slows apps down.

Look at Optimizing for details on how to replace some of your #bind's with other alternatives.

Q: How can my local Puny server connect to data?

One problem with using a local server for Jitsu is that nearly all web applications will also be dependent on server-side data services, written in languages like PHP, Perl, etc.

Jitsu has three solutions to this:

1. Proxying.

We're just adding an HTTP proxy mechanism to Puny.

With this, Puny handles references to local URLs by serving local files (compiling if required), but any references to remote data service URLs are "proxied" i.e. mapped through to the remote server. This is transparent to Puny users.

The nice thing about this is that it means you can develop your UI locally (fast editing, local files, quick turnaround, etc) and still build apps that are connected to remote data services written in PHP Perl etc. And when you copy your project files to the remote destination, they "just work" because they are still referring to the same URLs.

2. Data Snapshots.

A second technique is to use data snapshots, which let you save some of your server data to a file, so you can work on a UI even if you are on a remote site and don't have access to the server. (We're using this so our designers can see UI without needing to install an Apache server).

3. Run Jitsu as a command.

In the worst case, you can always install the Jitsu compiler on your server machines (Jitsu.exe runs under Mono on Linux) and use a "make" command to build Jitsu apps on your server. Our back-end team works with Jitsu like this quite successfully, running Jitsu from the command line on their Linux Apache boxes.

Its fairly straightforward to write a Perl script using MOD_REWRITE to watch files and run jitsu.exe automatically when files change. We haven't done this yet.