XWiki
                         Developing simple web applications quickly




                                                         Copyright (c) Vincent Massol - 2012
    Ocober 2012


Friday, October 12, 12
Agenda
                         • Architecture
                         • Developing on XWiki
                         • Usages
                         • Pros and cons
                         • QA
                                                 Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Architecture


                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
XWiki Platform




                   ... for developing (collaborative) web applications
                                                                         Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Building an Application

                                                                           Runtime




                                   Traditional way
                                                Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Building an Application

       Runtime                                                                Runtime




                             XWiki way - Morphing!
                                                     Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Developing on XWiki
                             a.k.a Morphing XWiki




                                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Extensions




                                      Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Adding Structure

                         • Ability to associate arbitrary
                           data to any wiki page
                           • Enable structure in the wiki
                           • Enable Application development
                           • == Application wiki or Next Gen Wiki
                         • Application Within Minutes
                                                            Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Classes - Objects




                                       Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Class Sheets

                 • A Document with script to display the
                         content of Object(s) nicely
                 • Automatic usage if defined in Class
                         Document
                 • Can be overridden on a page basis if needed

                                                       Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Skinning & Theming




                                       Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Skin Extensions
                         CSS                      JS




                               == Grease Monkey        Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
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}}




                                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
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}}



                                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
UI Extensions
                                            Result
  Extension Point
   {{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

                                                  Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Wiki Macros




                                   Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Components
                         @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()
                                {
                                   ...
                                }
                         }

                         META-INF/components.txt
                         org.xwiki.rendering.internal.macro.message.MessageMacro




                                         + Wiki Components!
                                                                                   Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Usages


                                  Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Multiple Usages




                                      Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
http://www.xwiki.org/xwiki/bin/view/Main/Screenshots
                                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Long tail of Apps
                                               Excel of the
                                                  Web

                                              Web’s Swiss
                                              army knife




                                       Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Pros and Cons


                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
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
                                                   Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Cons
                         • Save code in SCM
                          • ... but SVN Application, Git Application
                         • Low integration with existing dev tools
                          • ... but XEclipse
                          • ... but WebDAV
                         • Not an official standard
                                                           Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Getting Started
                         •   Download XWiki from xwiki.org
                         •   Ask for a wiki on myxwiki.org
                             •   Non-profit orgs and individuals, no SLA
                             •   Used as a test platform by XWiki devs
                         •   XWiki Cloud
                             •   Free plan (5 users), paid plans
                         •   Contact a company supporting XWiki
                                                                   Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Q&A




                               Me
                                Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Vincent Massol
        vincent@xwiki.com
        skype: vmassol
        http://about.me/vmassol

        http://xwiki.org
        http://xwiki.com


                                  Copyright (c) Vincent Massol - 2012



Friday, October 12, 12

More Related Content

PDF
XWiki: Building a dynamic Conference web site
PDF
Developing XWiki
PDF
XWiki: Collaborative web applications the wiki way
PDF
Erik Drolshammer Enterprise.Wiki
PDF
XWiki Rendering @ FOSDEM 2014
PDF
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
PDF
Frans Mäyrä: Tosi ja virtuaalinen - liikettä maailmojen välillä
DOCX
Sistemas de Gestión de Contenidos (Content Management System o CMS)
XWiki: Building a dynamic Conference web site
Developing XWiki
XWiki: Collaborative web applications the wiki way
Erik Drolshammer Enterprise.Wiki
XWiki Rendering @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
Frans Mäyrä: Tosi ja virtuaalinen - liikettä maailmojen välillä
Sistemas de Gestión de Contenidos (Content Management System o CMS)

Similar to XWiki: Developing simple apps quickly (13)

PDF
A web development runtime platform based on the wiki paradigm
PDF
XWiki: A web development runtime platform
PDF
XWiki: A web development runtime platform
PDF
Pundit
PDF
XWiki Components Design Choices
PDF
XWiki: The web's Swiss Army Knife
PDF
Architecting large Node.js applications
PDF
Terrific Frontends
PDF
Scalability 09262012
PDF
ActiveSupport
PDF
Rethink your architecture - Marten Deinum
PPTX
Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...
PPTX
DevCamp Mfg Intro totototojde popisajeu d
A web development runtime platform based on the wiki paradigm
XWiki: A web development runtime platform
XWiki: A web development runtime platform
Pundit
XWiki Components Design Choices
XWiki: The web's Swiss Army Knife
Architecting large Node.js applications
Terrific Frontends
Scalability 09262012
ActiveSupport
Rethink your architecture - Marten Deinum
Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...
DevCamp Mfg Intro totototojde popisajeu d
Ad

More from Vincent Massol (20)

PDF
XWiki Testing with TestContainers
PDF
XWiki: The best wiki for developers
PDF
Advanced Java Testing @ POSS 2019
PDF
New types of tests for Java projects
PDF
Configuration Testing with Docker & TestContainers
PDF
Building XWiki
PDF
New types of tests for Java projects
PDF
What's new in XWiki 9.x and 10.x
PDF
QDashboard 1.2
PDF
Advanced Java Testing
PDF
Creating your own project's Quality Dashboard
PDF
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
PDF
Creating your own project's Quality Dashboard
PDF
Leading a Community-Driven Open Source Project
PDF
Developing XWiki
PDF
XWiki Status - July 2015
PDF
XWiki SAS development practices
PDF
XWiki SAS: An open source company
PDF
Implementing Quality on a Java Project
ODP
Implementing Quality on Java projects (Short version)
XWiki Testing with TestContainers
XWiki: The best wiki for developers
Advanced Java Testing @ POSS 2019
New types of tests for Java projects
Configuration Testing with Docker & TestContainers
Building XWiki
New types of tests for Java projects
What's new in XWiki 9.x and 10.x
QDashboard 1.2
Advanced Java Testing
Creating your own project's Quality Dashboard
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
Creating your own project's Quality Dashboard
Leading a Community-Driven Open Source Project
Developing XWiki
XWiki Status - July 2015
XWiki SAS development practices
XWiki SAS: An open source company
Implementing Quality on a Java Project
Implementing Quality on Java projects (Short version)
Ad

Recently uploaded (20)

PDF
A review of recent deep learning applications in wood surface defect identifi...
DOCX
search engine optimization ppt fir known well about this
PDF
Five Habits of High-Impact Board Members
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
Statistics on Ai - sourced from AIPRM.pdf
PPT
Geologic Time for studying geology for geologist
PDF
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
PPTX
Build Your First AI Agent with UiPath.pptx
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
Architecture types and enterprise applications.pdf
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PPTX
Training Program for knowledge in solar cell and solar industry
PPTX
Benefits of Physical activity for teenagers.pptx
PDF
Improvisation in detection of pomegranate leaf disease using transfer learni...
PDF
UiPath Agentic Automation session 1: RPA to Agents
PPTX
Configure Apache Mutual Authentication
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
sbt 2.0: go big (Scala Days 2025 edition)
PDF
Comparative analysis of machine learning models for fake news detection in so...
PDF
Enhancing plagiarism detection using data pre-processing and machine learning...
A review of recent deep learning applications in wood surface defect identifi...
search engine optimization ppt fir known well about this
Five Habits of High-Impact Board Members
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Statistics on Ai - sourced from AIPRM.pdf
Geologic Time for studying geology for geologist
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
Build Your First AI Agent with UiPath.pptx
A contest of sentiment analysis: k-nearest neighbor versus neural network
Architecture types and enterprise applications.pdf
Convolutional neural network based encoder-decoder for efficient real-time ob...
Training Program for knowledge in solar cell and solar industry
Benefits of Physical activity for teenagers.pptx
Improvisation in detection of pomegranate leaf disease using transfer learni...
UiPath Agentic Automation session 1: RPA to Agents
Configure Apache Mutual Authentication
Module 1.ppt Iot fundamentals and Architecture
sbt 2.0: go big (Scala Days 2025 edition)
Comparative analysis of machine learning models for fake news detection in so...
Enhancing plagiarism detection using data pre-processing and machine learning...

XWiki: Developing simple apps quickly

  • 1. XWiki Developing simple web applications quickly Copyright (c) Vincent Massol - 2012 Ocober 2012 Friday, October 12, 12
  • 2. Agenda • Architecture • Developing on XWiki • Usages • Pros and cons • QA Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 3. Architecture Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 4. XWiki Platform ... for developing (collaborative) web applications Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 5. Building an Application Runtime Traditional way Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 6. Building an Application Runtime Runtime XWiki way - Morphing! Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 7. Developing on XWiki a.k.a Morphing XWiki Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 8. Extensions Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 9. Adding Structure • Ability to associate arbitrary data to any wiki page • Enable structure in the wiki • Enable Application development • == Application wiki or Next Gen Wiki • Application Within Minutes Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 10. Classes - Objects Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 11. Class Sheets • A Document with script to display the content of Object(s) nicely • Automatic usage if defined in Class Document • Can be overridden on a page basis if needed Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 12. Skinning & Theming Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 13. Skin Extensions CSS JS == Grease Monkey Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 14. 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}} Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 15. 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}} Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 16. UI Extensions Result Extension Point {{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 Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 17. Wiki Macros Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 18. Components @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()    {       ...    } } META-INF/components.txt org.xwiki.rendering.internal.macro.message.MessageMacro + Wiki Components! Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 19. Usages Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 20. Multiple Usages Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 21. http://www.xwiki.org/xwiki/bin/view/Main/Screenshots Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 22. Long tail of Apps Excel of the Web Web’s Swiss army knife Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 23. Pros and Cons Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 24. 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 Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 25. Cons • Save code in SCM • ... but SVN Application, Git Application • Low integration with existing dev tools • ... but XEclipse • ... but WebDAV • Not an official standard Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 26. Getting Started • Download XWiki from xwiki.org • Ask for a wiki on myxwiki.org • Non-profit orgs and individuals, no SLA • Used as a test platform by XWiki devs • XWiki Cloud • Free plan (5 users), paid plans • Contact a company supporting XWiki Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 27. Q&A Me Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 28. Vincent Massol [email protected] skype: vmassol http://about.me/vmassol http://xwiki.org http://xwiki.com Copyright (c) Vincent Massol - 2012 Friday, October 12, 12