On Fri, Aug 23, 2013 at 10:46 AM, Paul Libbrecht <paul(a)hoplahup.net> wrote:
Hello Fabio,
Thanks for your attempt.
I see in there the following:
Space.Name
|
+- document.xwd
+- class.xwc (optional)
+- objects (optional)
| |
| +- classinfo
| | |
| | +- Space.Name1.xwc
| | +- ...
| +- Space.Name-N.xwo
| +- ...
+- attachments (optional)
|
+- file
+- ....
and I have four issues:
- the attachments do not have a free positioning: attachments are commonly referenced in
web-editing fashions when editing with some web-editor (e.g. an IDE or DreamWeaver) and
their referencing mechanisms often follows the directory paths. This has made the success
of PHP and JSP. I see no reasons to not put it here. Sometimes you need more flexibility
and then you accept to loose the verification abilities (e.g. you could import a part of
that from Word or Firefox, and this dictates a different directory layout).
Not sure to understand what you mean here.
Do you want to have a directory structure inside the attachments
directory or you want your attachments to be everywhere in your
filesystem (so outside the XWikiFS structure?)
Both are feasible, the second using an additional file containing all
the references.
- the space/page structure is not following a
directory structure (one directory per space). While this could certainly be discussable
in some cases, it still appears to me as the most useful positioning but is not there.
Again, this allows links to be somewhat better checked (and auto-completed, and...).
No strong opinion here. I just went this way to reduce the depth of
the directory tree.
- I see .xwd and .xwo files in there. Avoiding to fix
the filename extensions appears crucial to me. I want to use IntelliJ's .vm support by
using the .vm extension for many pages but sometimes, these should be translations!
The problem here is that something must be fixed. What is surely needed is
1) A file containing page metadata
2) A file containing class metadata
3) Several files containing object metadata
4) Several files containing referenced class metadata
None of them are really mandatory, but we need a way to precisely
identify them if they exist.
For 1 and 2 the extension is not really important as long as we use a
well defined file name.
For 3 extension is important because it's the way for "finding" what
contains object metadata in a directory that might contain also other
stuff (see next comment)
Same for 4.
Of course we might go the way of a completely free layout where you
define the an "index" file in the root directory and specify where
things are. This could complexify the code a bit and would also
introduce another level of indirection that could also make things
less understandable for somebody using this system for authoring wiki
pages.
- Finally, I lack a possibility to put in a separate
file a textarea-field (e.g. a panel content) whereas this sounds to be common-practice in
xwiki.
It's already there.
You can externalize whatever you want :)
If in your YAML files you write "-> filename" then the value of the
field will be read from filename.
In this way you can externalize every textarea-field to whatever file you want.
I did this in the comment object.
The XWO map (
https://github.com/fmancinelli/xwikifs/blob/master/src/test/resources/Main.…
) has a reference saying that the comment field will be found in the
XWiki.XWikiComments-0/comment.txt file.
And in that file (
https://github.com/fmancinelli/xwikifs/blob/master/src/test/resources/Main.…
) you have the actual value.
XWiki.XWikiComments-0/comment.txt is completely arbirtary. You can use
whatever file name/file path you want giving you the power of deciding
your own directory layout for externalized values.
And this is possible in every XWD, XWC, XWO file which gives you great
flexibility in organizing stuff on top of a light rigid structure.
I think it's a good compromise.
... and a taste issue: I am not very friend with
serialization languages which claim to do almost the same as XML but are just not XML
(YAML, YML, ...). The toolset for XML is sooooo widespread that loosing this means you
just need a bunch of extensions for just about any editor and this makes things longer to
adopt. But that is personal for sure.
<rant>
Let's agree before JSON is imposed on us everywhere!
</rant>
;-)
I agree that the full XInclude is probably too much, but I do not think we need to
achieve it fully.
I chose YAML because it's the less verbose, intuitive and simple to
handle syntax for describing maps.
You can see it in the example files: no extra {}, no extra "", no
extra commas, etc.
It was the simplest thing for writing plain key-value files without
typing extra characters.
You might say that I could have used plain properties file or a simple
"key: value" format using String.split for getting the actual
key,value.
True, but there is a case where this is not enough. Class files has
the property value that is a nested map :) We don't need to go deeper
but even this could have complicated the code a bit so I went to the
YAML route.
Paul
Thanks,
Fabio
as Ludovic
said, at the seminar we had some brainstorming about this.
To make things advance I wrote a first attempt at something that should be
usable: XWikiFS -
https://github.com/fmancinelli/xwikifs
It basically parses a directory structure and builds a XAR from it.
I used "enhanced" YAML files for laying out stuff. This enhancement
consists in the use of "references" that allows you to externalize content.
For example in the YAML describing the page content
https://github.com/fmancinelli/xwikifs/blob/master/src/test/resources/Main.…
you
have a "-> content.xwiki" saying that the actual content is in the
content.xwiki file.
This allows to keep and organize things better (e.g. for textarea object
fields)
There's this classinfo directory that contains the class file descriptions
for the classes used in the objects. It's there because this information is
needed in the XAR. If someone knows how to build a XAR with objects without
including (redundant) class information it would be great (and we could get
rid of this directory as well).
The idea is that we can "monitor" the XWikiFS for changes and automatically
upload them to the main wiki (handling the merging) and viceversa.
It's a first iteration, so if you have any comments don't hesitate.
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs