Upload
vincent-massol
View
3.285
Download
0
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, Java/JSP, etc. This presentation will show that a second 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 much if not all the needed infrastructure scaffolding.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 with a fast turnaround time, which is perfect for adhoc web application development.
Citation preview
Copyright (c) Vincent Massol - 2011
XWikiA collaborative development platform runtime based
on the wiki paradigm
September 2011
Copyright (c) Vincent Massol - 2011
Agenda
• What is XWiki?
• Development Capabilities
• Why use XWiki?
• QA
Copyright (c) Vincent Massol - 2011
What is XWiki?
Copyright (c) Vincent Massol - 2011
Is it a first gen Wiki?
Copyright (c) Vincent Massol - 2011
Is it a first gen Wiki?
Not only!
Copyright (c) Vincent Massol - 2011
Is it an Advanced Wiki?
Copyright (c) Vincent Massol - 2011
Is it an Advanced Wiki?
Not only!
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
It’s a dev platform!
... and a lot more...
Copyright (c) Vincent Massol - 2011
XWiki Platform
... for developing (collaborative) web applications
Copyright (c) Vincent Massol - 2011
Multiple Usages
Copyright (c) Vincent Massol - 2011
Long tail of AppsExcel of the
Web
Copyright (c) Vincent Massol - 2011
Development Capabilities
Copyright (c) Vincent Massol - 2011
Scripting in Pages (1/2){{groovy}}@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.1')import groovyx.net.http.*
def http = new HTTPBuilder( 'http://nexus.xwiki.org/nexus/' )def resp = http.get( path: 'service/local/repositories')
println "|=Name|=Type|=Location"resp.data."repositories-item".each() { println "|${it.name}|${it.repoType}|${it. contentResourceURI}"}{{/groovy}}
Demo
Copyright (c) Vincent Massol - 2011
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}}
Demo
Copyright (c) Vincent Massol - 2011
Adding MetaData• Ability to associate arbitrary
data to any wiki page
• Enable structure in the wiki
• Enable Application development
• Future: Application Within Minutes
Demo
Copyright (c) Vincent Massol - 2011
Wiki MacrosDemo
Copyright (c) Vincent Massol - 2011
Skinning & ThemingDemo
Copyright (c) Vincent Massol - 2011
Components@ComponentRolepublic interface Macro{ List<Block> execute();}
Demo
@Component@Named("message")@Singletonpublic 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
Copyright (c) Vincent Massol - 2011
extensions.xwiki.org
Copyright (c) Vincent Massol - 2011
Why use XWiki?
Copyright (c) Vincent Massol - 2011
Pros (1/2)
• Iterative, Need-based development
• Continuous Delivery
• Online immediately (no deployment needed)
• Works from day one, immediate feedbacks
Copyright (c) Vincent Massol - 2011
Pros (2/2)
• Work collaboratively on creating applications
• Designers can style while devs create logic
• Open source
• Strong and meritocratic community
Copyright (c) Vincent Massol - 2011
Cons• Save code in SCM
• ... but SVN Application
• Low integration with existing dev tools
• ... but XEclipse
• ... but WebDAV
• Not an official standard
• Higher “risk”, less trained devs, etc
Copyright (c) Vincent Massol - 2011
Q&A
Me
Copyright (c) Vincent Massol - 2011
Vincent [email protected]: vmassolhttp://about.me/vmassol
http://xwiki.orghttp://xwiki.com