Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sayid Viability for CLJS? #66

Open
JJ-Atkinson opened this issue Jun 4, 2021 · 11 comments
Open

Sayid Viability for CLJS? #66

JJ-Atkinson opened this issue Jun 4, 2021 · 11 comments

Comments

@JJ-Atkinson
Copy link

It appears that sayid does not currently support CLJS. Is there any technical reason for this? If not, I may be interested in helping make CLJS happen.

@bpiel
Copy link
Collaborator

bpiel commented Jun 4, 2021

I think it's possible, but there's at least a couple different ways I could imagine it working. The first design question is whether you would want Sayid to straddle both the server and client, or if the clj and cljs would be separate. I'm struggling to come up with the right words to lay out my thoughts concisely.

By "straddle the server and client", I mean in a typical clj/cljs web-dev scenario, would you want a single instance of Sayid running on the jvm that can collect data from both the server and browser simultaneously and then display both in a single buffer? OR, "if the clj and cljs would be separate", then you would have Sayid running in only one environment, or two independent instances, each in their respective environment.

I've done a good amount of work in cljs, but am not nearly as familiar with the inner workings of all the various cljs REPLs. Implementing integrations for one may not cover all of them. Maybe other complications? I'm not sure.

@JJ-Atkinson
Copy link
Author

👍 . Thanks for the info. I'm looking at the possibility of making a graphical front end for Sayid. Not entirely sure if I'll get support to do that, but if I do I'll be trying to contribute back Sayid for CLJS.

@bpiel
Copy link
Collaborator

bpiel commented Jun 7, 2021

@JJ-Atkinson What would host the gui front-end? Browser?

Feel free to hit me up with any/all questions that I might be able to help with.

@JJ-Atkinson
Copy link
Author

Not exactly sure. Either JFX or browser. In either case the viewer architecture will be a thin client sending back requests to the internal data of sayid. I find myself writing cljs programs alot though, and having a really good debugger would be the bomb :)

@bpiel
Copy link
Collaborator

bpiel commented Jun 8, 2021

@JJ-Atkinson I just remembered that I'd seen this on reddit last year. Seems worth checking out before making any major time investments. I haven't used it, but README is impressive and compelling.

https://github.com/jpmonettas/flow-storm-debugger

@JJ-Atkinson
Copy link
Author

Very cool, I hadn't seen that yet. I'm trying it today as a daily driver :). Unfortunately it's still missing what I think could be the coolest feature: entire traces of a function call with multiple views. e.g. flame graph, tree view, timing, etc, and integration with something like reveal for value display.

@Cyrik
Copy link

Cyrik commented Oct 8, 2021

@JJ-Atkinson @bpiel
I've been playing around with getting https://github.com/philoskim/debux to save it's output instead of printing it directly. The idea is to get something like https://github.com/day8/re-frame-debux that's not generic and not married to re-frame, so it can be displayed in Reveal or Portal or something new.
Sayid seems to do a similar thing, but coming at it from the top-down perspective, similar to flow-storm, but with no cljs support.
It seems to me that we all want basically the same things, but have implemented different ways to get there and built on top of dependencies that could be pulled out.
I still don't have a fully formed idea where to go from here but it seems to me like there is a common core in all of this, somewhere. I think we could all benefit if we could find that core and build on top of that instead of having multiple libs that can't use each others features.

@bpiel
Copy link
Collaborator

bpiel commented Oct 8, 2021

@Cyrik

common core in all of this

Yes, definitely. I have a uncontrollable tendency to always dig for better abstractions, so I'm with you. I think my dream scenario would involve some kind of common protocol&formats for omniscient debugging (not my term, but the most applicable one, as far as I can tell). The language server protocol and debug adapter protocol seem to have some traction, but of course, the debug component is focused on step-through debugging (which I have no interest in).

https://microsoft.github.io/debug-adapter-protocol/

I still don't have a fully formed idea where to go from here

I don't either. Although, out of necessity, I'm doing some vaguely related experiments that may or may not yield something in this area some day. A bit of a tangent, but: I'm working on a distributed VM, using clojure&rust. Debugging rust is notoriously difficult, so I've sometimes had some super-hacky things going on where I'm able to pipe trace data, captured in rust, out to a clojure/jvm instance and then use sayid (and emacs) to examine the trace tree. Naturally, as the project proceeds, I'll make further investments in this area. Because I'd want to maximize re-usability across the platforms I'm using (clojure, rust and this VM), I'd need some standardized protocol&formats that would be friendly to each of those.

find that core

I guess what I'm trying to say is: I understand and agree with you. And, maybe I'm even working on this, in my own way. But, unfortunately, nothing I'm doing is likely to help anyone anytime soon, and I'm not available to put any significant time toward anything else. But, I still enjoy the discussions!

@JJ-Atkinson
Copy link
Author

@Cyrik I pretty much agree. I'm interested in putting some time towards that project and making it OSS. Unfortunately I'm tied up right now with R&D for an underlying project, and any time I throw this direction is dependent on success of the R&D project. I'm about 3 months away from any serious time commitment. Though, I'm more than willing to chat and maybe see if we can't identify what the fully formed idea would look like. Something that you may be interested in: https://opentracing.io

@Cyrik
Copy link

Cyrik commented Nov 30, 2021

@bpiel @JJ-Atkinson so because there weren't enough tracing implementations, I wrote omni-trace ...
kidding aside, I was playing around with Sayid as cljc files and wasn't getting anyway, so I started from scratch. The current idea is to get some more functionality in and then try to get the tracing part to be pluggable.
I'm open to suggestions/requests

@bpiel
Copy link
Collaborator

bpiel commented Nov 30, 2021

@Cyrik I saw omni-trace on reddit last week. Great work! Glad to see that the hotdog/taco vending machine model lives on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants