Live data from Hacker News

Zellij – A Terminal Workspace and Multiplexer

zellij.dev

81–90 of 248 posts

Re: Zellij – A Terminal Workspace and Multiplexer

#82
post #57

Earlier quoted context omitted.

Such as? All these cases with no and norwegian or whatever but I haven't run into major problems and use it frequently. e: And, AFAIK, I believe the latest YAML 1.2 spec (from 2009) has addressed these issues.

I use it frequently too, but there's some terrible edge cases: https://stackoverflow.com/questions/53648244/specifying-the-...

? I don't think these are issues with Yaml 1.2, the spec since 2009.

Re: Zellij – A Terminal Workspace and Multiplexer

#83

You have a problem and you need a configuration language, so you pick YAML. Now you have two problems. Take a leaf out of Rust's book and use something simple and sane like TOML, YAML is a mess. See: https://github.com/cblp/yaml-sucks Otherwise this looks like a great project, please don't ruin it with YAML.

YAML is the worst choice. Please use something else!

Re: Zellij – A Terminal Workspace and Multiplexer

#84

You have a problem and you need a configuration language, so you pick YAML. Now you have two problems. Take a leaf out of Rust's book and use something simple and sane like TOML, YAML is a mess. See: https://github.com/cblp/yaml-sucks Otherwise this looks like a great project, please don't ruin it with YAML.

Or, to avoid sooner or later falling into Greenspun's Tenth Rule, just go immediately to Lua, which actually evolved out of a configuration language (https://www.lua.org/history.html), so it has syntax & features that are quite friendly for writing configs.

Re: Zellij – A Terminal Workspace and Multiplexer

#85
post #59

The idea of using WebAssembly for their plugins is really impressive (they are using Wasmer!). It allows to have fully sandboxed code that interact with their code safely and fast. I think more projects will start following the same direction soon!

I'm confused. Zellij uses wasmer and wasmer-wasi. Wasmer may use cranelift for compilation (dont know if Zellij does). "Fast & Safe. Wasmer runs WebAssembly at near-native speed in a fully sandboxed environment." ( https://github.com/wasmerio/wasmer ) But ... "Cranelift does not yet perform mitigations for Specter or related security issues, though it may do so in the future." ( https://github.com/bytecodealliance/wa…

It doesn't, nor does it use seccomp to mitigate against language VM security issues.

Re: Zellij – A Terminal Workspace and Multiplexer

#86

You have a problem and you need a configuration language, so you pick YAML. Now you have two problems. Take a leaf out of Rust's book and use something simple and sane like TOML, YAML is a mess. See: https://github.com/cblp/yaml-sucks Otherwise this looks like a great project, please don't ruin it with YAML.

Non-rhetorical questions: why not use the language itself so people can leverage features like autocomplete, type-checking, linting, and intuitive error handling in an IDE? Is there anything about Rust that makes it impractical for representing config/dependencies/etc?

The point of config/scripting languages is to make the user's life easier. I assume nobody wants to deal with the Rust borrow checker and lifetime annotations while tinkering with their configuration. So it depends - should it be an unchanging set of options/flags the user can switch around and then recompile? Probably fine though it'll never be as quick as e.g. recompiling programs from the suckless project. Want to expose interfaces for users to expand and modify the program's code? Not so much.

Rust is a fantastic language, but it's probably not the kind of language you want for this purpose. Same reason why game engines often have scripting languages; so people don't have to deal with C++ where it's not required for performance.

Imho the best compromise is embedding something like Lua which is simple and still flexible enough to allow more than JSON-style declarations.

Re: Zellij – A Terminal Workspace and Multiplexer

#87

You have a problem and you need a configuration language, so you pick YAML. Now you have two problems. Take a leaf out of Rust's book and use something simple and sane like TOML, YAML is a mess. See: https://github.com/cblp/yaml-sucks Otherwise this looks like a great project, please don't ruin it with YAML.

> It's fashionable to hate XML because it was used in a lot of places it was a bad fit in the 00s, but at least it's a pretty good document language. > YAML though is always a bad fit. If you want machine readable config, use JSON; human readable, use TOML. When does YAML ever fit? https://twitter.com/carlmjohnson/status/1372224080749993988

I never got this stance; JSON sucks for config files, because as a user, if there is anywhere that I need and am more thankful for comments, is in a configuration file. And TOML is maybe a good substitute for INI formats, but it doesn't really support nested data like JSON would, so suggesting to use TOML instead of JSON is misleading except for the simplest and most basic needs.

If replacing JSON is the objective, I'd very much rather recommend HJSON [1] than TOML.

[1]: https://hjson.github.io/faq.html

Re: Zellij – A Terminal Workspace and Multiplexer

#89
post #59

The idea of using WebAssembly for their plugins is really impressive (they are using Wasmer!). It allows to have fully sandboxed code that interact with their code safely and fast. I think more projects will start following the same direction soon!

I'm confused. Zellij uses wasmer and wasmer-wasi. Wasmer may use cranelift for compilation (dont know if Zellij does). "Fast & Safe. Wasmer runs WebAssembly at near-native speed in a fully sandboxed environment." ( https://github.com/wasmerio/wasmer ) But ... "Cranelift does not yet perform mitigations for Specter or related security issues, though it may do so in the future." ( https://github.com/bytecodealliance/wa…

I feel like in this case those kinds of things are up to Zellij. If you run wasmer within the same process and share memory with the main Zellij process then yes wasmer/cranelift/wasmtime/wasm doesn't protect you from various speculative execution attacks. However, Zellij could run plugins in separate processes and apply things like seccomp to get further protections provided at the operating system level.

This is still not a complete security story and would not provide the same kind of protection as a VM, but I think the charitable take here is that this is a good sandboxing tool and a step in the right direction for something like a plugin system.

edit: I also disagree with the "fully sandboxed" wasmer line, but wasmer is a venture-backed for-profit org that will start selling something at some point and they might have a motivation to blur the lines a little. I appreciate cranelift's more honest disclaimer.

Re: Zellij – A Terminal Workspace and Multiplexer

#90
post #25

A few months ago, I swapped my iTerm with Alacritty (another Rust based project) and have been really happy with how snappy it is. I highly recommend it. Looking forward to trying this as a replacement for my tmux setup. I like the idea of being able to hack on wasm modules. Will there be matching key bindings for Tmux?

Interestingly, about an hour ago, I was looking into Alacritty to replace iTerm (because of how slow it feels!). I use tmux as well and seeing this project made me wonder if I should test out Alacritty + Zellij!

Alacritty is great, it feels very snappy and it can auto-reload the configuration(with a few exceptions), so you can quickly try out different settings without restarting the program all the time.

I switched to st because Alacritty still has no ligature support, but aside from that limitation it's definitely my favorite.

Post reply on HN