ChuckerTeam / chucker

🔎 An HTTP inspector for Android & OkHTTP (like Charles but on device)
Apache License 2.0
3.81k stars 329 forks source link

Integration with Hyperion debugging tool #278

Open psh opened 4 years ago

psh commented 4 years ago

:warning: Is your feature request related to a problem? Please describe

No it's not a problem, just an opportunity.

Hyperion is a debugging / inspection tool that lists Chuck integration in its "Third Party Plugins".

It would seem logical to create a Chucker integration for Hyperion and contact the authors to let them know that Chucker is the spiritual successor to Chuck; while the simplest path forward would be to update Hyperion-Chuck to call Chucker, that still leaves confusion over naming and that Chucker is the path to the future.

The integration looks pretty simple - just launching the main Chucker UI - as this would match the current Hyperion-Chuck functionality.

:bulb: Describe the solution you'd like

There's already an issue in the Hyperion-Chuck 3rd party repo (https://github.com/Commit451/Hyperion-Chuck/issues/3) where a user has specifically asked the author to move to integrating with Chucker. The author's response was

Yeah, that is probably a good idea. Feel free to make a PR to change to this if you would like to see it done soon, I don't have much time right now to do this.

Proposed steps -

  1. Create a Hyperion-Chucker repo (under the ChuckerTeam organization) with the appropriate Chucker integration
  2. Submit a PR to Hyperion-Chuck to also call Chucker (as suggested in the issue listed above)
  3. Let Hyperion know about Hyperion-Chucker, so they can update their README (probably just a PR to their README?)
  4. Contact Hyperion-Chuck author to see if they want to archive the Hyperion-Chuck repo to indicate that Hyperion-Chucker is the way forward.

:raising_hand: Do you want to develop this feature yourself?

Note Happy to write the code if the organization level repo exists, but submissions to Hyperion / Hyperion-Chuck would probably carry more weight if they came from the core team.

MiSikora commented 4 years ago

If there is no need first-party plugin you can use this one - https://github.com/DroidsOnRoids/FoQA#chuck-plugin. The description is wrong and needs an update but you can see it uses Chucker in the latest version. https://github.com/DroidsOnRoids/FoQA/blob/master/chucker_plugin/src/main/java/pl/droidsonroids/foqa/chucker/ChuckerPlugin.kt

I guess artifact coordinates name is confusing so it might make sense to create an official Chucker plugin.

vbuberen commented 4 years ago

I like the idea of implementing an official plugin for Hyperion. I have some ex colleagues using Hyperion a lot and heard good reviews mostly. @cortinico What do you think about it? If we are Ok with this I would like to contact the maintainers of mentioned plugins and ask if they would like to join in this effort.

MiSikora commented 4 years ago

One thing I'd like to add. I think it would be better to add plugin to this repository. It would be easier in the future to maintain as the version and releases of the plugin would be then automatically aligned with the version and releases of Chucker.

vbuberen commented 4 years ago

I meant that we should have it as a separate item in ChuckerTeam, not in Chucker. I am against creating big monorepos with multiple different products.

MiSikora commented 4 years ago

Just to be sure - coordinates would be something like com.github.ChuckerTeam.Chucker:hyperion-plugin:X.Y.Z where X.Y.Z would be the same for main library and the plugin or do you want to have separate versioning? My point is only about keeping versions in sync to make sure that whenever Chucker is updated then the plugin uses the latest version as well.

vbuberen commented 4 years ago

I am fine with having separate versioning. I believe it is better for some contributors to fork just plugin if they want to do something for the plugin or fork just Chucker if they want to do Chucker. Also, we might need to update plugin without Chucker sometimes (for example, if something changes in Hyperion).

MiSikora commented 4 years ago

Ok, thanks for the explanation. Agree to disagree but I understand your point of view. :)

koral-- commented 4 years ago

Hi, FoQA manitainer here. I will be happy to drop FoQA Chucker plugin in favor of official one. Here is all the code: https://github.com/DroidsOnRoids/FoQA/tree/master/chucker_plugin And common buildscript: https://github.com/DroidsOnRoids/FoQA/blob/master/build.gradle#L104 It seems that you may reuse most of the sources as is. You may need to only change the package names and a resource prefix.

vbuberen commented 4 years ago

Hi there. Cool, thanks for agreeing to provide your code. I will create a new repo for it in ChuckerTeam and also will mention you and DroidOnRoids (whichever you would like to see) in README. Not providing any deadlines for it, since have some limited availability at the moment.

cortinico commented 4 years ago

@cortinico What do you think about it?

Totally in for this! Seems like having another repo in ChuckerTeam sounds like the best approach as for now. Thanks all for the joint effort.

vbuberen commented 4 years ago

I was able to play around and create prototype (mostly the sample app) and it feels like this integration might be quite useless. Both Hyperion and Chucker show their notifications. What is the point in having Chucker in Hyperion menu? Here is the demo:

hyperion_notifications_opt

@psh @koral-- Is it something that I didn't evaluate properly or you have some other use cases on your mind?

koral-- commented 4 years ago

The main reason is that chucker notifications are not usable when there are dozens of requests in a short period (for example app uses polling). So users may even disable chucker notification channel to not get spammed.

Other reasons:

vbuberen commented 4 years ago

Yeah, I thought only about casew with Chucker notification being dismissed.