I’m not here to argue sides, and Linus’ comment is extremely uncouth, but you should understand that it’s due to territorial sanctions, not just because someone is Russian or not. It’s not that Russians are inherently untrustworthy, it’s just that everyone working within Russian territory could be forced to commit espionage for the government and they really wouldn’t have an option besides risking not only their lives but their family’s lives.
There’s absolutely a conversation to be had here, blindly screaming “racist!” at everyone isn’t how to go about it.
It’s not even a matter of territory, it’s a matter of employment. There are plenty of people from Russia on the MAINTAINERS list after this patch set, they just don’t work for sanctioned companies.
No one got removed from the list for being Russian. They got removed because they’re working for companies on the OFAC sanctions list. You don’t have to be Russian for that, you’d get removed regardless of nationality if you’re working for one of those companies, and the company in question doesn’t have to be Russian, either, there are companies from all over the world on that list, including from the US for that matter.
Framing this as xenophobic or racist is honestly kind of awful for those of us who actually experience xenophobia or racism. Not being allowed on a list because your employer is on the wrong list is both a universal problem and not quite the same kind of thing as being called a slur based on where you were born or when they hear your accent.
Not that I want to defend the way this was communicated. You never know why someone’s working for whoever’s employing them. Maybe they agree with their government’s ideology, sure, or maybe they just don’t care and karma woke up grumpy today. But maybe they have an ailing parent and no other realistic prospect of employment, or someone’s literally held a gun to their head, or a relative’s head, or maybe working there is the only reason why their kid isn’t being sent to the frontlines. Basic decency would’ve required an elegant approach, even at the risk of being wasted on people who didn’t deserve it.
This is a complete clusterfuck and I’m sure there’s no shortage of people who are cheering for it because they’re xenophobic assholes, which only makes it worse.
Blindly screaming “racist” isn’t the way to go about it, I will grant. Conversely, screaming “Russian bot”, “troll”, and “I’m Finnish” aren’t ways to go about that conversation either. There may be a very legitimate reason for the actions taken by Linus and friends. But mumbling something about “compliance requirements” (Greg KH) and deflecting with ad hominem (Linus) are not how you run an open source project that values transparency and trust very highly. Especially when that project is global in scope like Linux.
I’m seeing a lot of bad faith “well they do it so I can do” extremist comments around this predicament. Linus is being biased, so we can be too. The US commits espionage, so Russia should be able to as well (I’m not saying Russia is but that’s a sentiment I see being tossed around). None of this is productive. This is a matter of sanctioning laws and Linus not being able to shut his mouth, both problems are old as time. This is not an excuse for us to rip off our shirts and act like cavemen.
I don’t know if you’re familiar with the problems around the Rust For Linux project, but the entire Linux project seems to have extreme interpersonal issues in every corner. The entire Linux project is extremely unhealthy, and I’m really not surprised at how this was handled, it seems par for the course at this stage.
everyone working within Russian territory could be forced to commit espionage
The same is very true for the USA, as well.
The most offensive aspect of this drama is that, the door is open for the rest of the world to demand that American’s not be allowed access to the Linux kernel, also - for the same reasons that Russians are now denied it.
Listen to me very, very carefully, we are not talking about morality, we are talking about sanctioning laws. This is not a politics thread, pushcx already had to delete half the comments in this thread because people do not understand that.
It’s especially sad that your post is directly under one of my responses to a response to my post, where I point out how many people are using this as an excuse to act in bad faith and point fingers at everyone for no productive end goal. No, let’s not burn the world down because one country has some sanctioning laws against another, how about that?
Unfortunately for as long as a single nation thinks it has a moral imperative to ‘fix the world’ using its resources, this will always be a political battle.
one country has some sanctioning laws against another
Only the American people think they have the moral altitude to ‘do something about those inferior cultures’.
This isn’t about morality or law. This is about totalitarian-authoritarianism. Point.
The sanctioning laws against Russia are a lot more involved than the US single-handedly deciding Russia is an “inferior culture”, but I’ll stop here. I have a feeling you’re a bit too emotionally invested in this to hold a proper conversation about it.
Nonsense. America sanctions its enemies because it is a form of power and control, and that is the only reason it happens.
America has done everything bad that Russia has done, this century. But who sanctions the USA? Nobody, because only the USA has given itself that ability.
I’m not here to argue sides, and Linus’ comment is extremely uncouth, but you should understand that it’s due to territorial sanctions, not just because someone is Russian or not. It’s not that Russians are inherently untrustworthy, it’s just that everyone working within Russian territory could be forced to commit espionage for the government and they really wouldn’t have an option besides risking not only their lives but their family’s lives.
Can you clarify the origin of this information? It has been hard to find much of anything about the reasons for this action. The most detail I could find was that lawyers said to remove maintainers who work for companies “on the U.S. OFAC SDN lists, subject to an OFAC sanctions program, or owned/controlled by a company on the list.” Which would suggest it’s based on companies rather than territory.
Russian aggression is precisely the reason for the sanctions, though. I guess he’s just saying he agrees with them (and given the history between Russia and Finland I’m not surprised.) Admittedly agreeing with sanctions is rather irrelevant from a legal PoV - you still have to implement them, either way.
Assuming that this decision was taken to comply with international sanctions, it would be appropriate for the kernel team to remove access for contributors with ties to Hamas, an organization that is both sanctioned and responsible for the terrorist attacks that the state of Israel is now responding to.
Israel itself is not under sanctions.
Sanctions are a blunt instrument and will affect innocents and non-supporters of the sanctioned state or organization too. However the idea is that they are an international response that leaders should take into account before attacking another country.
While I agree to restrict access for maintainers affiliated with terrorist organizations such as Hamas, I believe that effectively differentiating between innocent individuals, supporters, and non-supporters is extremely challenging and basically not worth it
It’s practically impossible to make an objective decision about whether verbal and physical actions serve the terrorist organization’s purpose or not
I wrote this comment before reading that only those employed by companies on the OFAC list were remove from the list. This is also an imperfect filter but it’s far from the accusations that just being Russian is enough to be removed from the list.
Those russians that do not support russian aggression have much more pressing concerns than contribution to Linux. They should not be distracted from organisation of opposition or migration elsewhere, or a bajilion of other things they should be doing. Doing nothing was somewhat defensible before the full scale invasion but not any more. Doing nothing now is complecency and a tacit support of the current government policy.
This is a basically unreasonable obligation to put on the citizens of any country, and I can confidently say without knowing you that you would not hold yourself, your family, or your friends to the same standard if the situation were reversed.
This is the right decision and it has nothing to do with “US law” as some of the lwn people seem to be talking about. Russia is a dictatorship with sophisticated state-powered cyberwarfare capabilities. Regardless of whether a Russian-based maintainer has malicious intent towards the Linux kernel, it’s beyond delusional to think that the Russian government isn’t aware of their status as kernel developers or would hesitate to force them to abuse their position if it was of strategic value to the Russian leadership. Frankly it’s a kindness to remove them from that sort of position and remove that risk to their personal safety.
It may or may not have been the right decision, but it was definitely the wrong way to go about it. At the very least there should have been an announcement and a reason provided. And thanks for their service so far. Not this cloak and dagger crap.
Indeed this was quite the inhumane way to let maintainers with hundreds of contributions go, this reply on the ML phrases it pretty well:
There is the form and there is the content – about the content one
cannot do much, when the state he or his organization resides in gives
an order.
But about the form one can indeed do much. No "Thank you!", no "I hope
we can work together again once the world has become sane(r)"... srsly,
what the hell.
Edit: There is another reply now with more details on which maintainers were removed, i.e. people whose employer is subject to an OFAC sanctions program - with a link to a list of specific companies.
I hope we can work together again once the world has become sane(r)
This would be a completely inappropriate response because it mischaracterizes the situation at hand: if the maintainers want to continue working on Linux, they only have to quit their jobs at companies producing weapons and parts used to kill Ukrainian children. It has nothing to do with the world being (in)sane, and everything to do with sanctions levied against companies complicit in mass murder.
Yes, the decision is reasonable whether or not it is right, but the communication and framing is terrible. “Sorry, but we’re forced to remove you due to US law and/or executive orders. Thanks for your past contributions” would have been the better approach.
This is true of quite a few governments, including those you think are friendly, and it is a huge blind spot to believe otherwise. Dictatorship doesn’t have anything to do with it, it isn’t as though these decisions are made right at the top.
Do you have the same reaction to contributions from US-based companies that have military contracts? While the US isn’t a dictatorship, the security and foreign policy apparatuses are very distant from democratic feedback.
Regardless of whether a Russian-based maintainer has malicious intent towards the Linux kernel, it’s beyond delusional to think that the Russian government isn’t aware of their status as kernel developers or would hesitate to force them to abuse their position if it was of strategic value to the Russian leadership.
It’s hard to single out Russia for this in a post-Snowden world. Not to mention that if maintainers can be forced to do something nefarious, then they can do the same thing of their own will or for their own benefit.
Frankly it’s a kindness to remove them from that sort of position and remove that risk to their personal safety.
The Wikimedia Foundation has taken similar action by removing Wikipedia administrators from e.g. Iran as a protective measure (sorry, don’t have links offhand), but even if that’s the reason, the Linux actions seem to have a major lack of compassion for the people affected.
It wasn’t xenophobia. The maintainers who were removed all worked for companies on a list of companies that US organizations and/or EU organizations are prohibited from “trading” with.
The message could have (and should have) been wrapped in a kinder envelope, but the rationale for the action was beyond the control of Linus & co.
Here’s what Linus has said, and it’s more than just “sanction.”
Moreover, we have to remove any maintainers who come from the following countries or regions, as they are listed in Countries of Particular Concern and are subject to impending sanctions:
Burma, People’s Republic of China, Cuba, Eritrea, Iran, the Democratic People’s Republic of Korea, Nicaragua, Pakistan, Russia, Saudi Arabia, Tajikistan, and Turkmenistan.
Algeria, Azerbaijan, the Central African Republic, Comoros, and Vietnam.
For People’s Republic of China, there are about 500 entities that are on the U.S. OFAC SDN / non-SDN lists, especially HUAWEI, which is one of the most active employers from versions 5.16 through 6.1, according to statistics. This is unacceptable, and we must take immediate action to address it, with the same reason
The same could be said of US contributors to Linux, even moreso considering the existence of National security letters. The US is also a far more powerful dictatorship than the Russian Federation, and is currently aiding at least two genocides.
The Linux Foundation should consider moving its seat to a country with more Free Software friendly legislation, like Iceland.
In other words, refusing to comply with international sanctions. This is in fact an incredibly high bar to clear for Iceland. It would require the country to dissociate itself from the Nordic Council, the EEA, and NATO.
a kernel dev quoted in the Phoronix article wrote:
Again, we’re really sorry it’s come to this, but all of the Linux infrastructure and a lot of its maintainers are in the US and we can’t ignore the requirements of US law. We are hoping that this action alone will be sufficient to satisfy the US Treasury department in charge of sanctions and we won’t also have to remove any existing patches.
that made me think it was due to US (not international) sanctions and that the demand was made by a US body without international jurisdiction. what am I missing?
Without a citation of which sanction they’re referencing it’s really hard to say. I assumed this sanction regime was one shared by the US and the EU, and that Iceland would follow as a member of NATO and the EEA. If it is specific to the US, like their continued boneheaded sanctions against Cuba, than basing the Linux foundation in another country would prevent this specific instance (a number of email addresses removed from a largely ceremonial text file in an open source project) from happening again.
Note however that Icelandic law might impose other restrictions on the foundation’s work. The status of taxation as a non-profit is probably different.
even if it has to do with international sanctions, their interpretation and enforcement seems to have been particular to the US. it reeks of “national security” with all the jackbootery that comes with it.
For example in my code I have this function to get a config filename from the environment variable:
let get_config_filename: string =
try
let path = Sys.getenv "CONFIG" in
path
with Not_found ->
"./websites.yaml"
That’s not a function - that’s a named value. It’ll be evaluated only once. To make it a function, you’d need to take an argument (usually unit, i.e. ()), like:
let get_config_filename () = (* ... *)
I think this confusion is why some ML-syntax-like languages try to differentiate it with a different keyword for functions (like Rust’s fn) or using lambda syntax (like Roc’s name = \arg -> result.)
Apart from that, I agree with the author’s conclusion that OCaml is hard to get into. It’s hard to figure out how you’re supposed to solve common problems, and there’s scarce few “blessed” approaches to do common things. This is amplified by the OCaml 5 and domains situation because the earlier popular approaches for things aren’t necessarily how things should be done in the post-5 world. There’s been a few times where I look up how to do something, and decide on library/approach foo, but while I’m working on it I face issues like what the author did with crawl_website, and I’ll run into threads on reddit where people will be like “Obviously you shouldn’t use foo, use ppx_bar instead” and I’ll give up and resolve not to use OCaml again…
I haven’t looked into it too deeply, but even the newest edition of RW OCaml is not written for OCaml 5+, so it won’t cover domains and whatnot. Add to that the usual Async vs Lwt argument and I don’t recommend it right now.
It’s me, author of this article.
Thanks a lot for clarification. Does that mean even if env var value changes it won’t be reflected because it is executed only once?
kivikakk already covered your question but I’ll throw in a helpful tip for knowing the difference in the future: all functions in OCaml must have an -> in their type. You can use your editor’s LSP integration (e.g. in neovim I have to press K on a symbol to see its docs) to see that the inferred type of get_config_filename is string, while a function would be () -> string.
Yes — you can prove this to yourself by trying something like this:
let main () =
let get_config_filename: string =
print_endline "evaluating get_config_filename";
try
let path = Sys.getenv "CONFIG" in
path
with Not_found ->
"./websites.yaml"
in
print_endline get_config_filename;
print_endline get_config_filename
in
main ()
That said, how are you anticipating the environment variable changing? OCaml’s stdlib itself doesn’t expose setenv or unsetenv — note aborted attempt here.
edit: oh, never mind me! Unix.putenv is mentioned right there, which of course works on macOS. So you can try this:
#load "unix.cma";;
let main () =
let get_config_filename: string =
print_endline "evaluating get_config_filename";
try
let path = Sys.getenv "CONFIG" in
path
with Not_found ->
"./websites.yaml"
in
print_endline get_config_filename;
Unix.putenv "CONFIG" "hello";
print_endline get_config_filename
in
main ()
Which outputs the same as above. Now note the change here:
#load "unix.cma";;
let main () =
let get_config_filename () =
print_endline "evaluating get_config_filename";
try
let path = Sys.getenv "CONFIG" in
path
with Not_found ->
"./websites.yaml"
in
print_endline (get_config_filename ());
Unix.putenv "CONFIG" "hello";
print_endline (get_config_filename ())
in
main ()
This is amplified by the OCaml 5 and domains situation because the earlier popular approaches for things aren’t necessarily how things should be done in the post-5 world.
Keep in mind that OCaml 5 is very very young and that 5.0, 5.1 and even 5.2 are not considered ready yet. I agree that OCaml often lacks a one-true way but OCaml 5 is not a good example of that.
I agree that it is young, but at this point it objectively is the future of OCaml, so for someone just getting into it it doesn’t make sense to not start with it. Doubly so because it affects IO, which is what most basic and common programs do! The author of this article started out writing a scraper, my first attempt was to write a discord bot, and many people kick the tires with a web framework like Dream. So the problem of pre-4 approaches not being the future is more of a problem: as a newcomer, is what I’m learning going to become outdated soon? Especially when it’s the core of what I’m doing?
I don’t want to be overly negative abotu OCaml because I really like the language otherwise, so I’ll point out that there are people like @leostera on twitter who are working really hard on this problem and have made great progress. For people who want to get started with OCaml, I think https://github.com/leostera/minttea is natively OCaml 5 and really fun for making TUIs.
I believe it does make sense to start with Lwt rather than with Eio now. There’s simply more learning resources and more Lwt-compatible libraries. Lwt won’t become obsolete in the near future and the knowledge of OCaml+Lwt will transfer good to OCaml+Eio — same language after all.
Looks like a neat concept. I tried to clone the repo and run this myself, but it looks like it has a dependency on a local crate, so it wouldn’t build.
Ah sorry, I factored out the 9p implementation to its own crate and until the project was shared here I very much doubt anyone other than me had tried to compile it. I’ve removed the path dependency now so you should be alright to try and recompile, but I should put together a getting started guide on how to set up the scripts and so on. I mad a quick video to demo the virtual file system behaviour for a friend a while back but things have changed a bit since I recorded it so I’ll record a new one and add the link to the repo so people can see how it all works.
I’m not here to argue sides, and Linus’ comment is extremely uncouth, but you should understand that it’s due to territorial sanctions, not just because someone is Russian or not. It’s not that Russians are inherently untrustworthy, it’s just that everyone working within Russian territory could be forced to commit espionage for the government and they really wouldn’t have an option besides risking not only their lives but their family’s lives.
There’s absolutely a conversation to be had here, blindly screaming “racist!” at everyone isn’t how to go about it.
It’s not even a matter of territory, it’s a matter of employment. There are plenty of people from Russia on the
MAINTAINERSlist after this patch set, they just don’t work for sanctioned companies.No one got removed from the list for being Russian. They got removed because they’re working for companies on the OFAC sanctions list. You don’t have to be Russian for that, you’d get removed regardless of nationality if you’re working for one of those companies, and the company in question doesn’t have to be Russian, either, there are companies from all over the world on that list, including from the US for that matter.
Framing this as xenophobic or racist is honestly kind of awful for those of us who actually experience xenophobia or racism. Not being allowed on a list because your employer is on the wrong list is both a universal problem and not quite the same kind of thing as being called a slur based on where you were born or when they hear your accent.
Not that I want to defend the way this was communicated. You never know why someone’s working for whoever’s employing them. Maybe they agree with their government’s ideology, sure, or maybe they just don’t care and karma woke up grumpy today. But maybe they have an ailing parent and no other realistic prospect of employment, or someone’s literally held a gun to their head, or a relative’s head, or maybe working there is the only reason why their kid isn’t being sent to the frontlines. Basic decency would’ve required an elegant approach, even at the risk of being wasted on people who didn’t deserve it.
This is a complete clusterfuck and I’m sure there’s no shortage of people who are cheering for it because they’re xenophobic assholes, which only makes it worse.
Blindly screaming “racist” isn’t the way to go about it, I will grant. Conversely, screaming “Russian bot”, “troll”, and “I’m Finnish” aren’t ways to go about that conversation either. There may be a very legitimate reason for the actions taken by Linus and friends. But mumbling something about “compliance requirements” (Greg KH) and deflecting with ad hominem (Linus) are not how you run an open source project that values transparency and trust very highly. Especially when that project is global in scope like Linux.
I’m seeing a lot of bad faith “well they do it so I can do” extremist comments around this predicament. Linus is being biased, so we can be too. The US commits espionage, so Russia should be able to as well (I’m not saying Russia is but that’s a sentiment I see being tossed around). None of this is productive. This is a matter of sanctioning laws and Linus not being able to shut his mouth, both problems are old as time. This is not an excuse for us to rip off our shirts and act like cavemen.
I don’t know if you’re familiar with the problems around the Rust For Linux project, but the entire Linux project seems to have extreme interpersonal issues in every corner. The entire Linux project is extremely unhealthy, and I’m really not surprised at how this was handled, it seems par for the course at this stage.
The same is very true for the USA, as well.
The most offensive aspect of this drama is that, the door is open for the rest of the world to demand that American’s not be allowed access to the Linux kernel, also - for the same reasons that Russians are now denied it.
Listen to me very, very carefully, we are not talking about morality, we are talking about sanctioning laws. This is not a politics thread, pushcx already had to delete half the comments in this thread because people do not understand that.
It’s especially sad that your post is directly under one of my responses to a response to my post, where I point out how many people are using this as an excuse to act in bad faith and point fingers at everyone for no productive end goal. No, let’s not burn the world down because one country has some sanctioning laws against another, how about that?
Unfortunately for as long as a single nation thinks it has a moral imperative to ‘fix the world’ using its resources, this will always be a political battle.
Only the American people think they have the moral altitude to ‘do something about those inferior cultures’.
This isn’t about morality or law. This is about totalitarian-authoritarianism. Point.
The sanctioning laws against Russia are a lot more involved than the US single-handedly deciding Russia is an “inferior culture”, but I’ll stop here. I have a feeling you’re a bit too emotionally invested in this to hold a proper conversation about it.
Nonsense. America sanctions its enemies because it is a form of power and control, and that is the only reason it happens.
America has done everything bad that Russia has done, this century. But who sanctions the USA? Nobody, because only the USA has given itself that ability.
technically many countries have sanctions against the US, though it’s usually a response to the US sanctioning them first.
Can you clarify the origin of this information? It has been hard to find much of anything about the reasons for this action. The most detail I could find was that lawyers said to remove maintainers who work for companies “on the U.S. OFAC SDN lists, subject to an OFAC sanctions program, or owned/controlled by a company on the list.” Which would suggest it’s based on companies rather than territory.
Linus’s comment does seem to suggest some animus towards Russia. Bringing up “Russian aggression” is willd to me.
Russian aggression is precisely the reason for the sanctions, though. I guess he’s just saying he agrees with them (and given the history between Russia and Finland I’m not surprised.) Admittedly agreeing with sanctions is rather irrelevant from a legal PoV - you still have to implement them, either way.
Assuming that this decision was taken to comply with international sanctions, it would be appropriate for the kernel team to remove access for contributors with ties to Hamas, an organization that is both sanctioned and responsible for the terrorist attacks that the state of Israel is now responding to.
Israel itself is not under sanctions.
Sanctions are a blunt instrument and will affect innocents and non-supporters of the sanctioned state or organization too. However the idea is that they are an international response that leaders should take into account before attacking another country.
It is; for instance:
https://en.wikipedia.org/wiki/Arab_League_boycott_of_Israel
While I agree to restrict access for maintainers affiliated with terrorist organizations such as Hamas, I believe that effectively differentiating between innocent individuals, supporters, and non-supporters is extremely challenging and basically not worth it
It’s practically impossible to make an objective decision about whether verbal and physical actions serve the terrorist organization’s purpose or not
I wrote this comment before reading that only those employed by companies on the OFAC list were remove from the list. This is also an imperfect filter but it’s far from the accusations that just being Russian is enough to be removed from the list.
Those russians that do not support russian aggression have much more pressing concerns than contribution to Linux. They should not be distracted from organisation of opposition or migration elsewhere, or a bajilion of other things they should be doing. Doing nothing was somewhat defensible before the full scale invasion but not any more. Doing nothing now is complecency and a tacit support of the current government policy.
This is a basically unreasonable obligation to put on the citizens of any country, and I can confidently say without knowing you that you would not hold yourself, your family, or your friends to the same standard if the situation were reversed.
This is the right decision and it has nothing to do with “US law” as some of the lwn people seem to be talking about. Russia is a dictatorship with sophisticated state-powered cyberwarfare capabilities. Regardless of whether a Russian-based maintainer has malicious intent towards the Linux kernel, it’s beyond delusional to think that the Russian government isn’t aware of their status as kernel developers or would hesitate to force them to abuse their position if it was of strategic value to the Russian leadership. Frankly it’s a kindness to remove them from that sort of position and remove that risk to their personal safety.
It may or may not have been the right decision, but it was definitely the wrong way to go about it. At the very least there should have been an announcement and a reason provided. And thanks for their service so far. Not this cloak and dagger crap.
Indeed this was quite the inhumane way to let maintainers with hundreds of contributions go, this reply on the ML phrases it pretty well:
Edit: There is another reply now with more details on which maintainers were removed, i.e. people whose employer is subject to an OFAC sanctions program - with a link to a list of specific companies.
This would be a completely inappropriate response because it mischaracterizes the situation at hand: if the maintainers want to continue working on Linux, they only have to quit their jobs at companies producing weapons and parts used to kill Ukrainian children. It has nothing to do with the world being (in)sane, and everything to do with sanctions levied against companies complicit in mass murder.
it has everything to do with sanity or lack thereof, when such a standard is applied so unevenly
Yes, the decision is reasonable whether or not it is right, but the communication and framing is terrible. “Sorry, but we’re forced to remove you due to US law and/or executive orders. Thanks for your past contributions” would have been the better approach.
This is true of quite a few governments, including those you think are friendly, and it is a huge blind spot to believe otherwise. Dictatorship doesn’t have anything to do with it, it isn’t as though these decisions are made right at the top.
Dictator, you say? I chuckled. Linus is literally a “BDFL”.
Maybe we’ll eventually see an official BRICS fork of the Linux kernel? Pretty sure China has been working on it.
Do you have the same reaction to contributions from US-based companies that have military contracts? While the US isn’t a dictatorship, the security and foreign policy apparatuses are very distant from democratic feedback.
much more distant than russia’s in fact
It’s hard to single out Russia for this in a post-Snowden world. Not to mention that if maintainers can be forced to do something nefarious, then they can do the same thing of their own will or for their own benefit.
Did you hear this from the affected parties?
The Wikimedia Foundation has taken similar action by removing Wikipedia administrators from e.g. Iran as a protective measure (sorry, don’t have links offhand), but even if that’s the reason, the Linux actions seem to have a major lack of compassion for the people affected.
It wasn’t xenophobia. The maintainers who were removed all worked for companies on a list of companies that US organizations and/or EU organizations are prohibited from “trading” with.
The message could have (and should have) been wrapped in a kinder envelope, but the rationale for the action was beyond the control of Linus & co.
Thank you for the explanation, makes sense as is common and compatible with sanctions to other countries. I was replying to the comment above mostly.
This was what Hangton Chen has to say about this:
Hi James,
Here’s what Linus has said, and it’s more than just “sanction.”
Moreover, we have to remove any maintainers who come from the following countries or regions, as they are listed in Countries of Particular Concern and are subject to impending sanctions:
Burma, People’s Republic of China, Cuba, Eritrea, Iran, the Democratic People’s Republic of Korea, Nicaragua, Pakistan, Russia, Saudi Arabia, Tajikistan, and Turkmenistan. Algeria, Azerbaijan, the Central African Republic, Comoros, and Vietnam. For People’s Republic of China, there are about 500 entities that are on the U.S. OFAC SDN / non-SDN lists, especially HUAWEI, which is one of the most active employers from versions 5.16 through 6.1, according to statistics. This is unacceptable, and we must take immediate action to address it, with the same reason
did you just deliberately ignore the fact that huawei is covered by special exemption in the sanctions?
The same could be said of US contributors to Linux, even moreso considering the existence of National security letters. The US is also a far more powerful dictatorship than the Russian Federation, and is currently aiding at least two genocides.
The Linux Foundation should consider moving its seat to a country with more Free Software friendly legislation, like Iceland.
I’m Icelandic and regret I only have two eyebrows to raise at that.
it’s an incredibly low bar that Iceland has to clear, as this story demonstrates
Please expand on how Iceland would act to be seen as a more FLOSS friendly place, as opposed to for example the United States.
not mandating the removal of maintainers
In other words, refusing to comply with international sanctions. This is in fact an incredibly high bar to clear for Iceland. It would require the country to dissociate itself from the Nordic Council, the EEA, and NATO.
a kernel dev quoted in the Phoronix article wrote:
that made me think it was due to US (not international) sanctions and that the demand was made by a US body without international jurisdiction. what am I missing?
Without a citation of which sanction they’re referencing it’s really hard to say. I assumed this sanction regime was one shared by the US and the EU, and that Iceland would follow as a member of NATO and the EEA. If it is specific to the US, like their continued boneheaded sanctions against Cuba, than basing the Linux foundation in another country would prevent this specific instance (a number of email addresses removed from a largely ceremonial text file in an open source project) from happening again.
Note however that Icelandic law might impose other restrictions on the foundation’s work. The status of taxation as a non-profit is probably different.
even if it has to do with international sanctions, their interpretation and enforcement seems to have been particular to the US. it reeks of “national security” with all the jackbootery that comes with it.
That’s not a function - that’s a named value. It’ll be evaluated only once. To make it a function, you’d need to take an argument (usually unit, i.e.
()), like:I think this confusion is why some ML-syntax-like languages try to differentiate it with a different keyword for functions (like Rust’s
fn) or using lambda syntax (like Roc’sname = \arg -> result.)Apart from that, I agree with the author’s conclusion that OCaml is hard to get into. It’s hard to figure out how you’re supposed to solve common problems, and there’s scarce few “blessed” approaches to do common things. This is amplified by the OCaml 5 and domains situation because the earlier popular approaches for things aren’t necessarily how things should be done in the post-5 world. There’s been a few times where I look up how to do something, and decide on library/approach
foo, but while I’m working on it I face issues like what the author did withcrawl_website, and I’ll run into threads on reddit where people will be like “Obviously you shouldn’t usefoo, useppx_barinstead” and I’ll give up and resolve not to use OCaml again…Would following a guide like https://dev.realworldocaml.org/ help with the no-blessed-ways problem, in your opinion?
(I ask because I think I want to try going down the OCaml rabbit hole using that book.)
I haven’t looked into it too deeply, but even the newest edition of RW OCaml is not written for OCaml 5+, so it won’t cover domains and whatnot. Add to that the usual Async vs Lwt argument and I don’t recommend it right now.
Oh, darn. Very good to know…
nooooooooooo! I was hoping I could find a good resource to read.
Not a guide, but recently read this user experience of somebody switching to Eio which might be nice for comparison: https://tarides.com/blog/2024-09-19-eio-from-a-user-s-perspective-an-interview-with-simon-grondin/ - I don’t have any personal experience with OCaml’s async ecosystem though.
The readme is really good and worth a read https://github.com/ocaml-multicore/eio?tab=readme-ov-file
oh neato!
It’s me, author of this article. Thanks a lot for clarification. Does that mean even if env var value changes it won’t be reflected because it is executed only once?
kivikakk already covered your question but I’ll throw in a helpful tip for knowing the difference in the future: all functions in OCaml must have an
->in their type. You can use your editor’s LSP integration (e.g. in neovim I have to pressKon a symbol to see its docs) to see that the inferred type ofget_config_filenameisstring, while a function would be() -> string.Yes — you can prove this to yourself by trying something like this:
Output:
That said, how are you anticipating the environment variable changing? OCaml’s stdlib itself doesn’t expose
setenvorunsetenv— note aborted attempt here.edit: oh, never mind me!
Unix.putenvis mentioned right there, which of course works on macOS. So you can try this:Which outputs the same as above. Now note the change here:
And the output:
Keep in mind that OCaml 5 is very very young and that 5.0, 5.1 and even 5.2 are not considered ready yet. I agree that OCaml often lacks a one-true way but OCaml 5 is not a good example of that.
I agree that it is young, but at this point it objectively is the future of OCaml, so for someone just getting into it it doesn’t make sense to not start with it. Doubly so because it affects IO, which is what most basic and common programs do! The author of this article started out writing a scraper, my first attempt was to write a discord bot, and many people kick the tires with a web framework like Dream. So the problem of pre-4 approaches not being the future is more of a problem: as a newcomer, is what I’m learning going to become outdated soon? Especially when it’s the core of what I’m doing?
I don’t want to be overly negative abotu OCaml because I really like the language otherwise, so I’ll point out that there are people like @leostera on twitter who are working really hard on this problem and have made great progress. For people who want to get started with OCaml, I think https://github.com/leostera/minttea is natively OCaml 5 and really fun for making TUIs.
I believe it does make sense to start with Lwt rather than with Eio now. There’s simply more learning resources and more Lwt-compatible libraries. Lwt won’t become obsolete in the near future and the knowledge of OCaml+Lwt will transfer good to OCaml+Eio — same language after all.
I have a very similar experience, every time I want to try some networking related I am torn between Eio and Lwt.
Looks like a neat concept. I tried to clone the repo and run this myself, but it looks like it has a dependency on a local crate, so it wouldn’t build.
Ah sorry, I factored out the 9p implementation to its own crate and until the project was shared here I very much doubt anyone other than me had tried to compile it. I’ve removed the path dependency now so you should be alright to try and recompile, but I should put together a getting started guide on how to set up the scripts and so on. I mad a quick video to demo the virtual file system behaviour for a friend a while back but things have changed a bit since I recorded it so I’ll record a new one and add the link to the repo so people can see how it all works.
it’s this crate.
https://github.com/sminez/ninep