Hello Ludovic, First let me warmly thank you for such a thread we badly need such a thing that would unify the practice of source files that can be edited by desktop apps with some luxury (IDEs, design tools, ...) to the set of objects in the wiki. I am not 100% sure that the full-expansion tool is really fundamental as it creates quite many objects and many text areas or attachment could be considered trivial. (e.g. contents such as a line that does just an include could just be a line in the XML file) I would envision something a flexible xar plugin with two extensions: - parsing that would include xinclude, supporting attachments includes as well, the xml remains the main page container but can be enriched, when the developer says, by external files. The xar pugin would only load xml files and files referenced in there. These could be a velocity source for a text-area, doing html, js, or css, or could be a graphics in attachment. - a sync tool that would download and upload all necessary parts and write them, just as much as the XML says (that may be tricky to handle with new things, but I guess the default should just be xml and extraction would be manual, or through wiki) Shouldn't the code of the xar plugin be extended for such? Paul On 1 juil. 2013, at 00:59, Ludovic Dubost wrote:
I've started some prototype code for 1/ at
https://github.com/ldubost/xwiki-projectsync/blob/master/src/main/java/org/x...
Currently if you point it to a maven xar module with the command line
-format /path/to/root/dir/of/project/
it will create some files for each content, textarea or attachments inside an XML file
- Some code is also done to compare a wiki instance with that repository (no command line yet to launch it) - Some code allows to monitor changes in a directory (but nothing yet happens)
It allows to see what it could mean to have the xml files spread in multiple code files. One big step is to decide if this is something we want because it is a prerequesit for such a tool.
Ludovic
2013/6/29 Ludovic Dubost <[email protected]>
While XWiki has many great advantages as a framework which takes car of persistence, forms, user management, content management and provides tons of APIs, when traditional developers want to extend XWiki there are facing a few difficulties:
- they are lost in the myriad of XWiki APIs, and there is no completion - they don't get good visibility of the code available in their application - it is complicated to use editors which have syntax highlighting - they cannot use their favorite IDE
On the framework side there are also some improvements which could make XWiki even more killer:
- easier integration of advanced JS framework - advanced integration of a high level JS framework that has templating (maybe angular js) - better validation functions - easier way to add REST APIs - more XWiki and better documented javascript apis
Here are some proposals to help fix the tools issues. Three approaches can be looked at:
1/ Live Sync between an XWiki Instance and and improved maven xar file structure, allowing to use any local IDE on XWiki code
First it should be possible to use any IDE on the maven xar file structure, allowing to open the content and textarea fields of all XML files. For this XWiki XML files should externalize the content and textarea fields in separate files with extensions based on their content type. The maven xar format should be able to clean the maven structure to do this splitting and should also be able to build the XAR from all the files.
Finally a program should allow to do a live sync between a local or remote wiki instance and the maven project. Any change in either the wiki or the file system should be replicated to the other party. So if you run "git pull" then your local or remote wiki would be updated. If a change is made in the wiki, the change would show up in the file system and your IDE would refresh it.
The sync program would keep a state of the version in the wiki, in order to be able to merge changes if changes occur in both places between two sync. This tool could be easily launched with "mvn xar:sync"
Syntax highlighting for XWiki Syntax+Velocity+Groovy would be developped for the most popular editors. When syncing the tool could show syntax checking error messages.
2/ Integration with Eclipse
Based on XEclipse, we would build an Eclipse plugin to be able to connect to an XWiki instance and load a specified list of spaces. Then each space would be organized by the type of code in this space. Content and Textarea fields would be made visible as editable content in Eclipse. The plugin should detect the type of code in each of the content or textarea fields (velocity/html, groovy, javascript, css, translations, xwiki syntax) and use the appropriate editor.
Finally a completion module could be provided by loading from the server a list of available APIs.
The same plugin could also be able to organize the content from a local maven project (based on 1/) and provide completion to such a project.
Live syntax checking could be provided.
3/ Integration of a WebIDE in XWiki
Based on Javascript WebIDE and web code editor softwares (Orion, Cloud9, exoIDE, codemirror, etc..), we would provide a view on the code inside the XWiki instance. Code would be organized in the same way as in the Eclipse plugin and appropriate editors would be used depending on the code type. Completion could be provided in the velocity and groovy editors and eventually in Javascript
Two views should be available, one for each AWM application, and one with all the code in the Wiki.
Live syntax checking could be provided.
Solution 1/ is very powerful because it let's the user decide which is his development environment, even if the tree structure won't be perfect. Still he can see all the code in the wiki and work on it, including searching. Committing is made very easy. There are some risks involved in the sync process, particularly of you have multiple developers syncing local code with the same dev server. User can switch from local sync (local wiki) to remove sync (remove shared wiki) and can therefore work offline more easily. Editing can be fully done offline.
Providing syntax highlighting for many editors might prove difficult.
Solution 2/ is providing a nice XWiki environment inside Eclipse, without the need for a local copy of the code. Committing would happen using the browser.
Solution 3/ is the long term bet as the future is to have everything in the web. Content is only in one place which makes things a little easier. Development environment needs no setup. However this is more "new" for developers which need to adopt the platform.
Live syntax checking is hard to provide but would be quite useful. Alternatively mvn xar:format could also provide syntax checking for XWiki syntax, velocity, groovy, js and css.
WDYT ? Which approaches do you believe would be the most promising.
Ludovic
-- Ludovic Dubost Founder and CEO Blog: http://blog.ludovic.org/ XWiki: http://www.xwiki.com Skype: ldubost GTalk: ldubost
-- Ludovic Dubost Founder and CEO Blog: http://blog.ludovic.org/ XWiki: http://www.xwiki.com Skype: ldubost GTalk: ldubost _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs