<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.3%2FDevelopers%2FTutorials%2FContribute_Extension_Description_File</id>
	<title>Documentation/4.3/Developers/Tutorials/Contribute Extension Description File - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.3%2FDevelopers%2FTutorials%2FContribute_Extension_Description_File"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/Tutorials/Contribute_Extension_Description_File&amp;action=history"/>
	<updated>2026-08-28T03:27:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/Tutorials/Contribute_Extension_Description_File&amp;diff=35380&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.3</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/Tutorials/Contribute_Extension_Description_File&amp;diff=35380&amp;oldid=prev"/>
		<updated>2013-09-05T03:40:54Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.3&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
Extensions can be fully described with an [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|extension description file]] (*.s4ext). This file is automatically generated in the build tree of your extension.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:none; border-left:thick solid red; padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;p&amp;gt;For extension source code associated with git repository, for Slicer revision &amp;lt; [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=22231 r22231], the automatic generation will extract the read/write url.(i.e &amp;lt;code&amp;gt;git@github.com:jcfr/MyExtension.git&amp;lt;/code&amp;gt;) whereas the read-only one is expected (i.e &amp;lt;code&amp;gt;git://github.com/jcfr/MyExtension.git&amp;lt;/code&amp;gt;). For details see issue [http://www.na-mic.org/Bug/view.php?id=2032 2032] and [http://www.na-mic.org/Bug/view.php?id=2395 2395]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make your extension available for download to Slicer user, this file need to be added to the ExtensionsIndex repository.&lt;br /&gt;
&lt;br /&gt;
You can think of the ExtensionsIndex as a repository containing a list of extension description files (*.s4ext) used by the Slicer extensions build system to build, test, package and upload extensions on an extensions server.&lt;br /&gt;
&lt;br /&gt;
= Prerequisites =&lt;br /&gt;
* Extension belongs to Category 1 or Category 2 as described in [[Documentation/{{documentation/version}}/Extensions/CatalogPolicies|Slicer requirements]]&lt;br /&gt;
* Extension has been built, tested and installed on at least one platform (Linux, MacOSX or Windows)&lt;br /&gt;
&lt;br /&gt;
= Contributing a new extension =&lt;br /&gt;
&lt;br /&gt;
== Extensions build against Slicer trunk ==&lt;br /&gt;
&lt;br /&gt;
The following instruction describes how to contribute extension description file for an extension being built against slicer trunk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Fork the &amp;lt;code&amp;gt;ExtensionsIndex&amp;lt;/code&amp;gt;: http://github.com/Slicer/ExtensionsIndex. Click [http://help.github.com/forking/ here] for forking instructions.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Clone your fork, then create a topic named &amp;lt;code&amp;gt;add-&amp;amp;lt;ExtensionName&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git@github.com:USER/ExtensionsIndex SlicerExtensionsIndex&lt;br /&gt;
cd SlicerExtensionsIndex&lt;br /&gt;
git checkout -b add-YourExtensionName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit your description file. Commit title should be &amp;lt;code&amp;gt;Add YourExtensionName extension&amp;lt;/code&amp;gt; and the content should provide details about the extension.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Push the topic to your fork&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin add-YourExtensionName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;On your github fork, click on &amp;quot;Pull Request&amp;quot;. Slicer folks will be automatically notified.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;That's it !&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/Slicer/ExtensionsIndex#contributing See instructions on github]&lt;br /&gt;
* Consider also reading [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|Extension description file format]]&lt;br /&gt;
&lt;br /&gt;
== Extensions build against Slicer {{Documentation/currentversion}} ==&lt;br /&gt;
&lt;br /&gt;
* Follow instruction reported in section [[Documentation/{{documentation/version}}/Developers/Tutorials/BuildTestPackageDistributeExtensions#Extensions_build_against_Slicer_{{Documentation/currentversion}}_2|Requesting an extension version update / Extensions_build_against_Slicer_{{Documentation/currentversion}}]] and set the title of the commit to be &amp;lt;code&amp;gt;add-&amp;lt;ExtensionName&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Requesting an extension update =&lt;br /&gt;
&lt;br /&gt;
On your local fork, the idea is to create the following topic branches:&lt;br /&gt;
* &amp;lt;code&amp;gt;update-&amp;lt;YourExtensionName&amp;gt;&amp;lt;/code&amp;gt; based of [https://github.com/Slicer/ExtensionsIndex/tree/master &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;] integration branch.&lt;br /&gt;
* &amp;lt;code&amp;gt;update-&amp;lt;YourExtensionName&amp;gt;-4.2&amp;lt;/code&amp;gt; based of [https://github.com/Slicer/ExtensionsIndex/tree/4.2 &amp;lt;code&amp;gt;4.2&amp;lt;/code&amp;gt;] integration branch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extensions build against Slicer trunk ==&lt;br /&gt;
&lt;br /&gt;
The following instruction describes how to contribute extension description file updates for an extension being built against slicer trunk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Update the &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch of both your local clone and your online &amp;lt;code&amp;gt;ExtensionsIndex&amp;lt;/code&amp;gt; fork&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git remote add upstream git://github.com/Slicer/ExtensionsIndex   # Add reference to the authoritative ExtensionsIndex&lt;br /&gt;
git fetch upstream                                                # Fetch change of the authoritative ExtensionsIndex&lt;br /&gt;
git checkout master                                               # Checkout master&lt;br /&gt;
git reset --hard upstream/master                                  # Reset your local master branch using the authoritative master &lt;br /&gt;
git push origin master                                            # Update the master branch of your online fork&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;If needed, create branch named &amp;lt;code&amp;gt;update-YourExtensionName&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout -B update-YourExtensionName master                   # Create branch update-YourExtensionName or ensure the existing one starts of updated master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Regenerate the &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file by configuring your extension with CMake&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
* See https://github.com/Slicer/ExtensionsIndex#build-your-own-set-of-extensions-against-slicer-trunk-build-tree&lt;br /&gt;
* If the svn server needs a username and a password, edit the newly generated &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file to add this information&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit the &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file to your cloned ExtensionIndex repository (provide a meaningful commit comment)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Push modifications to your &amp;lt;code&amp;gt;ExtensionIndex&amp;lt;/code&amp;gt; fork on github&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin update-YourExtensionName                         # Publish the updated branch on your fork&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a pull request:&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
* Visiting your fork on http://github.com/USER/ExtensionsIndex and, if available, clicking on the &amp;lt;code&amp;gt;Pull request&amp;lt;/code&amp;gt; link as explained [https://help.github.com/articles/creating-a-pull-request here].&lt;br /&gt;
or&lt;br /&gt;
* Using a link similar to the following: &amp;lt;code&amp;gt;https://github.com/USER/ExtensionsIndex/pull/new/update-YourExtensionName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: If you are using github for hosting your extension source code, make sure to associated a '''Compare View link'''. This is very helpful to summarize the changes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You can build the compare view URL manually with the following format: &lt;br /&gt;
&lt;br /&gt;
https://github.com/USER/REPO/compare/[USER:]GIT-REF…[USER:]GIT-REF&lt;br /&gt;
&lt;br /&gt;
USER is your GitHub username, REPO is your GitHub repository, and GIT-REF can be a tag, branch, or commit SHA1. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source: http://jbuckley.ca/2011/09/githubs-compare-view/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensions build against Slicer {{Documentation/currentversion}}  ==&lt;br /&gt;
&lt;br /&gt;
The following instruction describes how to contribute extension description file updates for an extension being built against slicer trunk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Update the {{Documentation/currentversion}} branch of both your local clone and your online ExtensionsIndex fork&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git remote add upstream git://github.com/Slicer/ExtensionsIndex   # Add reference to the authoritative ExtensionsIndex&lt;br /&gt;
git fetch upstream                                                # Fetch change of the authoritative ExtensionsIndex&lt;br /&gt;
git checkout 4.2                                                  # Checkout 4.2&lt;br /&gt;
git reset --hard upstream/4.2                                     # Reset your local 4.2 branch using the authoritative 4.2&lt;br /&gt;
git push origin 4.2                                               # Update the 4.2 branch of your online fork&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;If needed, create branch named &amp;lt;code&amp;gt;update-YourExtensionName-4.2&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout -B update-YourExtensionName-4.2 4.2                  # Create branch update-YourExtensionName-4.2 or ensure the existing one starts of updated 4.2 branch.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Regenerate the &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file by configuring your extension with CMake&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
* See https://github.com/Slicer/ExtensionsIndex#build-your-own-set-of-extensions-against-slicer-trunk-build-tree.&lt;br /&gt;
* If the svn server needs a username and a password, edit the newly generated &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file to add this information.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit the &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file to your cloned ExtensionIndex repository providing a meaningful commit comment.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Push modifications to your &amp;lt;code&amp;gt;ExtensionIndex&amp;lt;/code&amp;gt; fork on github&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin update-YourExtensionName-4.2                     # Publish the updated branch on your fork&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a pull request:&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
* Visiting your fork on http://github.com/USER/ExtensionsIndex and, if available, clicking on the &amp;lt;code&amp;gt;Pull request&amp;lt;/code&amp;gt; link as explained [https://help.github.com/articles/creating-a-pull-request here].&lt;br /&gt;
or&lt;br /&gt;
* Using a link similar to the following: &amp;lt;code&amp;gt;https://github.com/USER/ExtensionsIndex/pull/new/update-YourExtensionName-4.2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: If you are using github for hosting your extension source code, make sure to associated a '''Compare View link'''. This is very helpful to summarize the changes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You can build the compare view URL manually with the following format: &lt;br /&gt;
&lt;br /&gt;
https://github.com/USER/REPO/compare/[USER:]GIT-REF…[USER:]GIT-REF&lt;br /&gt;
&lt;br /&gt;
USER is your GitHub username, REPO is your GitHub repository, and GIT-REF can be a tag, branch, or commit SHA1. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source: http://jbuckley.ca/2011/09/githubs-compare-view/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
= Submitting a pull request =&lt;br /&gt;
&lt;br /&gt;
The following gallery illustrates how to submit a pull request from your &amp;lt;code&amp;gt;ExtensionsIndex&amp;lt;/code&amp;gt; fork.&lt;br /&gt;
&lt;br /&gt;
To learn more about pull request. Consider reading: https://help.github.com/articles/using-pull-requests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=800px heights=300px perrow=1&amp;gt;&lt;br /&gt;
File:Extensions-4.2-pull-request-step1.png|1. Create Pull Request&lt;br /&gt;
File:Extensions-4.2-pull-request-step2.png|2. Select base&lt;br /&gt;
File:Extensions-4.2-pull-request-step3.png|3. Send Pull Request&lt;br /&gt;
File:Extensions-4.2-pull-request-step4.png|4. Verify&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>