Nightlight icon indicating copy to clipboard operation
Nightlight copied to clipboard

Desired Features / Roadmap

Open BorisKourt opened this issue 8 years ago • 9 comments

Hi Zach,

It could be helpful to start a roadmap or a list of project goals. Features/extensions/interactions that you are envisioning for the project, aside from requests or issues submitted by others.

I would like to contribute, but think that it would be easier to do that with some high level goals or ambitions as reference.

And thanks for bringing another great project to life!

BorisKourt avatar Oct 12 '16 21:10 BorisKourt

Hello Boris. Right now I'm working on adding a clojurescript REPL. It's turning out to be pretty complex because there are a lot of moving parts involved in setting one up. I'd also like clojurescript code completion and instaREPL, both of which are probably reliant on me first getting the standard REPL working. Other than that, I'm looking for ideas :-)

oakes avatar Oct 13 '16 05:10 oakes

BTW I have my current clojurescript work on the cljs branch. The cljs REPL works but it has no knowledge of the project. Not sure if I can accomplish that but we'll see.

oakes avatar Oct 13 '16 21:10 oakes

Hi Zach,

A cljs REPL would be great. I would also assume that if that works, support for *.cljc / reader macros would be easier.

As a suggestion for the roadmap, rather than trying to add every feature that everyone (including yourself) might want, perhaps focus on making Nightlight easily extensible. For example, add hooks to that can enable live changes to UI and behaviour and have a plugin management system. This worked nicely for tools like emacs and jEdit. Nightcode could then become an environment to hack itself (live!) as well as your own code... It would also let the community build the features they want more easily, as well as taking the burden off you.

Regards, Richard

optevo avatar Oct 16 '16 21:10 optevo

I've been working on something like this for awhile now and would love to join forces.

For example, add hooks to that can enable live changes to UI and behaviour and have a plugin management system. This worked nicely for tools like emacs and jEdit. Nightcode could then become an environment to hack itself (live!) as well as your own code...

This is the angle I've been considering first.

I was an active Eclipse Platform committer for 7 years so I'm very biased toward this part. :-)

I chose Hoplon specifically because I think the spreadsheet/cell metaphor is very easy to understand, particularly for less technical users and because I have hopes (ambitions?) that this could grow into something nontechnical users would want.

Server-side scalability really needs classloader isolation for each sub-dependency or you wind up with conflicting dependencies pretty fast. I haven't solved that problem for Clojure yet. Eclipse uses OSGi for this but it seems not to be well-supported by the Clojure ecosystem. Boot with its pods comes closest.

WIP code is on Github at https://github.com/coconutpalm/datainmotion-server

coconutpalm avatar Oct 18 '16 13:10 coconutpalm

For example, add hooks to that can enable live changes to UI and behaviour and have a plugin management system.

Here are a few things I've run into along these lines:

  • UI scalability - The UI needs to be able to do things we didn't imagine.
  • JS dynamism - I've been teaching myself js while doing this so maybe someone knows of an existing solution for this. What I mean by this is that the front-end layer needs to be dynamically extensible by JS living on any CDN. But JS is so dynamic, this implies the need for something like Clojure's System to start/stop/restart JS modules. requirejs seems close but right now I don't see a way to do this at runtime with requirejs (links/hints welcome).
  • Polyglot. I want the extensibility layer to feel native to JS developers. There are a lot of JS developers. ;-) My focus is on Clojure/script, but I don't want to cut off developers from other communities (Yes, I'm looking at you, ScalaJS too).

Thoughts welcome.

coconutpalm avatar Oct 18 '16 13:10 coconutpalm

Is it possible to just combine the cljs code of nightlight and the code of project into a single build. Then completion can be resolved. Another advantage is that UI preview in edtior become possible.

DogLooksGood avatar Oct 28 '16 08:10 DogLooksGood

I just released version 1.1.0 which adds some initial support for ClojureScript. It includes a UI preview in the editor, @DogLooksGood =) Check out the website -- I added a new section there that explains how it works.

oakes avatar Oct 29 '16 23:10 oakes

I made #nightlight on the Clojurians slack in case anyone wants to chat in real time.

oakes avatar Oct 31 '16 03:10 oakes

Any chance that keybindings can be added? This would help people coming from other languages and editors feel more productive. For me, that's Atom. Nightlight is a lot more robust than Proto-repl and it would be awesome to feel productive in it. Even some simple things like cmd-x ;; cut line cmd-l ;; select line cmd-j ;; join cmd-[ ;; indent cmd-] ;; dedent

I would be happy to add Atom key bindings if there was a place to add them. People who use other editors could add their own. Then maybe there's a way to have your own local keybindings file.

Is this something you're interested in?

jefffriesen avatar Jan 01 '18 05:01 jefffriesen