 Okay, I'm glad to present you a key type JavaScript framework. It's a client-side web framework entirely in JavaScript. So we just released the 0, 1, 5 version this week on the... I'll present you now. So why using JavaScript frameworks on the left end of the screen? You can see JavaScript without using any framework. It's quite ugly and readable and not very cross-brother. So on the right end, you've got exactly the same functionality with using a prototype framework. We realized on a prototype framework because it's very efficient. Okay, so we can do this with a lot of examples. They are all very complicated with raw JavaScript. So why having made a new framework? There are a lot of Ajax frameworks. This diagram... On this diagram, you can see exactly why. Prototype improves the language. It improves the navigator abstraction and that's almost everything it did. But it's quite perfect. So ScriptAquilus is another well-known framework which helps to do your own widgets, doing something sympathetic on your web page. Dojo gives a lot of widgets. It is very efficient in this manner. We consider that widgets are pre-made and you have to do your own work easily. You have to reuse your work when you're changing a project and being agile. So Archetype provides some good functionality. The first one is when you have a hard JavaScript code on your client side, you start to have a problem with JavaScript file loading. We've got a total dependency management for JavaScript file and other files like HTML, templates, CSS, etc. We provide good tools to structure your code with something we call the components. We'll see this in the next slide. An event communication between components. Really easy to use. And an MVC model to be quite separated. We focus on readability and maintainability. Each language is split in their own files. And the ease of development. We try to improve the syntax, the syntax, and simplify it as much as possible. We provide a convention over configuration style. Naturally, everything is easy. If you need something that fits your needs exactly, you can configure it in a configuration file. So it's very flexible. Basically, we've introduced new concepts in the language with a kind of super class which is called component. So here's the structure of archetype. So as said before, we realize on prototype on the custom event library which was made on use notably on the Apple Store for the iPhone. Quite efficient. We provide some good stuff for programming like a logger which is really important when you work in JavaScript. Dependency management said before on something I didn't speak about which is template interpreter. We've got templates on the JavaScript side. No server involved here. This is really great on lightning fast. And something very, very special which is a method builder which provides services like AOP where we do in Java, for example. So here's the typical JavaScript web page. You just have a title. You just insert the JavaScript tag for the library. There is nobody. I don't lie. You don't need anybody. You've got the template system loading. Archetype will load all the files needed. Just look at the location and load the controller for the page. And then the controller will launch everything necessary using the dependency system. So we've got configurable transitive dependencies between files. You've got an example of how dependencies are made in a component. You just say dependencies. I need this component, this component, this component, this libraries, this CSS, and this template. It's really simple. It's really natural. And so the development unit is really the component where we often use no more class. There are two kinds of components. The behavioral components and the graphical components. The graphical component is used as a widget with the JavaScript code and the loading of templates and the CSS file. Like you can see, yeah. Components don't need to know each other. It's an event system. You just launch an event. It's broadcasting to every component. And it's a bit catched by all the components interested and really easy to use and provide a real split between the layers, et cetera. Three languages to define a web interface, HTML, CSS, JavaScript for behavior. So we keep it separate as much as possible. This is the best practice. Archetype components encourages good practices. So you've seen a unique mechanism in JavaScript. This is method builders. I've explained a bit. There is some examples here. The create date is a private function. This function is empty. It just fires an update event. You don't have to define it. Archetype will do this. And date update is a callback which will be called when a date update will be sent. It has not to be sent by this component actually. Whoa. Kind of weird. So this is the structure of an application using Archetype. There's some problem here, but I don't know why. It's perfect on my PC. So here you've got static files, typically HTML templates, CSS files, JavaScript files. Here you have your server application and the Nezhax interface will do the job to do the web remoting. This is really a transport layer to do all you need, which is dynamic on the front side. So Archetype Core will load everything needed in static files. You can use libraries like Scriptacross, Dejo, whatever you want. And then you made your components, graphical components, which uses the ModelViewController system. The model is brought by the Ajax interface and the controller just sees everything needed to do a real middle on your front side. So now I will see you a bit of an application with Archetype. Typically, this presentation is made with Archetype. So here is the page defined in the browser and a little bit of code. Here's the page controller. It does almost nothing. It does almost nothing, just loading a component. It tells Archetype, launch me this component and Archetype will do the rest. This is the container component. So the container is here. The container itself is a graphical component. So it extends Archetype graphical components. You can do your own graphical components. It has a main template which is rendered by default. You don't have to say it particularly. It's in the render function of the graphical component. So basically when you have a really simple graphical component, you will just have to do your own stuff, not the generic things. Here we are using a bit the logger. The logger would be available if I have a firebug in Firefox. It's a really good debugger. Really good extension. Use it. So the logger tells what the controller does. I tell it when to render. The render function is not defined. It's defined in the graphical component. It instantiates some of the other components, all the components needed to launch this presentation. It could have been made only with Archetype, require component from the page controller. But it was made like this, so it's another way. Here is some basic components. No graphic here. Its aim is just to handle the keyboard events and the click events. There are two little arrow buttons on slide. One interesting thing is that I've anticipated to do some go to first slide, go to last slide, go to end slide. I didn't wire them in any other controller, but anyway it could have been sent and just not catch. That's the magic of the components. Slide counter. Slide counter could have been a graphical component, but the template was ridiculously simple. It's using simply adding some... We're here. If you're interested in using it or contributing, I'm here and available for your questions. Thank you.