We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

XWiki: Annotating Documents, the eXtensible Wiki Way

00:00

Formal Metadata

Title
XWiki: Annotating Documents, the eXtensible Wiki Way
Alternative Title
XWiki: Annotating documents, the eXtensible wiki way
Title of Series
Number of Parts
64
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Since version 2.3, XWiki integrates document annotations in its collaborative environment (http://extensions.xwiki.org/xwiki/bin/view/Extension/Annotations+Application). This talk will focus on the implementation of the annotation feature, with the challenges that an eXtensible wiki implies: handling user collaboration on documents and annotations, annotating dynamically generated content, flexible annotations structure to allow customization. As a default XWiki feature, it allows users to add notes on all types of content, plain unstructured documents or structured documents. It is also used in the Scribo project (http://www.scribo.ws) to manipulate automatic semantic annotations on wiki documents and collaboration around them. Since a demo is worth a thousand words, the presentation will center upon showing all these at work. XWiki is a Java open source software development platform based on the wiki principles. In addition to being a full-featured wiki, it is also a second generation wiki allowing collaborative web applications to be written easily and quickly. On top of this platform several products are developed, targeted mainly on aiding enterprise-level needs.
WikiGamma functionCodeLine (geometry)Enterprise architectureJava appletCollaborationismMobile appDemo (music)BitCartesian coordinate systemJava appletWikiUser interfaceNormal (geometry)Projective planeExtension (kinesiology)Level (video gaming)Enterprise architectureData typeComputer animationXML
Execution unitHypothesisMultiplication signComputer animationLecture/Conference
BitRevision controlComputer animation
WikiWikiMultiplication signAuthorizationRevision controlDemo (music)Physical systemComputer animation
Scale (map)Event horizonPointer (computer programming)Gamma functionMaxima and minimaDemo (music)Multiplication signOrder (biology)Table (information)MereologyOpen sourceWindowWikiFuzzy logicLink (knot theory)Computer iconSound effectKeyboard shortcutInternetworkingType theoryBitComputer animation
Menu (computing)Network topologyWeb pageObject (grammar)Open sourceQuantum stateContent (media)Table (information)Scripting languageBitVelocityElectronic visual displayComputer animation
VolumenvisualisierungMenu (computing)Computer virusNetwork topologyArtistic renderingWeb pageoutputWordOpen sourceFunction (mathematics)Content (media)BitFile formatScripting languageWikiLink (knot theory)Metric systemLevel (video gaming)Context awarenessDiscrete element methodEndliche ModelltheorieMacro (computer science)MereologyCASE <Informatik>AbstractionMultiplication signRight angleAbstract syntax treeStrategy gamePositional notationHypermediaAbstract syntaxComputer animation
outputWeb pageMereologyTwitterOrder (biology)Computer animation
Scale (map)Event horizonFreewareGamma functionOpen setValidity (statistics)Computer animation
Beta functionEvent horizonScale (map)Group actionMassArmOpen sourceData structureContent (media)InformationTable (information)Right angleConfiguration spaceSocial classWeb pageBitCASE <Informatik>Field (computer science)Macro (computer science)MathematicsWikiLevel (video gaming)Electronic mailing listCategory of beingUniform resource locatorSelectivity (electronic)Computer programComputer iconData modelProjective planeType theoryString (computer science)Computer animation
Maxima and minimaChannel capacityIntrusion detection systemMedianNetwork topologyEvent horizonHidden Markov modelView (database)Field (computer science)Content (media)Regular graphProjective planeInternet forumMedical imagingWikiType theoryData storage deviceSemantics (computer science)Web pageInternet service provider1 (number)Self-organizationIntegrated development environmentRotationComputer animation
Extension (kinesiology)Object (grammar)Uniform resource locatorRobotData structureData storage deviceMereologyWikiDefault (computer science)Representational state transferModule (mathematics)Library (computing)BitServer (computing)Core dumpSoftware maintenanceExtension (kinesiology)Moment (mathematics)Artistic renderingComputing platformExpressionInterface (computing)Modul <Datentyp>Computer animation
XML
Transcript: English(auto-generated)
Hello everybody, I'm Anka from the XWiki project and in the next 15 minutes, we're gonna see how we implemented annotations on documents the extensible wiki way and you'll soon understand what that means
So a bit about XWiki. XWiki is an enterprise application wiki written in Java. It's been there for six years. I've been a committer for almost three years now That's from 2010 Twenty-three committers, twelve commits per day, four issues fixed per day, which is quite good. Now, what's enterprise
application wiki? What's an application wiki most important? Well first it means that it's a wiki, it has the documents, it has enterprise level collaboration features around these documents and Besides that it has extensibility features to allow users to create situational applications Meaning that users would normal users would go in the web interface of the wiki
they will define data types and and they will fill in data for those data types store it in the wiki and then write a little bit of scripting to use that data to create little applications and We have actually I have actually done that you're gonna see how it works in the demo
Now about these annotations the first time I used the annotation seriously was when I was preparing my Bachelor of Science thesis and I was Creating these PDFs sending them to my supervisor. My supervisor was filling them with the yellow stuff Hopefully after a couple of months. I managed to get a non yellow paper to actually do the thesis and
So he was giving me various suggestions. Don't rephrase that don't write it like this and so on and so on So we were exchanging these documents between me and him now imagine that I have a colleague I want to write the paper with and some other professor I want to to annotate to review my paper and
You can see that's already a bit too much communication And if we add some more people and some more people it becomes a whole big pile of mess We don't know where the paper is. Which one is the latest version which review is for which version and so on Of course, obviously the solution is to do this in a wiki
Could have I could have put some smiley faces on those people actually So we you have authors that collaborate in the wiki to create the paper you have the reviewers that also do the annotations on top of that paper in that wiki and Everything is everything is integrated in the same system So you can see always the latest version latest modifications latest reviews and so on
Let's see how that actually happens in X wiki So this is a demo time Where I have to find the correct window now, I've created this very Interesting document about the week about Fuzz them Which I shamelessly copied from the internet and we can see that some people have added some annotations
Like this one here. You can see the little icon You can read the text, but you can also see the annotations on top of it For example, this one is a is a rephrasing suggestion instead of to meet to This is a suggestion to do to meet in order to this is a little
Explanation like on top explanation like a little comment if you want a contextual comment and this is also a suggestion to remove this part, whatever I Can also add a new annotation for example on open source I'm gonna see that I select I hit the keyboard shortcut and
I get this window and I type my annotation say in as defined By OC. I'm gonna put a link to OC The open source initiative for if anyone but I guess no one So now I have this annotation here
Which is being printed in the in the tooltip, but as I said X wiki is a X wiki is an extensible wiki. You can actually define data and then do stuff with that data So this table here, I generated from structured data, which I store in the wiki. It's a table of very effective speakers
So, let's look a bit a bit at the source of this of this part of the table Here it is. I hope you see it. Do you see it? Should I make it bigger? This is actually the source of that table as you can see none of the content which is displayed in the page is Actually stored anywhere in the content of the page It's stored in some objects attached to this page and there's a little bit of velocity script there that they iterate through all the
objects and displays them now It's very interesting that we can actually annotate this Even if the content is not there So I will select this and I will add my annotation
rephrase to strong word Add annotation And I can see the annotation here the same for this RSS macro Which displays the latest the latest articles from the FOSM RSS feed I can add this annotation here and everything works fine
Even if it's not in the source of the document now, how does this work? How can I annotate stuff which are not actually in the document? It's all because of the Rendering engine of its wiki and the way it works So you have the page in wiki syntax the content of the page and this page is parsed in an abstract Abstract syntax tree, which has a node for every entity if you want every
entity in the model of the page that you that you find a word is actually the text that will get displayed and then Various paragraph link and so on the macros that we've seen the little piece of script is a macro and The content that is generated by this macro is also generated in the tree It's a bit gray here because it doesn't actually exist in the source. It will be generated in the tree
so then We take the annotations and we map them on this tree how does this work the annotations are stored as the actual text that the user has selected with a bit of Context around it to make sure that I can I can find the unique the unique place because you can appear multiple times and so on
And so the text is red is mapped on this tree and then this tree is rendered into whatever in this case HTML This strategy comes in very handy when you think that X wiki is a is a polyglot wiki You can have various syntaxes for the input like wiki syntax X wiki syntax media wiki syntax and so on and
Other things you might want to think of so it's very interesting that you have annotations at the tree level because it will work with any Input and any output and that's really really cool Now a wiki is mainly about editing right? You might have already thought about that
What will happen if I edit the text on which I added the annotation? So, let's see. I will I will perform the modification here and I will remove this part Let's perform the modification to meet in order In order to and the suggestion said let's remove this part here
Do you want me to close my tweet deck? Somebody's harassing? so my annotation has turned orange can see it here and if I hover I
have a I Have a text telling me what was the original text and what's the current text I can also validate it and say okay It still makes sense where it is or I can delete it if I don't like it. Let's validate it And here it has disappeared But I haven't lost my annotation because I can go to the annotations tab and I find it here
I find the original text of the annotation and the fact that it was removed the red icon Indicates the fact that it was removed from the page. I couldn't map it on the page So what else now what will happen? I
Showed you the the rendered content the generated content, which is annotated What will happen if I edit that? Assuming that I want to not display people in a in a table anymore now You can see how easy it is to actually program in XWiki and I want to put them in a list
I want to put first the name of the speaker followed by Semicolon with the name of the talk and in parentheses I want to put the name of the project from which the speaker comes I Hope I'll get this property name, right
okay, and There the structure has changed but my annotation has still still stays there as you assume the same will happen if a new feed comes in and if the RSS macro changes or whatever it it works and it manages to
To find the place of the annotation Because of that because it's actually the text which is being annotated as long as it is in the page It works and also if it modifies Well, I'll show later now As I've explained you can store structured data and operate with it, but annotations are nothing else but this structured data
So what if I want for example in the case of this annotation? I wanted to put to put a URL What if I want to actually? To actually store this URL in a field so that I know that it's a URL that that Provides more information about the annotation. Let's do that. I'm going to go to the class that defines the annotation structure
There I'm gonna say edit And I'm gonna want to edit the class we can see here all the fields about the selection and everything and I will add one called reference and
of type string I Add it. I see it here. I can do a little bit of configuration Like say I want to change the pretty name. I want it to appear as URL. I Do save and view I do save and view I go back to my document using this great great
Feature and if I want to edit this annotation, you see I already have the field here and if I want to edit it My field is already here. I can fill it in and I can see it under the URL field which is quite great
now This customization of the annotations type and annotations UI We can see a more of it done in the socracy project Which is a project that aims to provide an online environment for political debate for regular users
Like not necessarily political people but regular users They have these articles which they comment they discuss and so on and here we customize it quite a lot You have a mood of your of your annotation. You have various other fields. I
Annotate this I see that it's a I can I can choose various type. I say it's an appreciation suggestion I am furious because the idea is not new not clear and I completely disagree with it. I Add my annotation and I can see it colored according to the mood and so on I can also filter the annotations by various criteria to only see in the page the ones that I want
Which is quite interesting and easy easy to do in its wiki because it's just a layer on top of the UI you'll see then it's not only the UI that you can customize in the In the annotations for example for the scribble project, which is a which is a project between various
Various participants that aims to provide automatic annotations automatic semantic annotations on content and and images and everything How do we do with that in its wiki? you can actually take the content of a document send it to an external annotator, which will generate some annotations in an RDF data store and
and Then display the annotations on the on the wiki page so I can say analyze this document and now the automatic annotation Annotate annotators are running and it automatically generated these annotations on the page I can see that for them has been identified as an organization
all these people here which now have some real names have been identified as persons and so on How come all this is possible? It's possible because of the modular of the modular structure of its wiki There's the annotation core that uses the rendering module to do the rendering of annotations the maintainer
Which I talked about which identifies the moment when a when a document updates and automatically readjust the annotation to still make sense and The annotation storage the annotation storage by default is implemented using X wiki objects and so on but for scribble We could very easily just change this module do it to make it so that it fetches data from an RDF store
Everything has remained unchanged and still still it works on top of X wiki Then we have this Rest module this rest interface that provides the data to to the annotations UI which is very flexible due to the JSX and this is six extensions, which deserve a talk all by their own and
For secrecy, we just adjusted bit a bit this part everything remained unchanged and it still works properly on top of the X wiki So, thank you very much. You have the URLs here If you download X wiki now and test it you get the pen and the sticker and if you write an extension for X wiki
Send us an email and we'll send you a t-shirt because Because you can do that since it's a very very extensible platform Thank you
Dreadful clock shows that I still have one minute one minute and a half. So are there any questions questions? Sorry, we tried that you mean you mean chatting in the wiki we tried that it wasn't very I
The question is if there if we have an extension for chatting in the wiki We tried that it's quite easy to do actually with an XMPP JavaScript library It's very doable and without changing anything on the server side. Just writing a little little
Yeah, and we have an IRC bot that stores reads from IRC and stores in the wiki Yes, no, it doesn't have to remain the same. It works. It just detects that everything was changed
It also detects when the annotation is changed and the text and it adjusts automatically Nothing has to remain the same