ljader / redmine-mylyn-plugin

Eclipse Mylyn integration for Redmine ( Eclipse Connector Plugin )
71 stars 48 forks source link

Shall the mylyn plugin support redmine backlog? #7

Open giamma opened 11 years ago

giamma commented 11 years ago

Hi,

this is to inform you (or invite you) about this discussion: http://forum.redminebacklogs.net/Why-backlog-does-not-use-redmine-custom-fields-td4025735.html

I believe that backlog is a pretty good free solution for scrum and I would really love this project to work seamlessly with it.

Changes could be implemented in this project to support backlog (and if you decide to do so, I am willing to help) but my understanding is that in its current state redmine-mylyn-plugin would already support backlog if only backlog used redmine custom fields.

What do you think?

ljader commented 11 years ago

Hi, Providing support for usefull and interesting plugins, as redmine backlog appears to be, is definitely on 'roadmap' so I'm open for suggestions.

One note: in your forum post you wrote:

Another solution may consist in forking the redmine mylyn plugin to make it support the extra backlog fields.

Do you mean ruby side of redmine-eclipse integration - redmine-mylyn-connector ?

giamma commented 11 years ago

Hi,

no, I was referring to this project.

My understanding is that the current eclipse plug-ins are able to support all built-in redmine issue fields (because they are hard-coded in a Java enumeration) as well as custom fields. I believe, but I may be wrong, that redmine offers an API to enquiry about the custom fields of a project and their respective data types, and that thanks to that API the eclipse plugin is able to support them automagically. Of course, I may be wrong, and the serve-side redmine plugin you mentioned may be the one who offers information about the custom fields. Actually, I have no clue about the purpose of the redmine plugin.

I had a very quick look at the source code of this project, and at first sight it seems that standard redmine issue fields are listed in the net.sf.redmine_mylyn.core.RedmineAttribute enumeration. Then, class net.sf.redmine_mylyn.core.RedmineTaskTadaHandler is the starting point for understanding how the plug-in instructs mylyn about those fields.

Not knowing if this set of plugins already provide some feature/api/extension-point for customization, and assuming that presently it does not offer anything like that, in order to support redmine_backlog, I can imagine three options:

  1. hardcode the backlog fields in the RedmineAttribute enumeration, as if they were standard redmine fields, and add some logic where appropriate to ensure they do not show up unless the redmine server is really using backlog
  2. refactor the eclipse plugin to introduce an extension point that allows contributors to define extra fields, and provide an optional backlog-specific eclipse plug-in that uses the new extension point to provide support for backlog
  3. a variation of the previous, it may be possible to use OSGi Weaving (org.osgi.framework.hooks.weaving.WeavingHook, http://www.slideshare.net/mfrancis/bytecode-weaving) to modify the RedmineAttribute enumeration before its loaded by the OSGi classloader, for example using Javassist. In such case it may be possible to provide an additional plug-in that is backlog specific, that enhances at load-time RedmineAttribute to add the fields required by backlog, as if they were written in the original source code. Similar to option 2, but does not require an extension point, and is better than 1 because the change is not applied unless the extra plugin is installed.

What do you think? Giamma.

giamma commented 11 years ago

Hi,

meanwhile I got in contact with one of the backlog contributor and on his suggestion I opened this issue https://github.com/backlogs/redmine_backlogs/issues/896

Whichever way we use to support backlog, an API is needed to obtain the list of valid values for the "release" field added by backlog.

giamma commented 11 years ago

I opened this additional feature request https://github.com/backlogs/redmine_backlogs/issues/903

giamma commented 11 years ago

Hi,

it seems that a little subset of redmine backlogs configuration will have to be duplicated in the eclipse preferences, see https://github.com/backlogs/redmine_backlogs/issues/903#issuecomment-17046837

At present, issue https://github.com/backlogs/redmine_backlogs/issues/896 remains the main show stopper for implementing a better support for backlogs in this Eclipse plug-in.

giamma commented 11 years ago

Hi,

I spent a couple of hours making some changes for supporting redmine-backlogs in this Eclipse plug-in.

Changing the issue data model to include the "story points" and "release" attributes that are added by redmine-backlogs was easy. I also easily extended the graphical editor to enable editing of the two attributes above.

However, when testing the REST client used by redmine-mylyn-plugin to connect to redmine I realised that it is not using the default redmine REST API for fetching issue information. In fact, it's calling http://SERVER_NAME/mylyn/issues/list?issues=ISSUE_NUMBER which is an additional REST API added to the server by the redmine mylyn connector plug-in.

So, no matter that redmine-backlogs adds the two fields above to the redmine issue datamodel and makes sure that they appear in the standard redmine REST api; redmine-mylyn-plugin will never get them unless those fields are also known by the server side redmine mylyn plug-in.

Unluckily I don't know ruby, and I don't have enough free time to learn it in the near future. Is there someone who is willing to help me by changing the server-side mylyn connector plugin to support the two fields above added by backlog? Alternatively, I could try to make two calls for each issue and to merge the data.

Redmine-backlogs still lacks an API to get the list of existing releases, but I could temporarily workaround this issue by calling the HTML page and parsing its content using http://jsoup.org/

Giamma.

damiencuvillier commented 11 years ago

Hello Giamma.

I'm using currently the mylyn plugin and I use Redmine mainly for scrum usage, so I use the backlog every time. It works great.... with a partial fix.

I do not know where to post my patched zip... Ask me if you need it & want to try it ?

Regards

giamma commented 11 years ago

Hello Damien

could you please elaborate a bit more about the partial fix ? Also, are you referring to the eclipse plug-in or the redmine plug-in ?

thanks Giamma.

damiencuvillier commented 11 years ago

I've patched a few weeks ago a short thing (I do not remember exactly what) in the Eclipse Plugin.

giamma commented 11 years ago

The plugin in its current state works for me.

However it does not support two extra issue attributes added by backlog: story points and release. So at present I am forced to open the Web interface to edit those fields. My goal is to extend the plugin to be able to edit those fields within Eclipse.

damiencuvillier commented 11 years ago

No need on my side on these fields. Where did you find a working copy of Eclipse plugin ?

To make it work with redmine 2.3, I had to patch it manually.

giamma commented 11 years ago

Built from sources.

Anyhow, this is a bit off topic. Let's try to keep this discussion focused on how to extend the Eclispe plugin to better support redmine backlogs.