
Portacle – A Portable Common Lisp Development Environment - wheresvic1
https://portacle.github.io/
======
flavio81
Portacle is a god send, it basically allows you to directly start development
in Common Lisp without having to install separately (and configure):

\- SBCL (very fast lisp implementation)

\- Quicklisp (lisp package manager)

\- ASDF (builder)

\- Emacs

\- SLIME (Common Lisp mode for Emacs)

\- Paredit (allows easier editing of s-expressions)

\- and other tools that make CL development a pleasure.

The combination of the tools above are effectively a very powerful Common Lisp
IDE.

~~~
y03a
Do you know if installing Portacle will mess with any existing configurations
of those things on Linux? In particular Emacs. I have everything backed up
but, since I only plan to play with CL, I don't want the headache if it does.

~~~
Shinmera
It should not touch anything outside of its own directory. If it does, then
that's a bug and needs to be fixed.

------
Vekz
A very interesting trend of pre-packaged Emacs distros happening. Spacemacs
and doom-emacs are most commonly known for providing general purpose
configurations. Portacle looking as a more focused for a specific use case.

I would like to see this applied to other language environments to lower the
barrier to entry. Maybe Erlang, Haskell, Racket, Ocaml.

~~~
eadmund
> A very interesting trend of pre-packaged Emacs distros happening. Spacemacs
> and doom-emacs are most commonly known for providing general purpose
> configurations. Portacle looking as a mor

Bozhidar Batsov's Prelude[0] is another excellent one. It's got a lot of good
pre-selected choices, and almost no bad ones. I can highly recommend it.

[0] [https://github.com/bbatsov/prelude](https://github.com/bbatsov/prelude)

~~~
escherize
Prelude is extremely good. It's the best way to get up and running with helm,
and only the support for langs you care about (thanks to prelude-modules.el).

------
cup-of-tea
At first I thought: "I bet this isn't as good as SLIME." Then I thought: "I
should really be more open-minded." Then I looked and thought: "Oh."

~~~
phoe-krk
Portacle is a standalone bundle of Emacs + SLIME + SBCL + Quicklisp + Git that
is meant to be completely self-contained and therefore maximally portable.

~~~
hellofunk
Kinda like the old "lisp in a box" package I remember from a few years ago? It
was also SBCL and Emacs and Slime all bundled together as a single "program."

~~~
phoe-krk
Yes. Portacle is a direct replacement for Lisp-in-a-box and Lispstick. Both
are heavily unmaintained and outdated by now where Portacle is under active
maintenance.

~~~
aidenn0
Lispstick was semi-maintained by me until portacle came out. Any further
efforts I make will be to improve portacle.

------
gkya
I didn't test the thing (I have my working setup, but wanted to see what this
was about), but one suggestion anyways: the screenshot shows a welcome message
where it says roughly "Hit C-h h for help". I'd suggest you mention "C-h t"
there too, it should be the first communion of every new Emacs user.

~~~
WalterGR
I wonder how many people press C-h t, get to the following:

 _C-f Forward one character

C-n Next line

C-b Back one character

C-p Previous line _

...and close Emacs, never to open it again.

The tutorial goes on to say:

 _When you get used to these keys, they 're faster than their more familiar
equivalents in other applications (Home, End, Ctrl+Left, etc.) because you
don't have to move your hands from the touch typing position._

That's such ridiculous micro- and premature optimization - especially given
that, since Emacs predates modern conventions, almost _nothing_ is natively
familiar - that it boggles the mind.

~~~
gkya
Those are the keys a usual Emacs users uses maybe hundreds of times in a day.
Every laptop I have owned has its arrow keys and Home-PgUp-PgDown-End block in
a rather unique place, so even if it's a minor optimisation (it's not),
accumulatively it's a very important one. It'd be like replacing a heap
allocation with a stack one in a hot function, if that example works like I
think it does.

~~~
coldtea
> _so even if it 's a minor optimisation (it's not)_

Has it been measured?

I mean, if they have actually measured:

1) the speed difference of using those shortcuts vs arrow/page-up and co when
merely typing

2) the same speed difference as a percentage of the overall programming
process

3) the impact of such speed difference in programmer productivity (speed
translated to results faster or better code with fewer bugs).

Or it's just cargo cult?

~~~
reaperducer
> Or it's just cargo cult?

Yes, it is. Like much of the rest of programming.

I think it's weird for an IDE to tell me which command keys to use. It should
have a set of default keys, and ideally those could be remapped as well.

The biggest benefit of directional keys (up, down, home, end, etc...) is that
they are universal across keyboards and languages. Control-F may be great if
you're on a VT100 terminal, but maybe I'm on an AZERTY keyboard, or one of
those funky square keyboards. Or a Chinese keyboard that's largely input by
writing characters on a little pad. Or on a Mac using gestures or Ink. Or a
dozen other possibilities.

If I was only programming in Pascal and only on one computer in one
environment for the rest of my life, then it would make sense to learn those
keystrokes. But like is more complicated than when those were first coded.

~~~
thaumasiotes
> It should have a set of default keys, and ideally those could be remapped as
> well.

It sounds like you may not be aware that this describes emacs?

------
serpix
How is Common Lisp for SPA development? I tried to look for anything on either
Racket or CL side and pretty much a dead wasteland on that front.

I've used re-frame ClojureScript for a few years now but would like to dip my
toes in CL, just can't seem to get a head start. Maybe trying CL on the
backend first, but even there Clojure dominates..

~~~
grovehaw
The Potato open source chat platform has a Common Lisp backend and a
Clojurescript frontend. There is a fascinating talk by one of the authors on
Youtube [0], and the code is on github [1].

A relatively new Web Application Environment called Radiance may also be worth
looking at.[2]

[0]
[https://www.youtube.com/watch?v=bl8jQ2wRh6k](https://www.youtube.com/watch?v=bl8jQ2wRh6k)
[1] [https://github.com/cicakhq/potato](https://github.com/cicakhq/potato) [2]
[https://shirakumo.github.io/radiance/](https://shirakumo.github.io/radiance/)

~~~
jdormit
Why not Clojure on the backend as well?

~~~
lokedhs
Because I believe that Common Lisp is a better language than Clojure. I'd be
happy to discuss specifically what I believe the most important differences
are in case you're curious.

Clojurescript was chosen on the client side because its integration with Om
was very nice and matched the idea of immutability in Clojure.

Now that Om is no longer well supported we have a problem. The client side
needs to be rewritten, but none of us have the time to do so. We'll see what
happens with the project.

This highlights another benefit of Common Lisp. It's very mature and I don't
have to worry about the fameworks that I use becoming obsolete after a short
period of time.

------
fsloth
It's like Visual Studio install for Lisp. I like that the idea of single sane
default configuration is promoted over infinite configurability.

------
divs1210
This is great! I'm a Clojure guy who had given up on CL before. Will take it
out for a spin for sure!

Check out Nightcoders[0] for a similar IDE for Clojure.

[0] [http://nightcoders.net](http://nightcoders.net)

------
Y_Y
Looks like the project could do with some help making self-contained Linux and
OSX packages. Is there a good multi-distro way to do that yet? Ideally one
that allows self-modification.

~~~
Shinmera
Given that packaging things in a self-contained manner is pretty much all this
project does, I'm a bit confused about your comment. Could you elaborate?

~~~
Y_Y
Sure. If you look at the main page they go to trouble to explain that you
can't separate the executable from its special folder on any of the three
platforms. Especially on Mac that's unusual.

~~~
Shinmera
That's on purpose, and required, for a variety of reasons.

First would be that it cannot be put together into a single executable as it
is composed of multiple, separate components, that each rely on a specific
structure of the file system being present. This is not something I can
control.

Second, Portacle is made in such a way that all three platforms can be
combined together into a single directory so that it can be run on any system
as one, which mandates a shared folder structure.

Third, in order to be self-contained, the Portacle installation directory must
contain its own configuration and project directories. It makes no sense to
allow you to move the executable outside of this, and it would make no sense
to put those directories within the .app on, say, mac.

------
billfruit
Is there anything like this for clojure, with all its tooling rolled into a
self contained package? What about for clojurescript?

~~~
jtanza
Clojure For the Brave and True includes an excellent clojure setup for
emacs[0]

[0] [https://www.braveclojure.com/basic-
emacs/](https://www.braveclojure.com/basic-emacs/)

~~~
scroot
Every time I've tried to follow the setup tutorial in that book I've not been
able to get something basic to work, like the REPL or the flycheck parser.
It's prevented me from really diving in to be honest.

~~~
abhirag
Probably give Emacs Live ([https://overtone.github.io/emacs-
live/](https://overtone.github.io/emacs-live/)) or Spacemacs
([http://spacemacs.org/](http://spacemacs.org/)) with the Clojure layer
installed a try. Learning Emacs and Clojure both at the same time can be kinda
overwhelming though and if you are just interested in Clojure and not Emacs
you should probably just start with Cursive ([https://cursive-
ide.com/](https://cursive-ide.com/))

~~~
scroot
I'll try one of those -- might be good to have something separate. I use Emacs
as my main editor and there's already a lot added onto it. Thanks for the
links.

------
thinline
This is nice, thanks for providing it. Is there any intent to allow for Sly to
be used instead of Slime (as an option, I mean)?

~~~
Shinmera
If you open up an issue we could look into what's required. From what I can
tell it shouldn't need much work, just an additional file that configures
defaults similar to [https://github.com/portacle/emacsd/blob/master/portacle-
slim...](https://github.com/portacle/emacsd/blob/master/portacle-slime.el),
and a way to defer the loading of either one until after the user file has had
a chance to make its customisations.

------
leanthonyrn
Can't wait to get home and try this. Now if we can get this to run in
Javascript using WebAssebly that would be a dream come true.

Making WebAssembly better for Rust(Common Lisp)
[https://news.ycombinator.com/item?id=16585315](https://news.ycombinator.com/item?id=16585315)

------
hajile
It needs EVIL for us vim users.

~~~
flavio81
>It needs EVIL for us vim users.

I guess on the future we could have VPortacle, which would be VIM + SLIMV
(Superior Lisp Interaction Mode for Vim, the Vim counterpart to SLIME).

~~~
hajile
Nah, lisp development tools are much better on emacs and EVIL is a very good
vim clone.

------
FractalLP
Nicely done just by looking at the site. I'll have to check it out later.

------
agumonkey
I remember a few similar things, forgot the names, lispbox or something like
that. They were very nicely packaged but were not maintained so I'm happy to
see new activity in this domain.

------
shady-lady
Just downloaded this a few days ago and it's really cool.

Would love to see this all in one for Clojure (incl. self contained standalone
emacs)

------
RobertoG
Nice. Is there something similar for python?

~~~
CodeArtisan
Not emacs but Anaconda is a python distribution with an editor (spyder), a
package manager (conda), ... out of the box

[https://www.anaconda.com/distribution/](https://www.anaconda.com/distribution/)

------
ngvrnd
Really slick. Kudos.

------
rouxz
supercool stuff

