Overall, I like the simplicity, but I have questions and concerns about how this would work:* Who has responsibility for starting sbt server when using IDE integration?** If the IDE is responsible for starting the server, how will I as the user have access to full REPL functionality?** If the IDE is not responsible for starting the server, this will lead to a pretty poor experience of having to manually start/manage multiple things
*** I think gradle is a little more advanced here wrt its tooling API
* Related to the above, since the sbt server might not be started by me, what are the plans for bringing most of the REPL functionality to sbt client?
** Primarily, I want to have access to log messages (perhaps info and more only), inspect, commands and tab completion
* What about console* and reload plugins to get at the meta project from client?
I'll respond inline.On Wed, Mar 23, 2016 at 12:30 PM, Perry Nguyen <pfng...@gmail.com> wrote:Overall, I like the simplicity, but I have questions and concerns about how this would work:* Who has responsibility for starting sbt server when using IDE integration?** If the IDE is responsible for starting the server, how will I as the user have access to full REPL functionality?** If the IDE is not responsible for starting the server, this will lead to a pretty poor experience of having to manually start/manage multiple thingsAs I covered in my blog post, I envision that the build user could manually start the sbt server, at least initially.If there are enough interest in the feature, over time things might improve. For example, maybe the IDE can automatically start it for you in a window.*** I think gradle is a little more advanced here wrt its tooling APIThere's a whole design/discussion around auto discovery here, which sbt-remote-control + Activator uses - https://github.com/sbt/sbt/wiki/Client-server-discovery-lifecycleI'm being more cautious this time around.
* Related to the above, since the sbt server might not be started by me, what are the plans for bringing most of the REPL functionality to sbt client?I am side stepping the issue (at least initially) because you are starting the server yourself, and you to get tab completion in the "server" command. Also IDEs can embed a window that runs sbt inside (IntelliJ does this already).
So the following would matter more to the IDE plugins and potential thin clients.** Primarily, I want to have access to log messages (perhaps info and more only), inspect, commands and tab completionLog messages are important to me too. They will be the first-class citizen in the server world as events.I think it would make sense to provide custom events for things like inspect command, but not sure if it would be v1 or v1.1.Tab completion shouldn't matter much unless you're implementing a thin client. Eventually it should be part of the query against the latest state.* What about console* and reload plugins to get at the meta project from client?console abstraction is possible. tpolecat/tut (or my own sbt/sbt-pamflet used for "herding cats") can turn a markdown text into Scala REPL.
If a markdown can do it, so can JSON, hopefully. Again, this would be like a v1.1 feature for the thin client.There are lots of little details like these for the daemon route. As I wrote on the post, my goal is to underengineer the whole thing.
There's probably more things I would like to see as a user, but these came to mind immediately when reading through. Thanks
On Tuesday, March 22, 2016 at 10:19:46 AM UTC-7, eugene yokota wrote:hi devs,wrote "sbt-server reboot" post based on code retreat + some additional hacking: http://eed3si9n.com/sbt-server-rebootlet me know what you think.-eugene
--
You received this message because you are subscribed to the Google Groups "sbt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sbt-dev+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sbt-dev/CA%2BCq6KST2N_X4fAxC1_gpZ%2BU4LCvgmAW7kiBpoyEs7-K%2B2OLUQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
If a markdown can do it, so can JSON, hopefully. Again, this would be like a v1.1 feature for the thin client.There are lots of little details like these for the daemon route. As I wrote on the post, my goal is to underengineer the whole thing.What's the definition of underengineer?
My version can be found at https://github.com/pfn/sbt-simple-server
It's a plugin that should drop in and work seamlessly on 0.13.5+
There is a proof of concept client script written in python and the plugin should enable the server automatically when the plugin is added to the build (it is compatible with a global plugin configuration)