XWiki
A web development runtime platform based
on the wiki paradigm

Vincent Massol, February 2014
Agenda
• Developing on XWiki	

• A runtime platform	

• Usages	

• QA
Developing on XWiki

Copyright (c) Vincent Massol - 2012
Metadata!

Demo

• 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

Copyright (c) Vincent Massol - 2012
Skinning & Theming

Copyright (c) Vincent Massol - 2012
Skin Extensions
CSS

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()!
   {!
      ...!
   }!

}

META-INF/components.txt
org.xwiki.rendering.internal.macro.message.MessageMacro

+ Wiki Components!
Copyright (c) Vincent Massol - 2012
Extensions

Copyright (c) Vincent Massol - 2012
A runtime platform

Copyright (c) Vincent Massol - 2012
Building an Application
Runtime

Traditional way
Copyright (c) Vincent Massol - 2012
Building an Application
Runtime

Runtime

XWiki way - Morphing!
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 Apps
Excel 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 Massol
vincent@xwiki.com	

skype: vmassol	

http://about.me/vmassol	

!

http://xwiki.org	

http://xwiki.com	


Copyright (c) Vincent Massol - 2012

A web development runtime platform based on the wiki paradigm