a web development runtime platform based on the wiki paradigm

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

Upload: xwiki

Post on 07-Dec-2014

1.492 views

Category:

Technology


2 download

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 shows 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.

TRANSCRIPT

Page 1: A web development runtime platform based on the wiki paradigm

XWikiA web development runtime platform based

on the wiki paradigm

Vincent Massol, February 2014

Page 2: A web development runtime platform based on the wiki paradigm

Agenda

• Developing on XWiki

• A runtime platform

• Usages

• QA

Page 3: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Developing on XWiki

Page 4: A web development runtime platform based on the wiki paradigm

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: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Skinning & Theming

Page 6: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Skin ExtensionsCSS JS

== Grease Monkey

Page 7: A web development runtime platform based on the wiki paradigm

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: A web development runtime platform based on the wiki paradigm

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: A web development runtime platform based on the wiki paradigm

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: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Extensions

Page 11: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

A runtime platform

Page 12: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Building an Application

Traditional way

Runtime

Page 13: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Building an Application

XWiki way - Morphing!

RuntimeRuntime

Page 14: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

XWiki Platform

... for developing (collaborative) web applications

Page 15: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Usages

Page 16: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Multiple Usages

Page 17: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

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

Page 18: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Long tail of AppsExcel of the

Web

Page 19: A web development runtime platform based on the wiki paradigm

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: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

Q&A

Me

Page 21: A web development runtime platform based on the wiki paradigm

Copyright (c) Vincent Massol - 2012

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