In France specifically, the Declaration of the Rights of Man and of the Citizen (which is an integral part of the Constitution), defines freedom as doing anything which does not harm others, and that the Law determines the limits of a freedom.
Which means Freedom (including of Speech) in its very conception is more bounded that the US notion of Free Speech (which, even though also limited, is less restrictive).
However, Free Speech based on the First Amendment only applies to the individual's relations with the State. A private employer in the US can fire an employee for saying something that doesn't reflect the values of the company, even if that speech was lawful. In France (and I assume most Freedom of Speech countries), the constitutional protection applies even with private entities and an employee cannot be fired for a lawful speech. .
>In France specifically, the Declaration of the Rights of Man and of the Citizen (which is an integral part of the Constitution), defines freedom as doing anything which does not harm others, and that the Law determines the limits of a freedom.
But the whole point of freedom of speech is for situations where it does "harm others". If nobody has a problem with your speech, then you don't need laws to protect it. The protection is only useful if speech comes into conflict with someone.
Freedom of speech doesn't stop where somebody else's rights begin, it starts there. There is no need for freedom of speech before that.
And the entire point of constitutional rights is that they should make the society better. There is no inherent value in abstract principles.
Broadly speaking, freedom of speech can mean two roughly orthogonal things:
1. Lack of government censorship.
2. Freedom of speech as an outcome: a society where people can speak their minds without excessive consequences.
Sense 2 is inherently vague and can't be regulated, as people won't agree on when the consequences are excessive. But it's usually what people want when they care about the freedom of speech.
The two senses are sometimes opposed. If you say something other people find unpleasant and a million people decide to ruin your life, it's clearly against freedom of speech in sense 2. But if you have laws against such mob justice, they can easily violate freedom of speech in sense 1.
Freedom of speech in sense 2 is more about culture than government regulations. If you have a highly polarized society, you can't have freedom of speech in that sense.
The "harm" is in relation to other people's constitutional freedoms and rights. Freedom of speech isn't inherently superior to, say, freedom of assembly, freedom of belief, the right to safety in one's person and one's properties, the right to vote, and so on...
It's a question of value: either you think Freedom of Speech is the highest form of freedom and right that one can hold, and all the other freedoms must come second, or that all freedom and rights are equal, and the role of the Constitution and the law is to find a balance between those.
> defines freedom as doing anything which does not harm others
Who decides if someone is harmed? Did I really harm someone if I called them a homophobic slur? Can I say that someone harmed me if the mispronounce my name?
> The US constitution categorically upholds the value of Free Speech whereas the European Court of Human Rights Article 10 explicitly lists the reasons that free expression can be constrained.
There is no difference. From all my searching, these terms are used interchangeably. As far as Brazil is concerned, freedom of expression is freedom of speech. Specifically Article 5 describes four activities of expression that are “free and independent of any censorship”: intellectual activity, artistic activity, scientific activity, and communication activity.
Yes. Brazilians were censored and moved to bluesky. Elon musk has problems with the law! Absolutely no overlap whatsoever. Also very interesting in its own way.
Reinventing iteration, vim.NIL, empty dict, utf-8, etc. Sorry for the snark, but I'm not surprised in the slightest and have no other emotion for that. They could have that and a whole world of packages and tools out of the box by using virtually any language except Lua.
do you have any other language in mind that can be embedded into the editor like lua?
i remember that sublime text had python, but i don’t remember anything relevant from then.
Most scripting languages are embeddable. lang.exe and /usr/bin/lang are just cli frontends to lang dlls and do baseline embedding like `exit(luaL_dofile(L, argv[1]))`, which is one of Lua’s selling points until you start actually binding it to your runtime and this simplicity drowns in necessity of reinvention.
I’ve embedded Perl, Python, Lua in real projects. Didn’t touch Node.js, but pretty sure it embeds as well as long as you’re happy to deal with C++. Judging by the experience with C++ modules for node, it’s not that bad, but not that trivial either. Python, js, ts are all fine candidates with massive mature ecosystems.
Technically, all you do in embedding is: set up the interpreter, define some modules (or globals), these modules export objects or functions which are implemented in C via embedding API. Then you run scripts from strings or files. These scripts use these modules, e.g. vim .get_tab(3) .get_cur_window() .set(“filetype”, “sh”), or you can add metatable/class sugar on top of it. Nothing unique to Lua there.
Lua is small (44k), much simpler and easier to consume than python, supports multithreading, and much faster too if you consider luajit. I don't know when the neovim project adopted lua, but python got a jit this year.
The lua-users[1] website has some (rather outdated) comparisons.
It’s simpler until you need basic functionality, then it’s immediately too simple, as the link above shows. People want dicts, arrays with nil, text buffers and so on.
Multithreading in Lua is done through locking every index access (e.g. `print(t.a.b)` does four locks). It’s not that multithreading everyone wants and it is off by default behind a compile-time flag. This index-locking approach is trivial and only serves a few specific use cases. Neovim doesn’t seem to use it (because locking every “.” sucks). https://stackoverflow.com/questions/3010974/purpose-of-lua-l...
As for JIT, you have to spin few thousand times in the same loop before it kicks in. It doesn’t just magically speed things up, as it has a very noticeable upfront cost. I think it’s arguable whether this load pattern exists in a usual editor-plugin setting, maybe yes, if you e.g. implement a whole langserver in Lua. But in general, interpreter speed doesn’t matter at all for what is mostly glue code. Neovim doesn’t have its text management core written in Lua to make it matter here.
Also note that Lua is fast because its design choices allow that. Once you ignore these choices, it’s slow again. For example __newindex fires only once. To make an “active object” which always fires newindex, you proxy it via {} and it becomes pythonic. Strings are always interned, so if you work with long strings, you’re constantly recalculating hashes and trashing the heap. So you need a userdata with a buffer with a metatable and everything. Plugin code is naturally “highly embedded”, so JIT stumbles upon embedding API and stops making difference due to “exits”. It’s a very thin line to walk along even if you want that performance.
ABSOLUTELY. TLDs other than government and educational ones should be abolished at this point. Trademark disputes are already accommodated, so we needn't pretend that a trademark crisis would result.
You should be able to register something.whatever at the same registrar you'd use for something.com.
And while phones usually have a hardware AV1 decoder, they probably don't have an AV1 encoder.