Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

XWiki: The web's Swiss Army Knife

763 views

Published on

Presentation held at Softshake 2017.

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.

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

XWiki: The web's Swiss Army Knife

  1. 1. XWiki The web’s Swiss Army Knife Vincent Massol, October 2017
  2. 2. Agenda •Why XWiki? •Developing on XWiki •A runtime development platform •Usages •QA
  3. 3. Copyright (c)Vincent Massol - 2017 Why XWiki? • Traditional: wiki concepts applied to content • XWiki: wiki concepts applied also to application development • Wiki concepts • Edit, Save,View results • Versioning and ability to rollback • Work together easily on a topic • In wiki pages
  4. 4. Copyright (c)Vincent Massol - 2017 Developing on XWiki
  5. 5. Copyright (c)Vincent Massol - 2017 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 • Application Within Minutes app to help out Demo
  6. 6. Copyright (c)Vincent Massol - 2017 Skinning & Theming
  7. 7. Copyright (c)Vincent Massol - 2017 Skin Extensions CSS JS == Grease Monkey
  8. 8. Copyright (c)Vincent Massol - 2017 UI Extensions {{velocity}} ... #foreach($uix in $services.uix.getExtensions( 'org.xwiki.platform.panels.Applications')) #set($params = $uix.getParameters()) * [[image:$params.icon $params.label>>$params.target]] #end ... {{/velocity}} Extension Point Extension Result
  9. 9. Copyright (c)Vincent Massol - 2017 Scripting in Pages {{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}}
  10. 10. Copyright (c)Vincent Massol - 2017 Scripting in Pages {{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}}
  11. 11. Copyright (c)Vincent Massol - 2017 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!
  12. 12. Copyright (c)Vincent Massol - 2017 Extensions
  13. 13. Copyright (c)Vincent Massol - 2017 A runtime platform
  14. 14. Copyright (c)Vincent Massol - 2017 Building an Application Traditional way Runtime
  15. 15. Copyright (c)Vincent Massol - 2017 Building an Application XWiki way - Morphing! RuntimeRuntime
  16. 16. Copyright (c)Vincent Massol - 2017 XWiki Platform ... for developing (collaborative) web applications
  17. 17. Copyright (c)Vincent Massol - 2017 Usages
  18. 18. Copyright (c)Vincent Massol - 2017 Multiple Usages
  19. 19. Copyright (c)Vincent Massol - 2017 http://www.xwiki.org/xwiki/bin/view/Main/Screenshots
  20. 20. Copyright (c)Vincent Massol - 2017 Long tail of Apps Excel of the Web Web’s Swiss Army Knife
  21. 21. Copyright (c)Vincent Massol - 2017 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
  22. 22. Copyright (c)Vincent Massol - 2017 Q&A Me
  23. 23. Copyright (c)Vincent Massol - 2017 Vincent Massol vincent@xwiki.com skype: vmassol http://about.me/vmassol http://xwiki.org http://xwiki.com

×