xwiki: a web dev runtime for writing web apps @ fosdem 2014

Post on 06-Dec-2014

1.629 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

When developing a web application, the traditional way is to develop the application from scratch using a general purpose language such as PHP, Grails, Play, Java/JSP, etc. This presentation will show that a next generation wiki (examples based on XWiki: http://xwiki.org) can be used as a web development platform to develop applications on top of it, providing a strong infrastructure scaffolding to building web applications. The advantages are similar to those of using an application sever. However whereas an application server offers technical services only, a wiki platform offers higher level services such as content management, rendering, storage, WYSIWYGeditor, user management, and a lot more. Not only are these services offered, you can develop using them in your traditional IDE or in the runtime, directly in wiki pages. This allows developing web applications extremely quickly, collaboratively and with a fast turnaround time, which is perfect for adhoc web application development.

TRANSCRIPT

XWikiA web development runtime platform based

on the wiki paradigm

Vincent Massol, February 2014

Agenda

• Developing on XWiki

• A runtime platform

• Usages

• QA

Copyright (c) Vincent Massol - 2012

Developing on XWiki

Copyright (c) Vincent Massol - 2012

Metadata!

• Ability to associate arbitrary data to any wiki page

• 1: Create metadata definition in a wiki page (a.k.a xclass)

• 2: Use it in wiki pages (a.k.a xobjects)

• 3: Use scripting in wiki pages to access it

• Allows application development

Demo

Copyright (c) Vincent Massol - 2012

Skinning & Theming

Copyright (c) Vincent Massol - 2012

Skin ExtensionsCSS JS

== Grease Monkey

Copyright (c) Vincent Massol - 2012

Scripting in Pages (1/2){{groovy}} import groovy.json.* !def url = "https://api.github.com/users/xwiki/repos".toURL().text def root = new JsonSlurper().parseText(url) !println "|=Project|=Description|=Use Wiki?|=Use Issues?" root.each() { repo -> println "|[[${repo.name}>>http://github.com/xwiki/${repo.name}]]|${repo.description}|${repo.has_wiki}|${repo.has_issues}" } {{/groovy}}

Copyright (c) Vincent Massol - 2012

Scripting in Pages (2/2){{velocity}} #set ($xwql = "where doc.content like '%welcome%'") #foreach ($item in $services.query.xwql($xwql).execute()) #if ($request.confirm == "1") #set ($itemDoc = $xwiki.getDocument($item)) $itemDoc.setContent($itemDoc.getContent().replaceAll( "welcome", "bienvenue")) $itemDoc.save("Replaced bienvenue") * [[$item>>$item]] replaced! #else * [[$item>>$item]] #end #end ![[Replace "welcome" by "bienvenue">>?confirm=1]] {{/velocity}}

Copyright (c) Vincent Massol - 2012

Components in Java@Role!public interface Macro!{!    List<Block> execute();!}

@Component!@Named("message")!@Singleton!public class MessageMacro implements Macro!{!    @Inject!    private Execution execution;!!    @Inject!    @Named("box")!    private Macro boxMacro;!!    public List<Block> execute()!    {!       ...!    }!}

org.xwiki.rendering.internal.macro.message.MessageMacro

META-INF/components.txt

+ Wiki Components!

Copyright (c) Vincent Massol - 2012

Extensions

Copyright (c) Vincent Massol - 2012

A runtime platform

Copyright (c) Vincent Massol - 2012

Building an Application

Traditional way

Runtime

Copyright (c) Vincent Massol - 2012

Building an Application

XWiki way - Morphing!

RuntimeRuntime

Copyright (c) Vincent Massol - 2012

XWiki Platform

... for developing (collaborative) web applications

Copyright (c) Vincent Massol - 2012

Usages

Copyright (c) Vincent Massol - 2012

Multiple Usages

Copyright (c) Vincent Massol - 2012

http://www.xwiki.org/xwiki/bin/view/Main/Screenshots

Copyright (c) Vincent Massol - 2012

Long tail of AppsExcel of the

Web

Copyright (c) Vincent Massol - 2012

Pros• Iterative, Need-based development

• Continuous Delivery

• Work collaboratively on creating applications

• Designers can style while devs create logic

• Works from day one, immediate feedbacks

• Open source and community-based

Copyright (c) Vincent Massol - 2012

Q&A

Me

Copyright (c) Vincent Massol - 2012

Vincent Massolvincent@xwiki.com skype: vmassol http://about.me/vmassol !http://xwiki.org http://xwiki.com

top related