Wiki source code of XWiki Contrib

Version 11.1 by Vincent Massol on 2011/01/13 09:44

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc start="2" depth="3"/}}
3 {{/box}}
4
5 The **XWiki Contrib Project** provides hosting for projects related to XWiki. These projects are not part of the official XWiki distributions and are not maintained by the XWiki development team.
6
7 == Hosting tools ==
8
9 The project hosting forge can provide contributors with some or all of the following tools :
10
11 * A **SVN directory**, under http://svn.xwiki.org/svnroot/xwiki/contrib/
12 * A **JIRA project** for tracking bugs and feature requests, at http://jira.xwiki.org/ and under the "XWiki Contributed projects" category. Note that there will be a generic JIRA project to be used by all projects till they achieve a first release or till they grow to a size significant enough to warrant a dedicated JIRA project
13 * A generic **maven groupId** : ##org.xwiki.contrib## (until the project reaches a certain size and visibility, in which case it can have its own maven group id)
14 * **Project pages** on extensions.xwiki.org to describe and document the project. When the project reaches a certain visibility and size it can have its own wiki on xwiki.org.
15
16 == Requesting a project ==
17
18 The contrib project is open for anyone with a project that request it. Simply send us an email at **##devs AT xwiki.org##** using "**[Contrib]**" at the beginning of your email's subject. Let us know the name and a short description of your project. If your project has already been made available for download on code.xwiki.org, please precise it and point us to its page (If it is not, then no need to hurry, you will make it available once it's ready). Finally, let us know which of the listed tools you need. For SVN access, you will need to register a user on http://www.xwiki.org with a UNIX-like user name, and let us know about it. Such a username is composed of the first letter of your first name immediately followed by your last name, the whole with no capital letter (for example **jdoe** if your name is John Doe). We will get back to you shortly with all the information you need.
19
20 == SVN organization ==
21
22 The **contrib** SVN directory (in XWiki's SVN repository) is organized with the following structure :
23
24 ## {{{ http://svn.xwiki.org/svnroot/xwiki/contrib/
25 |__people/
26 |__projects/
27 |__retired/
28 |__sandbox/ }}} ##
29
30 Each of the sub-directory has the following meaning :
31
32 * **people** is a directory for "personal tests" projects. The idea is behind is to give whoever requests it a personal space where he can experiment with XWiki code, and that space is private (i.e. an implied rule is that people are not supposed to commit code in others projects, thus making it different from sandbox projects). Each sub-folder of people/ is composed of the username of the person that requests his project, for example "jvelociter".
33 * **projects** hosts the actual contrib projects, that are active (meaning that they still do make sense as projects in
34 the XWiki ecosystem, they are not abandoned, etc.)
35 * **retired** is the "place where dead project go ;(" A dead project can be a project that get superseded by a newer one, or a project that is not actively maintained for a long period of time.
36 * **sandbox** is the place for experimental projects that have not been released.
37
38 == Requesting snapshost builds for your project ==
39
40 XWiki.org has a [[continuous build>>http://dev.xwiki.org/xwiki/bin/view/Community/ContinuousBuild]] which builds maven projects each time they are modified on the SVN and put the resulting artifact in our [[snapshots repository>>http://maven.xwiki.org/snapshots/]]. This is useful when you want people using your project as a dependency to continuously benefit from the improvements.
41
42 Your can ask for your project to be added to the continuous build:
43
44 * First you need to use the xwiki parent pom to have the correct distribution management information:(((
45 {{code language="none"}}
46 <project>
47 ...
48 <parent>
49 <groupId>org.xwiki.platform</groupId>
50 <artifactId>xwiki</artifactId>
51 <version>See https://svn.xwiki.org/svnroot/xwiki/platform/pom/trunk/pom.xml</version>
52 </parent>
53 ...
54 </project>
55 {{/code}}
56 )))
57 * Send a [[vote>>http://dev.xwiki.org/xwiki/bin/view/Community/Committership#HVoting]] on the [email protected] mailing list to discuss the addition of your project in the continuous build(((
58 {{code language="none"}}
59 [VOTE] Add myproject to the continuous build
60
61 Hi XWikiers,
62
63 I'm working on myproject and since it's used as a
64 dependency by someotherproject it'd be convenient
65 if it was built continuously.
66
67 Here's my +1.
68
69 Thanks,
70 Me.
71 {{/code}}
72 )))
73
74 == Promoting a project out of the sandbox ==
75
76 When you feel your project is ready for prime-time, you can promote it out of the sandbox. Usually this happens together with a first release of the project.
77
78 For promoting your project, create its new home in contrib/projects/ and move it there
79
80 (((
81 {{code language="none"}}
82 cd contrib/projects
83 mkdir myproject
84 mkdir myproject/branches
85 mkdir myproject/tags
86 svn add myproject
87 cd ../sandbox
88 svn move myproject ../projects/myproject/trunk
89 cd ../../
90 svn ci (don't forget to refer to the JIRA issue you've created)
91 {{/code}}
92 )))
93
94 === Release the project ===
95
96 XWiki.org allows you to release your project on its maven repository as long as you follow the following steps:
97
98 * Use org.xwiki.contrib as groupId in your maven module
99 * Request for an account on http://nexus.xwiki.org on [email protected]
100 * Once you've received your credentials put them in ~~/.m2/settings.xml(((
101 {{code language="xml"}}
102 <settings>
103 ...
104 <servers>
105 ...
106 <server>
107 <id>xwiki-staging</id>
108 <username>username</username>
109 <password>********</password>
110 </server>
111 ...
112 </servers>
113 ...
114 </settings>
115 {{/code}}
116 )))
117 * Put the following configuration in your project pom.xml(((
118 {{code language="xml"}}
119 <project>
120 ...
121 <distributionManagement>
122 <repository>
123 <id>xwiki-staging</id>
124 <name>XWiki Staging Repository</name>
125 <url>http://nexus.xwiki.org/nexus/service/local/staging/deploy/maven2/</url>
126 </repository>
127 </distributionManagement>
128 ...
129 </project>
130 {{/code}}
131 )))
132 * Release the project with the maven release plugin(((
133 {{code language="none"}}
134 mvn release:prepare
135 mvn release:perform
136 {{/code}}
137 )))
138 * Ask for someone to promote your release (ie. make it available on maven.xwiki.org) in the thread you've created earlier
139 * After that your release will be available for download on maven.xwiki.org and anyone will be able to use it as a dependency for his own project

Get Connected