Just when you thought I was done with my weird obsession with making projects that start with “night”, I went and made another. This one is called Nightlight, and it’s a Clojure editor with a unique twist: it is meant to run *inside* your project, giving it direct access to the state of your program. This might end up being a great idea, or an embarrassingly stupid one.
Website: https://sekao.net/nightlight/ Github: https://github.com/oakes/Nightlight I’ve only been working on this for a few weeks. To explain the idea, I’ll channel Uncle Bob and give it to you in the form of a socratic dialog between myself (Z1) and myself from two weeks ago (Z2): Z2: Nightcode has a lot of crippling limitations. It has no code completion, for starters. Its instaREPL is a toy, because it only works with clojure core. Forget about refactoring support. Z1: It’s almost as if these are caused by the same core issue. Z2: Yeah almost. Anyway where was I... Z1: No, they actually are. Traditional editors and IDEs have the same basic design -- they are standalone programs, so they have to use all sorts of complicated maneuvers to understand your project. It’s a huge source of complexity. Z2: What’s the alternative? Z1: Imagine completely reversing the relationship. Instead of an external tool enveloping and running your program, what if your program ran your development tool? What if they lived in the same process? Your editor would have direct access to the state of your program, opening the doors to all sorts of interactivity. Z2: So what’s the alternative? Z1: Are you serious? I just explained it. Z2: Right. Genius! Nobody has thought of this before. Z1: Plenty of people have, but for the most part those tools are not mainstream. Various Lisp and Smalltalk tools blurred those lines. For example, DrRacket can run your code in the same Racket instance that it is running in. Z2: Doesn’t this mean if you crash your program, you crash your editor? Z1: Yeah...don’t do that. Z2: Got it. How do we build it? Should we just shoehorn Nightcode into some kind of build task, so it pops up every time you start developing a project? Z1: That would be pretty obnoxious, which I realize makes the idea more appealing to you. But consider this: if it was a totally browser-based editor, we could just run a little web server inside your project and the user could interact with it via a browser. Z2: That sounds like a lot of work. Z1: Not really. Nightcode’s editor is already browser-based, so we just need to make the rest of the interface. It should only take about a month, or even less if a large hurricane happens to slam your city in the near future, giving you nothing else to do but code and drink beer. Z2: Hah yeah that’s not going to happen. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.