XWiki: Annotating Documents, the eXtensible Wiki Way
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Alternative Title |
| |
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 | 10.5446/45908 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 201141 / 64
3
7
10
11
17
19
21
28
33
34
35
37
40
44
48
49
52
55
57
59
62
63
64
00:00
WikiGamma functionCodeLine (geometry)Enterprise architectureJava appletCollaborationismMobile appDemo (music)BitCartesian coordinate systemJava appletWikiUser interfaceNormal (geometry)Projective planeExtension (kinesiology)Level (video gaming)Enterprise architectureData typeComputer animationXML
01:22
Execution unitHypothesisMultiplication signComputer animationLecture/Conference
01:52
BitRevision controlComputer animation
02:16
WikiWikiMultiplication signAuthorizationRevision controlDemo (music)Physical systemComputer animation
02:47
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
04:24
Menu (computing)Network topologyWeb pageObject (grammar)Open sourceQuantum stateContent (media)Table (information)Scripting languageBitVelocityElectronic visual displayComputer animation
04:50
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
07:14
outputWeb pageMereologyTwitterOrder (biology)Computer animation
07:35
Scale (map)Event horizonFreewareGamma functionOpen setValidity (statistics)Computer animation
08:02
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
10:40
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
13:11
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
16:08
XML
Transcript: English(auto-generated)
00:08
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
00:22
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
00:42
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
01:03
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
01:23
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
01:46
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
02:04
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
02:21
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
02:43
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
03:05
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
03:21
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
03:40
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
04:00
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
04:21
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
04:46
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
05:03
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
05:21
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
05:43
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
06:05
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
06:24
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
06:47
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
07:02
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
07:28
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
07:42
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
08:05
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
08:27
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
08:45
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
09:07
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
09:22
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
09:42
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
10:08
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
10:22
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
10:45
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
11:08
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
11:23
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
11:40
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
12:05
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
12:25
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
12:44
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
13:01
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
13:21
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
13:42
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
14:02
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
14:25
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
14:42
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
15:13
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
15:28
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
15:50
It also detects when the annotation is changed and the text and it adjusts automatically Nothing has to remain the same