unrepl

discussing specification of an edn-based repl and its implementations.
richiardiandrea 2017-07-21T07:17:16.337772Z

Another thing to note was the some use case seem to demand for eval or read override, like the one above for security purposes

richiardiandrea 2017-07-21T07:18:02.349412Z

And that there is still the problem of code dependencies to solve when injecting the blob..

richiardiandrea 2017-07-21T07:19:23.369665Z

For instance yesterday I tried to hookup compliment in unravel and I had to do it server side because I would have to concat and send to many blobs + deps to the repl otherwise

richiardiandrea 2017-07-21T07:19:32.372043Z

In general many people showed up

richiardiandrea 2017-07-21T07:20:24.385455Z

Some more concerned about ide integration then streaming repls (there was a question on a better clj-refactor as well)

thheller 2017-07-21T07:23:57.438896Z

I assume β€œsecurity” is related to having a REPL into a production system? or during development also?

richiardiandrea 2017-07-21T07:26:24.477956Z

No security was for prod, one idea was to blacklist or whitelist forms, another was to have a read-only repl where you can only read but not modify vars

cgrand 2017-07-24T12:44:44.219782Z

What does PCI require (or forbid) exactly?

dominicm 2017-07-24T13:06:09.763655Z

cc/ @malcolmsparks ^^

malcolmsparks 2017-07-24T13:31:52.507210Z

@cgrand PCI is a large compliance regime which is hard to fully explain in this thread, but it mostly boils down to knowing who your users are, ensuring that a single bad-actor can't steal information or inject vulnerabilities/backdoors into your systems.

malcolmsparks 2017-07-24T13:33:02.543968Z

It is easier to satisfy some of security requirements if users don't have the ability to mutate the system (other than by the allowed routes through a change management process)

malcolmsparks 2017-07-24T13:34:51.599626Z

Emergency diagnostic access to systems via a REPL environment is a major advantage to Clojure systems, in my view. The knee-jerk reaction of most security regimes is to ban REPLs but I think this is a poor compromise - therefore I'm particularly interested in various strategies to secure REPLs - logging, authentication, monitoring, encryption, etc.

cgrand 2017-07-24T16:06:22.162018Z

What a logging proxy for a start – it may be a hack with netcat and tee.

thheller 2017-07-21T07:28:00.504383Z

I think production REPLs have quite different concerns from development REPLs

thheller 2017-07-21T07:28:12.507299Z

and should probably be built differently to begin with

thheller 2017-07-21T07:28:32.512615Z

you can already override read and eval

thheller 2017-07-21T07:28:53.518091Z

just not with nREPL

richiardiandrea 2017-07-21T07:29:14.524082Z

Yep

dominicm 2017-07-21T08:46:54.972650Z

Is it confusing to have separate unrepl and "tooling" (lsp) protocols?

dominicm 2017-07-21T08:47:50.991394Z

And when I say confusing, I mean from a UX perspective, not in simple/complex terminology.

cgrand 2017-07-21T09:34:05.929036Z

For dynamic deps loading, do you remember me rambling about "side loading"?

πŸ‘ 2
cgrand 2017-07-21T09:38:58.024919Z

A 3rd connection (ideally) where control is inverted: the repl asks for resources to the client.

richiardiandrea 2017-07-21T09:46:25.171601Z

Yes I remember that, one very nice property of the current implementation is that there are no dependency. For dependencies, a repl could ask for a data structure defining coordinates, but then it would need to resolve them. Or it can ask for already resolved jar paths (and actually Cognitect is coming up with a little command line too for doing dep resolution and classpath dump)

dominicm 2017-07-21T10:20:40.833985Z

@cgrand I do yep, I had the sudden "Oh, derp, that makes total sense" last night whilst thinking about it πŸ™‚

πŸ‘Œ 1
cgrand 2017-07-21T13:03:56.747874Z

@richiardiandrea my solution would do dep resolution on the client and would not assume a shared file system.

richiardiandrea 2017-07-21T14:43:14.826537Z

One thing that @dominicm came up with would be to enable unrepl to start connections to other "helper" servers (or repls?). One process, Chrome for instance, then could be dedicated to render data structures nicely, accepting unrepl messages and partially understanding the protocol in order to do stuff

richiardiandrea 2017-07-21T14:44:24.867701Z

Don't know yet how I feel about this though 😁

richiardiandrea 2017-07-21T14:45:25.903238Z

It is funny because as soon as I say that Paul Grander started talking about linkerd

dominicm 2017-07-21T14:51:58.134208Z

The real thing that is needed for PCI compliance is: * Logging inputs (viable with changing the socket repl server) * authentication via arbitrary process: approval via other people for PCI specifically The other stuff was really an expansion. I think it doesn't need to be perfect, it's just to reduce accidental leaks I think.

richiardiandrea 2017-07-21T14:55:28.258340Z

If unrepl supported the concept of peers so that you can offload tasks on the socket we would not need to pass too many things in the blob

richiardiandrea 2017-07-21T14:56:36.299683Z

But you open a connection to your peer and it does the job (render a map, refactor a file maybe)

dominicm 2017-07-21T14:58:25.365722Z

Extensions to unrepl could provide different "render-X" forms which would be evaluated with the form to send data via ws to chrome, or via the connection to emacs as svg, etc

cgrand 2017-07-21T16:13:47.955488Z

@richiardiandrea could you elaborate on what you mean by peer?

cgrand 2017-07-21T19:48:38.339124Z

@richiardiandrea so far I always thought of a star topology with the client as the hub and the server as one spike.