Releasing Your Plugin - Redmine Plugin Extension and Development (2014)

Redmine Plugin Extension and Development (2014)

Appendix A. Releasing Your Plugin

Congratulations! You've now built a plugin that can be used to add value to any Redmine deployment. There is, however, one last step in the process: release management.

This isn't really an authorship step, and as such is being included as an appendix. This is also not meant to be taken as the only way a plugin can be released, but a set of suggestions that will help give you exposure within the Redmine community. The following topics will be covered in this appendix:

· Getting your source code online

· Writing about your releases

· Publishing your plugin to Redmine's plugin directory

· Promoting your plugin on Redmine's forums

Managing your plugin's source code

The assumption being made is that you're planning on releasing your plugin's source code under an open source license. If you're working on a proprietary plugin, please disregard this section.

Depending on what source control tools you're using, there are different communities available online that offer free hosting of source code for public projects:

· Git (

· GitHub (

· Gitorious (

· Subversion (

· Google Code (

· SourceForge (

· Mercurial (

· Bitbucket (

· Codeplex (

This list is not meant to be an exhaustive one; it's meant only to serve as links to some of the most popular hosting solutions based on the source control tool you choose. The majority of these sites actually host more than one source control tool, so you've got options!

We will be using Git and GitHub for our examples, as this combo is quite popular among Redmine developers, as well as the Ruby community as a whole.

Depending on your level of experience with Git, you may want to read first, as this covers most of what is required in order to get started with Git. Continuing with the GitHub help pages will also assist with getting a repositoryconfigured, checking your code in, and pushing your code to GitHub for the world to see. The following is a screenshot of the Redmine knowledgebase GitHub page:

Managing your plugin's source code

Now that our plugin is online and available, we'll want to ensure that we have Issues management enabled. This feature allows users and other developers to provide feedback and bug reports.

If you decide not to use GitHub, most (if not all) other available source management sites will provide some form of issue tracking feature.

Starting a blog

Now that our source has been published, we should write about why we created this plugin in the first place.

Actually, starting a blog is a bit out of the scope for this book, but if you're new to this process I would recommend GitHub Pages (, WordPress (, or Blogger (

Whether the goal was to solve a particular problem at work, fulfill some edge case we identified, or just scratch an itch, providing a bit of extra information about our motivation may help to encourage some users to take our plugin for a spin.

Once we begin to revise our plugin and add new features, the blog can also be used to announce new versions and include change log information.

A link to the blog can also be included within our plugin's initialization section as the author_url value (see Chapter 1, Introduction to Redmine Plugins for more information).

Publishing your plugin on

Once our source control needs have been met and our introductory site has been established, we can introduce our plugin to the Redmine community at

Publishing your plugin on

Create an account and navigate to the plugin directory at From the plugin management screen, we can register our new plugin via the Register a new plugin link.

To register our plugin, we need to provide some basic information such as the plugin name, identifier, description, home page, code repository, a thumbnail, and any additional installation notes. Next, we'll have to provide details about the current version that we've just released:

Publishing your plugin on

The Redmine compatibility section is a series of checkboxes that we set to indicate which version(s) of Redmine our plugin is known to work with.

The Files section can be used to attach an archive of this version of the plugin, assuming it doesn't exceed the maximum file size of 500 KB. If this is the case, we will have to host the file elsewhere and link to it in the Release Notes section, which is available after we publish our plugin or any time we add a new version.

Announcing your plugin on

With our initial release available within Redmine's plugin directory, we'll want to make an announcement in the Redmine forums as well advertise our release.

Navigate to, select the Plugins board, and then click on New message.

The subject should be kept brief and mention the name of the plugin listed (possibly as we listed it in our init.rb file under the name attribute).

The actual contents of this first post should give a brief introduction of what the plugin does, as well as provide links to the plugin in the plugin directory on GitHub (or whatever source control system we've selected):

Announcing your plugin on

If you composed a particularly clean and concise blog post introducing the plugin, you could simply copy and paste the contents as the introductory forum post.

Initially, this post will likely be the primary communication channel for feedback for your plugin, so make sure you keep it "watched" and respond to the community in a timely fashion.


Our plugin is now out in the wild and we're quickly gathering a devoted user base. It is important to take ownership of our plugin and review the issue reports, feature requests, e-mails, forum posts, and whatever other feedback the community may provide.

In this appendix, we covered some basic steps that can be taken in order to publish our plugin using features that Redmine ( makes available, as well as some basic source control services that are freely available.

This concludes our journey into Redmine plugin extension and development. I hope this guide has answered most of your questions regarding the topics we've covered. If not, there is a vast community available online at, and a multitude of projects in various stages of completion hosted at that can be used to answer questions or draw inspiration.

Cheers and happy coding!