codestream
                                
                                
                                
                                    codestream copied to clipboard
                            
                            
                            
                        Support to get issue from Redmine
Redmine is a really big tool used mainly by big developer team so it would make sense to have it in your project!
Also it would be a really good way to show that you support also OpenSource or FreeSoftware partner and not just private company.
@bcanzanella I checked your commit on CONTRIBUTING.md and i see that you prefer to discuss implementation before we propose you some PR.
Do you think it would be possible to have an input from your team on the subject ? I'm open to do the integration and just need a green light and some architectural input from your team :)
@RignonNoel I'm the developer at CodeStream that has implemented a lot of our integrations. We agree 100% with your statement that assisting you with this would be a great way to demonstrate our support for OpenSource and we are fully committed to that vision. In that spirit, I'm here to assist you with this integration.
What do you need from me to get started?
@cstryker Hey! Thanks a lot for the quick reply!
I found this documentation on how to begin development but i didn't found what you wait in a PR (no PR template, no markdown, ..). So here is what i would need to know at minimum before beginning:
- Is there some standards i will need to follow (code standard, process, branch naming, commit naming, etc..)
 - Do you have a basic documentation of your architecture (UML, .md, auto-generated doc, ..) ? I guess that you have an interface that you inherit for each of the issue connector you add.
 - Do you have some tips that i should know or special requirements you want me to cover ?
 
If you are OK I will start by installing your project in local and evaluate a solution, i can get back to you with an analysis of Redmine API and a plan to connect it in CodeStream so we can debate on some details together to find the best way to do this integration.
Also, it's important to understand that Redmine is a tool that most of the user use with plugins like those created and published by RedmineUp. In this context i recommend to concentrate this first integration on the basic Redmine tools in order to support any installation. We will be able to see optional field and plugins in the future. Is it OK for you ?
Hey, so this project will take both server-side and client-side changes. After some discussion internally, I think it's going to be difficult to support server-side development at this point. At some point we'll make it easier, but we're not really able to devote resources to it at this time. So we've decided that the best thing to do to support you is I will implement the server-side OAuth code (it should be pretty easy), then you can take on the client side stuff. Does that sound good to you? I should be able to get the server-side code in place this week, assuming Redmine's OAuth support is standard.
As far as the client side development is concerned, what IDE do you use? I use VSCode, so I'm much more knowledgeable how to do development there, but we can certainly hook you up with the right expertise if you use one of the JetBrains IDEs. We have a guy here who has led a few informal "classes" in how to get up and running with developing for CodeStream, so I could hook you up with him to get you started.
For the actual integration, I'd refer you commit ddfee9d7d376ab0cc8a50b75f12d813342b2e7e5 in the codestream repo. This is the commit where I added support for Linear, the last integration I did. The internals will be different, but the skeletal code should be similar. There are a handful of other commits within the next few weeks after that, authored by me, that finished up a few stray details which you might want to look at as well.
In answer to your questions:
- We don't really have any hard standards. We use json-prettify for the client side code, so it would be best if you used that. And tabs, not spaces. :) Other than that, nothing really stringent. Just try to look at the existing code and follow suit.
 - Unfortunately we don't really have a good architecture document at this point, but I'm happy to answer any questions. Basically, there each extension type (VSC, VS, JetBrains) has its own specific code, but the common code between all extensions is split into two parts: the agent, which does the heavy lifting and interaction with the server, and the UI, which covers the webview UI. If you look at the commit I posted above, you'll see where I've added to each. You shouldn't need to add any extension-specific code.
 - I think this is covered by what I wrote above. I am happy to provide guidance as you get into it. Might be best to create a shared slack channel for it or something, or maybe even better: a CodeStream team. That way we can actually use CodeStream to talk back and forth about the code. That's what it's for, after all!
 
You approach sounds good. I'm not at all familiar with Redmine so I'd leave it totally up to you how you think it's best to proceed.
Questions? Concerns? Let me know!
Hey @RignonNoel ... just checking in with you to see if you have any thoughts on my response. I'd definitely like to support you as best as I can in this effort.
Hey @cstryker !
Sorry the weeks are always busy on my side and i didn't get the change to get back to you even if i saw your message right away.
First of all THANKS for your support, it's really appreciate and i like this spirit! I'm for sure motivated to tackle the subject, i began the analysis of Redmine API and of the commit to linked in your comment (ie: ddfee9d), it look not so complicated so i just hope i didn't missed something 😄 Everything seems clear for the moment, i will for sure get back to you if i hit any blocker.
I managed to have some free days January 30th and 31th so i will focus full time on this integration at this time if it's good for you.
For your questions:
- 
If it's only Typescript like in your commit i will use Webstorm (jetbrains). If i need to do some C# for some reason i guess i will go with VisualStudio since i developed some habits with it using Unity.
 - 
A CodeStream team seems a good idea, it will be a good opportunity for me to use it more and develop some habits before the Redmine integration is available!
 
Do not hesitate if you have any questions,
Hey @RignonNoel ... our DevOps guy actually put together a pretty good document with instructions to run CodeStream's backend services for development ... it's pretty easy actually. So if you're still up for it, rather than taking on the backend work myself, I can leave it up to you to try. Check out https://github.com/TeamCodeStream/codestream-server/tree/feature/migrate-python-configuration-upd/README.md. Note that when doing this, you'll have to work with the feature/migrate-python-configuration-upd branch, for now, as we haven't merged these changes into develop or master yet.
You can take a look at commit 60650097f660f93bc407f58d5ec6e3413c9d1e7a for what I did to implement the linear integration on the backend, assuming redmine will be similar.
I created a new CodeStream team for us to collaborate on this, as needed, and sent you an invite to your public github email. If you'd prefer me to use a different email, you can contact me at colin AT codestream.com
@cstryker Perfect! I'm looking forward to begin with all of that. It will be a great enhancement for our process!
@RignonNoel Just FYI, the support for developing backend services for CodeStream has now been merged into our develop branch (but not yet to master, which is our release branch).
@RignonNoel did you ever get started on this?