21
XWiki A web development runtime platform based on the wiki paradigm Vincent Massol, February 2014

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

Embed Size (px)

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.

Citation preview

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