Calva Funding and Reinforcements and more!

I have good news for all of us who care about Calva. And it is twofold.

As some of you probably have heard, Calva was among the projects selected by Clojurists Together for their Q3 2019 funding. I do not think I can express how thrilled I am about this, so I will just leave it at that. :tada:

In addition to this, the Calva team has doubled in size by Kevin Stehn (@kstehn) joining! Kevin has been helping me with Calva a while and now he has agreed to officially join as a maintainer. This is a super extra happy thing for me, because Kevin brings skills that I lack while also being a super nice guy to cooperate with. Not only does he add awesome stuff and improvements to Calva, things I do get more than twice the better with his help than without! :heart:

The funding and the reinforcements in combination gives me much needed confidence in that we will be able to keep Calva maintainable and continue to improve how it supports Clojure and ClojureScript developers.

But the good stuff do not end there. Alongside Calva, CIDER is also funded this quarter. And since Calva draws a lot of its strength from the CIDER underpinnings (they are using the same Orchard, if you like) it has brought the cooperation between the CIDER and Calva teams more into focus. @bbatsov has formed a Dev Tooling Task Force with his best people, and both Kevin and I have joined, along with maintainers of various editor plugins and Cloijure dev tooling libraries.

It will take Kevin and me some time to start contributing to The Orchard for real, but it is our intention to be Orchard first in our work with Calva. This is, to my understanding, how things already are for the CIDER team, and it is what made Calva possible. :deciduous_tree:

As for the funding period activity. It has started with me and Kevin exploring into refactoring tooling space and continuing the quest to make it easier and less error prone to start developing in Calva. We are also preparing for some much needed refactoring of the mess that is the Calva code. Maintainability is our mantra during this funding period.

The refactoring tooling work might take a while before we see it enriching Calva. But it has also highlighted for us how awesome that Clojure Language Server is. It has loads of functionality ready to be tapped by Calva. We just need to figure out how best to tap it! :grinning:And it is certainly stuff for figuring out together with that task force I just told you about. Kevin made an experiment with making a VS Code extension from it. Please check it out!

Making it easier for more people to start with Calva involves to make more things work. Diversity is nice and all, but it really is amazing with all these different setups and environments where Clojure is used. Here are some aspects we have covered and are covering right now.

  • Releaesed: Custom cljs repl setups (more on that later)

  • Releaesed: Operating system peculiarities. Especially Windows, with its cmd.exe and Powershell and Git Bash and MINGW and WSL and… You get the picture. Jack-in has been really hard to get working reliably, but I think we got it nailed down now. (Inviting the jinx deamons, I know.)

  • Soon!: Multi project workspaces. There is an RC out (visit #calva-dev in Clojurians Slack to find it) which makes Calva work with VS Code’s multi-folder workspaces, as well as with just having many project directories at the root of your workspace. Expect that to be released within a few days.

Maintainability is also about not getting bogged down in user support. Don’t get me wrong. I am in this whole Calva business for the giving of support! I love talking to users and trying to figure out how I can best serve them. But I am also pretty sure that for every user asking for support for some thing that is too hard to use or understand how to use, there are at least ten that give up without contacting us. So fixing stupid things, or just being better at showing how things are supposed to work, makes more people succeed with their Calva/Clojure/ClojureScript adventures. And it is also an important part in freeing up time for adding higher lever value…

Video is a powerful tool in showing how things are supposed to work, right? So during the funding I intend to produce some videos for different aspects of Calva (as well as writing more and better wiki pages). I have never produced video material before, so it will take me a while to figure it out; the tools as well as the medium as such. I decided to practice with a video showing a bit of the progess with making it easier to start using Calva:

We recently improved Calva’s support for custom cljs repl setups. It was the missing piece in order to make Calva able to help in starting JUXT Edge projects and connect to them. So that is what is used in the video, where I jack in and then evaluate code both at the backend and at the frontend of an Edge project:

I would love feedback on this. It was surprsingly hard to make this short video, and I need to learn to make better ones with less effort.

Thanks for reading, listening and watching. I hope you are hungry for testing Calva out, and please consider ways in which you can assist with its development.

Happy coding! :heart:

16 Likes

Congratulations on the funding, @PEZ! Really looking forward to see what you make of it!

1 Like

Having working synergy between the two projects is a dream that comes true!

Thank you for your effort and of course to Bohzidar and contributors (myself included lol) for coordinating and choosing a very good library split so that these kind of things can happen :smiley:

1 Like

Nice to see someone picking up the LSP work again. I did a bunch of experiments with that in shadow-cljs a long time ago and it seemed like a promising way to get things into VScode easily. I don’t think it is a good fit for CLJ(S) overall but it seems like a better basis for tooling integration than nREPL.

I think nREPL is just super awesome. And LSP is strong, especially with VS Code. I think the two can be combined with good results.