Transcript
Page 1: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

XWikiA web development runtime platform based

on the wiki paradigm

Vincent Massol, February 2014

Page 2: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Agenda

• Developing on XWiki

• A runtime platform

• Usages

• QA

Page 3: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Developing on XWiki

Page 4: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

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

Page 5: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Skinning & Theming

Page 6: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Skin ExtensionsCSS JS

== Grease Monkey

Page 7: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

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}}

Page 8: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

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}}

Page 9: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

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!

Page 10: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Extensions

Page 11: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

A runtime platform

Page 12: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Building an Application

Traditional way

Runtime

Page 13: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Building an Application

XWiki way - Morphing!

RuntimeRuntime

Page 14: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

XWiki Platform

... for developing (collaborative) web applications

Page 15: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Usages

Page 16: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Multiple Usages

Page 17: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

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

Page 18: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Long tail of AppsExcel of the

Web

Page 19: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

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

Page 20: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Q&A

Me

Page 21: XWiki: A web dev runtime for writing web apps @ FOSDEM 2014

Copyright (c) Vincent Massol - 2012

Vincent [email protected] skype: vmassol http://about.me/vmassol !http://xwiki.org http://xwiki.com


Top Related