a web development runtime platform based on the wiki paradigm
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](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/2.jpg)
Agenda
• Developing on XWiki
• A runtime platform
• Usages
• QA
![Page 3: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/3.jpg)
Copyright (c) Vincent Massol - 2012
Developing on XWiki
![Page 4: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/5.jpg)
Copyright (c) Vincent Massol - 2012
Skinning & Theming
![Page 6: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/6.jpg)
Copyright (c) Vincent Massol - 2012
Skin ExtensionsCSS JS
== Grease Monkey
![Page 7: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/10.jpg)
Copyright (c) Vincent Massol - 2012
Extensions
![Page 11: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/11.jpg)
Copyright (c) Vincent Massol - 2012
A runtime platform
![Page 12: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/12.jpg)
Copyright (c) Vincent Massol - 2012
Building an Application
Traditional way
Runtime
![Page 13: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/13.jpg)
Copyright (c) Vincent Massol - 2012
Building an Application
XWiki way - Morphing!
RuntimeRuntime
![Page 14: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/14.jpg)
Copyright (c) Vincent Massol - 2012
XWiki Platform
... for developing (collaborative) web applications
![Page 15: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/15.jpg)
Copyright (c) Vincent Massol - 2012
Usages
![Page 16: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/16.jpg)
Copyright (c) Vincent Massol - 2012
Multiple Usages
![Page 17: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/18.jpg)
Copyright (c) Vincent Massol - 2012
Long tail of AppsExcel of the
Web
![Page 19: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/20.jpg)
Copyright (c) Vincent Massol - 2012
Q&A
Me
![Page 21: A web development runtime platform based on the wiki paradigm](https://reader035.vdocuments.us/reader035/viewer/2022070302/548597e8b4795984178b4a49/html5/thumbnails/21.jpg)
Copyright (c) Vincent Massol - 2012
Vincent [email protected] skype: vmassol http://about.me/vmassol !http://xwiki.org http://xwiki.com