janitor
janitor copied to clipboard
Wishlist: Cloud9 IDE Plugins (Integrate project-specific tools and processes)
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
andclang-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
andrr
) - [ ] 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 Could you please add my plugin to the list? (C9 push notification)
@Coder206 Done! Please verify that I formulated this the right way.
@jankeromnes Looks great! Thank you so much! 😀
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
Firefox configuration based on @ZeHiro 's config: https://gist.github.com/nt1m/a44666919a4f347e682ed9f757267766
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.
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. 👍