janitor icon indicating copy to clipboard operation
janitor copied to clipboard

Wishlist: Cloud9 IDE Plugins (Integrate project-specific tools and processes)

Open jankeromnes opened this issue 8 years ago • 7 comments

Today, once you've created a contribution environment for a project (bootstrapping from scratch in less than 3 seconds), you're pretty much left on your own for the rest of the work to finish your contribution and get it merged into the project upstream.

It would be great to automate most of the contribution process, and let the Janitor take care of any repetitive or time-consuming workflow steps for you. This can be achieved by customizing Cloud9 IDE for any given project.

Here are the Cloud9 IDE plugins we would like to build for most Janitor projects:

  • [x] Button to update the project's source code (and maybe rebase any local modifications on top)
  • [x] Button to build the project from its sources
  • [x] Button to run the project (for desktop projects like Firefox and Chromium, this implies a noVNC preview, e.g. with c9.ide.desktop)
  • [x] Button to send your local modifications for code review (e.g. by uploading a patch and requesting feedback from someone qualified)
  • [ ] Push notifications (to let users know about IDE events like "Build successful", see the "Cloud9" part of #22, idea from @Coder206)
  • [ ] Show linting feedback in the editor (display project-specific compiler warnings / linting problems right next to offending code, use tools like clang-tidy, clangd (in review), rust language server (how to), rust-clippy, eslint, etc)
  • [ ] Show coverage feedback in the editor (show which portions of the code are not covered by any tests yet using code coverage tools like codecov.io, idea from @sylvestre)
  • [x] Show review feedback in the editor (display comments from an associated code review directly in the editor for convenience, idea from @notriddle) @nt1m ~~started working on~~ implemented this.
  • [ ] Offer coding helpers in the editor (apply technologies like ctags and clang-tidy to allow symbolic navigation in the project's source code and offer powerful one-click fixes / refactors from the editor's UI, idea from @sylvestre)
  • [ ] Show a debugger front-end (to combine the clarity and speed of great UI with the power of gdb and rr)
  • [ ] Alphabetically sort any selection of lines

If you have another idea how the Janitor's IDE could be tuned to accelerate/empower your development on a project, please explain it below and I'll add it to the list.

EDIT: Here is a great video lecture by Harvard University on Cloud9 IDE and how to write plugins for it.

jankeromnes avatar Sep 13 '16 12:09 jankeromnes

@jankeromnes Could you please add my plugin to the list? (C9 push notification)

Coder206 avatar Sep 13 '16 15:09 Coder206

@Coder206 Done! Please verify that I formulated this the right way.

jankeromnes avatar Sep 14 '16 13:09 jankeromnes

@jankeromnes Looks great! Thank you so much! 😀

Coder206 avatar Sep 14 '16 13:09 Coder206

Note: We can configure Cloud9 IDE specifically for each project (e.g. Preview, Run, etc.) by doing something like this example configuration (thank you @ZeHiro !) cc @nt1m

jankeromnes avatar Jun 29 '17 21:06 jankeromnes

Firefox configuration based on @ZeHiro 's config: https://gist.github.com/nt1m/a44666919a4f347e682ed9f757267766

nt1m avatar Jul 05 '17 13:07 nt1m

Great Firefox configuration, thanks @nt1m! However, I think the names "Quick Build" and "Full Build" aren't very transparent (I think Firefox developers know ./mach build and ./mach build faster, and I think even newcomers have heard of it, so maybe it's worth it to use the command as Runner name directly?)

Also, the "Run" runner (sorry) won't work because we need to do that in noVNC. And as it's not currently possible to make a runner open a new tab, I believe we could use the "Preview" button to open a noVNC link, as suggested in the reply in this thread.

jankeromnes avatar Jul 05 '17 14:07 jankeromnes

Update: @nt1m built the https://github.com/JanitorTechnology/c9.ide.janitorconfig plugin that reads a janitor.json config file in order to offer common workflow scripts as "Cloud9 IDE Run configurations" (e.g. update sources, build sources, run binaries, open previews, etc).

This super cool work should address part 1 of https://github.com/JanitorTechnology/janitor/issues/12. 👍

jankeromnes avatar Jul 19 '17 11:07 jankeromnes