1. 4

    A clear message saying “Unless you are willing to train for many years to become a software engineer yourself, this tool is not for you.”

    Is there a single well-established general purpose programming language that we wouldn’t, in good conscience, have to slap that warning sticker on? I mean a relatively small amount of due diligence shouled have revealed that C++ isn’t, by far, the obvious first choice here — Python, Julia, and Go seem far more sensible — but I’d argue even the most “novice friendly” first “real” programming language takes 3-5 years of solid effort to master to the point of being able to reliably write sensible, well reasoned, well structured, and well tested code. It’s just not a smaller discipline then that, but the author seems to somehow think “we” can possibly reduce the minimum energy of activation for one niche consumer group with highly specialized needs and no budget.

    1. 5

      Python, Julia, and Go seem far more sensible

      The model evolved over 13 years - the initial coding predates both Go and Julia’s first releases by 5 years.

      1. 2

        Ok, so Go and Julia weren’t options, then Python + NumPy + SciPy certainly were in that time frame.

        1. 4

          Numpy really exist since late 2006 (Numeric and numarray existed before the merge in Numpy). Scipy started in 2001 and Numpy begin a part of it in late 2006. Honestly, the Python scientific environment changed a hell lot during the last ten years.

          And also, you have to reflect on which infrastructure you had available at that time. C++ was maybe not the sanest choice but back in those times if you needed something that could run fast and handle that amount of RAM/processing power you didn’t have a lot of choices.

          1. 1

            I went with a back of the hand calculation based on the comment made; 2020-13 years seemingly puts you within the era of both SciPy and NumPy. Regardless, the point remains: if C++ was the right choice at the time then complaining about its footguns – nevermind still using them – 13 years later is nonsensical; learn the tool, then use the tool, not the other way round.

            1. 3

              Sometimes, the mentality about “If it ain’t broke, don’t fix it” apply a lot to code produced during research and the reuse of it. As said in another reply, it also boils down to resource/time-management/infrastructure. Big rewrite are time-consuming, don’t provide the possibility to publish about it so if you can use the same code lying around for a while why not. It ain’t pretty but I have the feeling that most of the time, that’s it.

              Sometimes you get code out for a paper and that’s it. It will lay around until someone will need it to build on top of it. R libraries are really a good example of that. Looking at the number of them that dies at the same moment the PhD student leaves or the researcher works on something else.

              The tooling is way better now for scientific programming but legacy-code still and will be everywhere. Moreover, as already said that code don’t rely on external lib, stand the effort of time and can scale correctly with OpenMP. You can not said that for a lot of code I have seen around in recent years of academia where libraries broke program a lot of time.

              Most of the time, you really have the time to learn the subset of the language you need to get the thing done. There is always that funny question in my mind : Is it easier for a scientist in X field to learn to program or for a software dev to learn X field? Honestly I don’t know, it depends. But most of the time, it is not yet common to have the two skillsets at the same level.

              1. 2

                Is it easier for a scientist in X field to learn to program or for a software dev to learn X field? Honestly I don’t know, it depends. But most of the time, it is not yet common to have the two skillsets at the same level.

                Should it be? I’d argue no.

                From experience I’d say it takes roughly the same amount of time to reach an equivalent breadth and depth of competency in any complex field, and “programming” isn’t a single discipline any more than “science” is, so you can’t expect the two skillsts to coexist to the same degree unless the individual has had twice the time to dedicate to learning.

                Edit: BTW, I completely agree on the “if it ain’t broke, don’t fix it” point, and I’m not saying anyone should have rewritten this particular bit of spaghetti: if it’s producing meaningful models then it could have been programming in brainfuck for all I care. BUT, if someone put 13 years of effort out in public view for the first time and it was written in brainfuck, I’d justifiably point out to them that maybe adopting more of an industry-best-practices language and development approach would make their lives both a lot easier and more fruitful.

      2. 4

        As the brother comment already points out, the development of the model predates a few year Go and Julia and even at that time the state of Python or R for scientific computation was not there. Porting those kind of programs to another programming language for whatever reason is a huge amount of work that most of the time you don’t have in academia and you are stuck with whatever the first researcher/Phd student has already put a massive amount of work on his own and validate their results.

        I had to port an kind of hand-tuned rule-engine from Matlab to Python done by a researcher gone from the lab and it was tedious at least (and you can not fast-check what you have done because it was running on satellite image of the world at 100m resolution split in multiple strata with specific rules for each. You had to look at the 22 files, diff them to find the common part extract those, and so on to go from dozen of thousands lines of Matlab to a few hundreds of Python (and we port only half of the engine because we only needed that part. If we ever need the other part, someone else will have to do the port and merge with the existing python program).

        I am no C++ expert (I can barely read it by habit of looking at source code of interest) but what I mainly see in the epidemic simulation code on github is that they almost don’t use any external library. I can’t provide any opinion about good or bad practises but I can read it. If you want to something close in Python/R/Julia/Go, you’ll have to use some to a lot of just to reach the speed and volume needed and it will be with C++/C/Fortran behind it. Honestly the code is more than a lot of what you will get usually in academia. More often than not, you just get a bunch of papers some complementary files linking to another papers and sometimes some old code lying around.

        Meanwhile, C++ is everywhere in scientific program, either in front of you or behind. I mean R an C++ are so intertwined together is crazy if you look at it : RCpp or stuff like Template Model Builder. By example, in a field I know a bit more like Remote Sensing, you will see a heavy use of GDAL, OTB, GEOS, PROJ to name a few and all are written is C++ even if they provide API to various extent (mostly thanks to SWING). If you want to do high-level and prototype stuff, Python/Julia/R/YouNameIt works only because of those low-level libraries (and a miss a lot of them between : GLS, BLAS, LAPACK, Eigen, etc. being a mix-bag of C++/C/Fortran). Honestly, I am asking myself a lot if I will skip what I want to learn (Rust/Go/Clojure/Whatever) and just focus on learning C++ to add it to my skillset. I am not a software dev, just a researcher doing mostly programming. I self-learned progrmming and it got me jobs in academia (was not a good student :)).

        1. 1

          Ok, well I am a software dev, and unless what you’re developing IS low level mathematics and numerical computing libraries — as opposed to developing applications and models that use those libraries — then C++ is very obviously the wrong tool for you, especially if you’re going to write terrible C++.

          Yes, of course, numerical and scientific computing leverages a lot of existing FORTRAN and C (and some C++ that tends to primarily be C)… that’s what I leverage all the time in my work in visual effects; but once you’ve got those underlying tools you can wrap them up in a well-formed FFI and actually using them becomes infinitely easier.

          So, my guess, is that you can use everyone one of those libraries you’ve mentioned in Python / Julia at roughly the same speed you’ll get out of them in C++, but you’ll be doing that through an interface that’s designed to relieve you of all the incredibly numerous and well known footguns of C++.

          The whole thesis of the open letter is that software developers should give scientists better tools without lots of footguns. We have! They’re Python + NumPy + SciPy, as a more mature option, with Julia being less mature but more especially designed for science. On the purely mathematical end of the spectrum there’s Idris and Coq, derived from Haskell… language developers have already tried to give you the tools you need. Apparently you’re either unaware of that as a community or you’re refusing to use them, then complaining when people with actual software industry experience look at you like you’ve pooped the bed.

          1. 2

            ———– EDIT –––––––

            I have found your blog by looking out and I think that the post about Hugo is on point with partly how to find tools (and libraries and programming languages). You have two situations : inherit already done work in X or Y and deal with it (so you have to learn on the spot the subset that you need to make it work) or you can begin from scratch. You have your list of the Minimal Viable Tool and look out first to co-workers and to what is used in the field. Based on your constraint, you end with a choice. Python + Numpy + Scipy is not always what you want or need (in fact part of the time). You need scale up, you up to learn how to use : Dask, Xarray, Numba, etc. based on what you think you will need. You need to stat tools, you got stuck with R (Yes, you can call R lib from Python but it clearly will not be your first reflex to look for that). Need to go faster, bigger, stronger? Hello C++. I don’t know a thing about the Java Ecosystem but I assume it will imply the same digging till a choice is made.

            –––––––– END of EDIT —————–

            The whole thesis of the open letter is that software developers should give scientists better tools without lots of footguns. We have! They’re Python + NumPy + SciPy, as a more mature option, with Julia being less mature but more especially designed for science. On the purely mathematical end of the spectrum there’s Idris and Coq, derived from Haskell… language developers have already tried to give you the tools you need. Apparently you’re either unaware of that as a community or you’re refusing to use them, then complaining when people with actual software industry experience look at you like you’ve pooped the bed.

            First of all, looking down at scientists as a unified community as a community is flawed. It depends so much on the field and the exposure of the field to software and the need of it. Python + Numpy + Scipy are just part of the equation and you have to learn those skills somewhere to begin with. I had know a few fantastic students and researchers not able to properly use a computer beyond basic usage. They are brilliant but never had to learn how to do it before being forced to do so for a project. My opinion is mainly that to see better software practise in scientific research is to provide a better education and saner tools that hide the footgun and stil be able to scale to larger problems.

            I think that the whole thesis stand of the article stand when you see new tools coming like stan and other declarative approach to modelling. Most of time, scientist don’t know how to program at the beginning of their career and learned what is done in the lab they are working. I personally think that most of us must learn stuff as database management and querying because we can go a long way with Sqlite and Postgres for example. Some field are locked by commercial products too like in public health/epid and the use of SAS environment. Heck, in R, I am found of data.table because I know SQL and this mindset let me use it and share with people with weaker R skills but they know Excell (or any table calculator).

            Honestly I understand your point of view and partially agree to it but it all boils down to resource, time-management and access to infrastructure. I would love to see more education around sane options and easy way to handle scaling a prototype but the more you try to go at a higher resolution of data, the more you begin to hit a wall on performance, knowledge or resources.

            PS : I am clearly biased by my work experience in specific fields. All I can say is that I can understand why one ends up to write C++ code because of constraints and labs culture. Some fields are in better shapes than other, look at remote sensing for agriculture/environment or bioinformatics. Epidemiology is hard to do at large scale (even country-scale) because of not only the statistics part tend to be solid piece to manage but also the quality of the data and voodoo magic you have to do to achieve sane datasets is most of the times not easy. When you see the amount of works needed by the IHME and the amount to effort needed to produce the global map of malaria is honestly crazy and results can be looked at Malaria Atlas Project. Another anecdotal story : The Global Forest Watch project was initially written in Clojure with heavy use of Spark. Because of the lack of knowledge by the fellow scientific community in the field, it had to be ported to Javascript to be maintained by the community. It was heart-breaking for me because I am well aware of the existence of various tools and programming languages (strong and weakness). I really hope that we can find a (open source) set of tools and good practises as we had found in lab work when it comes to programming models/simulation/computation/data analysis but honestly I don’t see that happen at all in a near-future.

            1. 2

              I’m not looking down at scientists, at all, I want to empower scientists. Moreover, I want scientists (at least those without concomitant interest in computing) to spend their time doing actual science, and when they need to do things that require any substantial expertise in programming then find (by whatever means) the way to tap into that expertise, because we already exist and are HAPPY to help. So bring the two communities together, rather than live apart.

              The open letter is specifically complaining about the lack of good warning signs on the tools that exist and a lack of science-specific tools coming out of the software engineering community. Well, the whole point of my original comment is that becoming a competent software developer (in any language) is a significant investment in both time and energy, it’s a deep subject and developing real competency in it is at least the same sort of commitment as is becoming a specialist in any given scientific subject. To truly understand all the footguns (and therefore be able to give that sort of “here be dragons” warning sticker on a language) requires on the order of 10-15 years of solid and polyglot professional experience.

              So it’s heart-breaking to me to see that those fields are having so much difficulty with computing, but the tools we (the software people) know you (the scientists) need are out there … we, no doubt, are ignorant of a great many needs you have but have not communicated. Please communicate them … but it’s particularly terrifying (and elucidating) to find that your community (and especially those with tutorial-hell-only skills) has been using the wrong language(s) for what are (very likely) the wrong reason(s).

              How do we embed more software engineers and programmers in labs? Or get your side of these questions the education / help they really need? Cause there’s a whole lot of resources available and interested and simply unaware of your real needs, and frankly terrified that epidemiologists are tripping over things like global variables.

              1. 2

                […] How do we embed more software engineers and programmers in labs? Or get your side of these questions the education / help they really need? Cause there’s a whole lot of resources available and interested and simply unaware of your real needs, and frankly terrified that epidemiologists are tripping over things like global variables.

                A few ideas accumulated those last three years.

                On how to get more SE and programmers in labs and have a better code quality in labs:

                • Create and maintain a proper RSE track or facility that can be taking in account while in competition with other universities/teams on big grand proposals. This should be see as an asset not as cost liability. See this comment. Money is a big struggle in this area IMHO.
                • Finding a way to attract SE that is not based on salary because academia can’t and will not compete with industry in this area.
                • Value a culture of writing programs that can be combined together and proper format specification on input and output instead of reinventing the weel or tweaking your data to fit the program.
                • Create and value IT infrastructure and tech working on it at the university level or higher. Getting AWS credit or some obscure-cloud credit it is not a full solution and may not provide a clear to reproduce results on big scale study.
                • Push for Open Science and campaigns as “Public Money = Public Code” (not specially FSF-only campaigns but you get the idea).
                • Push and force teams to learn with Git or any DVCS and with tools like Singularity (kinda docker for science).
                • Document your analysise and use tools that can make it understandable at multi-level. I really like the idea behind the Common Workflow Language even not a fan of using a YAML syntax.
                • Find a way to give budget and resources to maintain and update research code and libraries not only on relying on volunteers and their free-time.
                • “Automate the Boring Stuff” approach because we will never have uniform data format ever.

                As your see, a lot of think are basic stuff on SE-side but sometimes I have the feeling that we don’t push in lab that your code will outlive you. The turnover is so fast and people do what they need to be done and go away to find another fixed-term contracts (for post-doc at least).

                On how to enhance study programs in sciences or any others fields relying more and more on software :

                • Stop teaching tools that are not on par with the de facto tools used in research. I have seen to much of students learning Matlab when it is not used in research in their specific field for the last ten years. It give a wrong sense about what programming can do and lock them in specific tools that can not be generalized. Learn Python. It’s free and use the money saved on the Matlab contract to do something meaningful for your students. You will have the time to learn proprietary tools in research when you will be sure than they are needed.
                • Teaching programming as an “Automate the Boring Stuff”-mind to show how it can value your time and focus on what really matters.
                • Teach a database introduction course so students can really feel what is it and don’t only view it like a foreign construction for high-scale website. They will stop being stuck in only thinking about files and format and begin to abstract their data.
                • Students don’t have to be formed as full programmer but have a basic understanding to able to communicate in a meaningful way about it. You need how to form a question properly before finding any answer.
                1. 3

                  Thanks for taking the time to write all that out. Funny how much of that looks pretty much identical to a whole series of culture-change documents and discussions we had in VFX over the last decade or so as we slowly and painfully transitioned towards smaller teams and more automation. Public money = public code, indeed … I’d love us to get more into the idea of public compute as well. I’ve personally reached the point in my career where salary stopped being an attraction and making a meaningful contribution has taken over as my driver, and I’d love to move into the sciences instead of continuing to help enable Michael Bay’s destruction of human culture. If I could see, on a day to day basis, more of what it is scientists have to deal with and how showing people why sqlite can be their friend would be huge, it’d be great. Personally I think there’s something to be said for simply asking us SE people to come look over your shoulders and take notes. Fundamentally that’s what I do to empower visual effects artists; I look for inefficiencies and redundancies and then I optimize them away. At the end of your life, though, there’s only so much sense of satisfaction to looking back and knowing you’ve primarily succeeded in helping bring terrible movies to market.

            2. 0

              I have flagged this comment as ‘unkind’, It is more combatative than helpful.

              1. 1

                Fair enough, though I have flagged that as ‘incorrect’. I’m very much trying to help the individual I’m talking with.

                1. 1

                  I do think you’re correct, just being a bit of a jerk communicating it.

                  Specifically this sentence:

                  Apparently you’re either unaware of that as a community or you’re refusing to use them, then complaining when people with actual software industry experience look at you like you’ve pooped the bed.

                  1. 3

                    I agree, I’m being a bit of a jerk. I don’t think, however, that the colorful language is either unwarranted, nor the point being made unhelpful.

                    Think of it this way: if someone who was a software developer spent 13 years writing a paper on, I dunno, physics, and then plopped it on a preprint server and all of the methodology was utterly wrong, impossible to follow, and clearly against every known best practice in the field, wouldn’t actual physicists understandably think the software developer had made a mess in his/her proverbial sleeping area?

        1. 2

          Back in 2017, I wondered if Twitter’s alt text could be (ab)used to store message metadata like a PGP signature. Sadly, the limit was 420 characters per image.

          For the reference: A detached signify/minisign signature even with an untrusted comment is only “untrusted comment: verify with [public key file name]\n[100 char base 64]”.

          1. 1

            I was testing minisign for this earlier and I got ~290 character output. signify did give me 140 character output though.

          1. 1

            Thanks for this. I was looking at a huge manual change over hundreds of files but leveraging this might mean I can automagic most of it away.

            1. 1

              It’s more “Why you shouldn’t use artificial (auto-incrementing) primary keys” and, yeah, that’s true. But UUIDs are just another artificial primary key (albeit with fewer problems than autoinc-ints) and not necessarily the answer if you already have a primary key inherent in your data.

              1. 13

                I disagree with this post.

                If messages can be sent in plaintext, they will be sent in plaintext.

                That’s not a bad thing. If the person you are communicating with doesn’t care about encrypting the conversation then they don’t care about the confidentiality of the conversation and encrypting the messages is a waste of everyone’s time, a waste of computing resources and false security anyway. You cannot have secure communication between parties that do not care about security, in my opinion.

                Metadata is as important as content, and email leaks it.

                Metadata is not important data. That I sent a message to someone at a particular time is known to someone whether it’s a peer-to-peer service in which case it’s all the links between us, or a centralised service in which case it’s the service provider. Either way, everyone is aware I sent a message, and in both cases someone knows who I sent a message to. You should not trust anyone with genuinely important information that genuinely needs to be encrypted. If it’s a centralised service, then the service provider knows, and you should assume everyone knows.

                A centralised messaging service might have end-to-end encrypted messages but it cannot have end-to-end encrypted metadata for the obvious reason that it can tell where it has got messages from and it can tell where the messages it’s relaying are meant to go.

                If you are sending anything over the public internet, who sent the message, when it was sent, how big it is, who it is to, etc. is public information. The metadata of your Signal messages is public information.

                Every archived message will eventually leak.

                If I send you a message, and you decrypt it, you are responsible for its confidentiality. I cannot in any technological way prevent you from leaking the message. You can take a screenshot of the programme showing you the message, you can take a photo of your phone or computer screen, you can print it out, you can read it aloud, you can copy it by hand onto some paper. Part of sending someone a message is acknowledging that, regardless of the social norms around confidentiality, there’s no technological means of forcing someone to keep a secret. There are no Unbreakable Vows in the real world.

                This really goes back to the first point: if the person you are communicating with doesn’t care about security, you are not communicating securely no matter how many technological safeguards you try to put in place. At some point, they will fuck up, because they do not care. Auto-deleting messages just give a false sense of security. They’re like password expiry dates: all they do is encourage people to write things down. I’d rather my message was archived on their encrypted hard drive than written down on a piece of paper ‘because it will disappear otherwise’.

                etc. etc. It just goes on, repeating the same false and misleading statements about how encryption and trust and communication actually work. Ultimately, if you cannot trust the person you are communicating with and you cannot trust that they care about security, then your communications with them are not secure and the only form of ‘security’ you should bother with is the basic TLS level of just ensuring that dragnet surveillance won’t be able to passively eavesdrop on your conversations. But any kind of targeted surveillance will easily compromise your conversation, so don’t give yourself a false sense of security trying to harden yourself against something that you inherently cannot prevent.

                1. 15

                  First of all, you completely ignored the forward secrecy and key rotation part. That’s kind of the killer, here – in order to support these things, you have to actually negotiate a key, which pretty much wrecks the whole “regular email with an encrypted payload” thing. The rest of this discussion is almost completely irrelevant compared to the lack of forward secrecy.

                  But anyway…

                  There are actual solutions for the metadata problem, particularly Mix networks like the recently-brought-to-my-attention Loopix system and the older MixMinion. I would rather use Loopix than Signal, all else being equal, because metadata is really useful. Tell me who you’re with, and I can pretty much figure out who you are even if I can’t actually read your email. And that’s before we start asking uncomfortable questions about the Subject line.

                  I’d rather use a mixnet than Signal, but I’d still rather use Signal than PGP, for mostly the same reason that the author gave, and the reason that you didn’t address. The UX for the widely-available PGP email systems is really, really bad because they fail open. A well-designed security system should fail by erroring out, not by falling back to plaintext. If someone makes a mistake while using the encryption system, it is not proof that they don’t care. It is, at worst, proof of ignorance, and everyone is ignorant when they start out. It is easy to accidentally send an unencrypted email in most encryption-enabled clients. It is almost impossible to accidentally use email instead of Signal, specifically because the applications are completely separate.

                  This is the same reason why I would run a Tor hidden service, even if I myself don’t care about my own anonymity, if I expected a lot of anonymity-sensitive users. If someone tries to use an onion site without actually using Tor, the site will not load, and they will immediately notice and correct the mistake. Even if your site offers both an onion address alongside a clearnet address, it at least acts as double-confirmation; someone who wants to use Tor would have to simultaneously use a clearnet browser and a clearnet address in order to accidentally leak their identity to me.

                  I agree with you that auto-deleting messages are dumb, but seriously, the lack of forward secrecy ought to be enough. The part about making it harder to accidentally send a plaintext message is just a UX improvement that you take at the same time that you do the forward secrecy fix.

                  1. 4

                    First of all, you completely ignored the forward secrecy and key rotation part. That’s kind of the killer, here – in order to support these things, you have to actually negotiate a key, which pretty much wrecks the whole “regular email with an encrypted payload” thing.

                    I’m not going to nitpick every single line of the post.

                    The rest of this discussion is almost completely irrelevant compared to the lack of forward secrecy.

                    I honestly don’t think that forward secrecy is that important.

                    There are actual solutions for the metadata problem, particularly Mix networks like the recently-brought-to-my-attention Loopix system and the older MixMinion. I would rather use Loopix than Signal, all else being equal, because metadata is really useful. Tell me who you’re with, and I can pretty much figure out who you are even if I can’t actually read your email.

                    I think this is really just security through obscurity. It’s not a bad thing, of course. But it seems to me that it really just protects metadata from dragnet surveillance in the same way that SMTPS/IMAPS protects data from dragnet surveillance. It doesn’t really prevent any targeted attacks.

                    I’d rather use a mixnet than Signal, but I’d still rather use Signal than PGP, for mostly the same reason that the author gave, and the reason that you didn’t address. The UX for the widely-available PGP email systems is really, really bad because they fail open. A well-designed security system should fail by erroring out, not by falling back to plaintext.

                    I’ve never had any issues with the UI for PGP email. I see the same complaints about PGP all the time and frankly people seem to want a magical solution to a problem that doesn’t have any solution: public key encryption is a fairly complicated thing and users need to understand it to use it. You can’t get around that.

                    If someone makes a mistake while using the encryption system, it is not proof that they don’t care. It is, at worst, proof of ignorance, and everyone is ignorant when they start out. It is easy to accidentally send an unencrypted email in most encryption-enabled clients. It is almost impossible to accidentally use email instead of Signal, specifically because the applications are completely separate.

                    I want it to be easy to send an unencrypted email, because I want to send lots of unencrypted emails. I don’t want all my emails to be encrypted. Most of them don’t need to be encrypted. Emails I’m sending to public mailing lists don’t need to be and shouldn’t be encrypted, as that just provides a false sense of security.

                    I don’t want the applications to be completely separate. I think instant messaging (which is what Signal is and is for) should be separate from email, and for instant messaging things like always-on encryption probably does make sense. But email isn’t just for messaging privately to people you know, it’s used for loads of things where encryption isn’t appropriate, like mailing lists.

                    I know some people think that mailing lists should be replaced with online forums or reddit or something, but I personally like mailing lists a lot more than reddit or even than old phpBB-style forums.

                    This is the same reason why I would run a Tor hidden service, even if I myself don’t care about my own anonymity, if I expected a lot of anonymity-sensitive users. If someone tries to use an onion site without actually using Tor, the site will not load, and they will immediately notice and correct the mistake. Even if your site offers both an onion address alongside a clearnet address, it at least acts as double-confirmation; someone who wants to use Tor would have to simultaneously use a clearnet browser and a clearnet address in order to accidentally leak their identity to me.

                    I agree with you that auto-deleting messages are dumb, but seriously, the lack of forward secrecy ought to be enough. The part about making it harder to accidentally send a plaintext message is just a UX improvement that you take at the same time that you do the forward secrecy fix.

                    To me this is just optimising for stupid. If someone opens your website in Firefox instead of the Tor browser, they obviously don’t really care about their anonymity that much. If they really were worried they were being tracked by a government entity or something they’d be careful, constantly.

                    1. 1
                    2. 5

                      Wrong / misleading in more than one way:

                      If messages can be sent in plaintext, they will be sent in plaintext.

                      That’s not a bad thing. If the person you are communicating with doesn’t care about encrypting the conversation then they don’t care about the confidentiality of the conversation and encrypting the messages is a waste of everyone’s time, a waste of computing resources and false security anyway. You cannot have secure communication between parties that do not care about security, in my opinion.

                      It is possible to use unsafe mechanical equipment in a safe way. That doesn’t mean adding safety features is a bad idea.

                      Yep, people can (and do) still jam the dead man switch, remove the covers etc but on average less people get maimed and killed now than before.

                      Metadata is as important as content, and email leaks it.

                      Metadata is not important data.

                      If you can prove I sent a message to someone I was supposed to not tell I’m in trouble even if you cannot tell the exact contents of the message.

                      That I sent a message to someone at a particular time is known to someone whether it’s a peer-to-peer service in which case it’s all the links between us, or a centralised service in which case it’s the service provider. Either way, everyone is aware I sent a message, and in both cases someone knows who I sent a message to.

                      Emphasis mine. This does not necessarily follow. It depends on your threat model.

                      You should not trust anyone with genuinely important information that genuinely needs to be encrypted. If it’s a centralised service, then the service provider knows, and you should assume everyone knows.

                      Again: Threat model.

                      If you are sending anything over the public internet, who sent the message, when it was sent, how big it is, who it is to, etc. is public information.

                      I had a hard time figuring out what you meant here, one interpretation that makes it correct is if by “over the public internet” you mean if you send it by mail. You can do a lot to make sure this isn’t public information.

                      The metadata of your Signal messages is public information.

                      No. I’m not the biggest Signal fan (not open, Signal fans are seriously annoying etc), but let’s stick to the facts:

                      Signal messages including metadata are encrypted in transit and discarded afterwards.

                      Just like my 20 year old email hotmail messages aren’t public information, neither is the metadata from my Signal messages.

                      1. 1

                        metadata Who talks to who is of a high interest among surveillance agencies, perhaps the central nerve.

                      2. 2

                        Metadata is not important data. That I sent a message to someone at a particular time is known to someone whether it’s a peer-to-peer service in which case it’s all the links between us, or a centralised service in which case it’s the service provider.

                        The amount of stuff that can be worked out just from metadata might surprise you. And the fact that modern secure messaging systems are working to make it harder for third parties to snoop on even the graph of who talks to whom should be a hint that maybe it is an important part of security.

                        1. 0

                          There’s no reasonable expectation of privacy with metadata. It doesn’t matter what data can be worked out AT ALL. That’s not what’s in question.

                          If I send you a letter, that I sent you a letter is not private. The postman knows, the government is allowed to know, it might as well be public. What I sent you is private. Nobody is allowed to look in. We should be turning those legal privacies into technical, mathematical privacy. We shouldn’t be inventing new types of privacy and just assuming without any actually debate that privacy maximalism is philosophically correct.

                          1. 3

                            If I send you a letter, that I sent you a letter is not private.

                            Only if you put your name on the outside of the envelope, surely? Otherwise, yes, it’s completely private who and where the letter originated from because …

                            Nobody is allowed to look in.

                      1. 3

                        Reminds me of the original incarnation of UNaXcess (~1992, one machine, telnet in) except with person-stored posts instead of subject-stored posts. Truly we can never leave the past behind.

                        1. 2

                          It’s basically pg’s ludicrous “blub language” elitism with Rust substituting for LISP.

                          1. 2

                            Why does the author dislike ESR? Politics?

                            1. 3

                              That’s usually the reason.

                              1. 1

                                Where is the dislike of ESR expressed? There’s no hit on the page for “ESR” or “Raymond”.

                                1. 3

                                  “mediocre coders are so fond of Go” links to an ESR blog post about not liking Rust.

                                  1. 4

                                    Thanks! I missed that.

                                    I find it amusing that the situation ESR describes in his post is the same as the one described by the post’s author - they tried to write something in Rust, tried it in Go, and it worked great.

                                    ESR: “Go is preferable to Rust”

                                    Elf: “Go is too damn easy compared to Rust”

                                    As to why people dislike ESR… you’ll have to ask the author his reasons. Personally I find him a self-publicizing blowhard. He’s a decent polemicist and author, and I think he’s done a goop job popularizing Open Source (as opposed to Free Software), but he’s probably not as good a programmer as he lets on.

                              1. 3

                                Great paper, but I fear the day this is implemented and app developers start trying to cheat the lease systems [most likely by wasting more (types of) resources than before to simulate “useful” activity].

                                1. 2

                                  Assuming that gets past app review, you’d surely then run into “this app uses a lot of battery” type reports (which may also be part of the app review, these days.)

                                1. 4

                                  I am getting really bad keystroke latency on testing.pleroma.lol.

                                  Could you please use a protocol that doesn’t require the server to echo every individual keystroke? It seems to kind of defeat the purpose of having a “lightweight” frontend when you’re placing a bunch of critical interaction paths on the network like that. Maybe an HTML interface that works in Lynx (the Pleroma one doesn’t, and neither does the Mastodon one)? Or maybe NNTP?

                                  1. 6

                                    This is on purpose to recreate the feeling of using a BBS over a 300 baud connection.

                                    1. 4

                                      Or mosh? I haven’t looked at it, but you might not even need to change the code.

                                      1. 1

                                        Yeah mosh is transparent (outside of needing it to be on the server as well).

                                        1. 1

                                          I’m not so sure. The mosh client has to log you in via ssh and invoke the mosh server, then the mosh server daemonizes itself, the SSH connection is closed, and the remaining protocol runs entirely separate from SSH. The Pleroma BBS cannot allow you to run arbitrary commands on the server, so I’m worried that allowing the standard Mosh implementation to be used would open up vulnerabilities (the alternative would be to implement SSP in Erlang, but that’s far from “transparent”).

                                        2. 3

                                          If you want an HTML interface to Pleroma that works in Lynx, give brutaldon a try. I originally wrote it for Mastodon, but I’ve tested it against Pleroma.

                                          1. 1

                                            rlwrap ssh testing.pleroma.lol <- this will run readline locally so you can edit your input on your machine and only send it off to the server when you’ve finished the entire line.

                                            1. 1

                                              Be an interesting exercise to build a frontend that worked in Lynx given the OAuth requirements. You’d have to do the auth dance in a backend which somewhat ruins the whole point…

                                              1. 1

                                                Our OAuth is handled by the backend

                                                1. 1

                                                  you’ll still need to send the token with every quest, though, i don’t think lynx could do that. We could put it in a cookie, but that would kind of defeat the purpose.

                                            1. 65

                                              In the Mastodon universe, technically-minded users are encouraged to run their own node. Sounds good. To install a Mastodon node, I am instructed to install recent versions of

                                              • Ruby
                                              • Node.JS
                                              • Redis
                                              • PostgreSQL
                                              • nginx

                                              This does not seem like a reasonable set of dependencies to me. In particular, using two interpreted languages, two databases, and a separate web server presumably acting as a frontend, all seems like overkill. I look forward to when the Mastodon devs are able to tame this complexity, and reduce the codebase to a something like single (ideally non-interpreted) language and a single database. Or, even better, a single binary that manages its own data on disk, using e.g. embedded SQLite. Until then, I’ll pass.

                                              1. 22

                                                Totally agree. I heard Pleroma has less dependencies though it looks like it depends a bit on which OS you’re running.

                                                1. 11

                                                  Compared to Mastodon, Pleroma is a piece of cake to install; I followed their tutorial and had an instance set up and running in about twenty minutes on a fresh server.

                                                  From memory all I needed install was Nginx, Elixir and Postgres, two of which were already set up and configured for other projects.

                                                  My server is a quad core ARMv7 with 2GB RAM and averages maybe 0.5 load when I hit heavy usage… it does transit a lot of traffic though, since the 1st January my server has pushed out 530GB of traffic.

                                                  1. 2

                                                    doesnt Elixir require Erlang to run?

                                                    1. 2

                                                      It does. Some linux distributions will require adding the Erlang repo before installing elixir but most seem to have it already included: https://elixir-lang.org/install.html#unix-and-unix-like meaning its a simple one line command to install e.g pkg install elixir

                                                  2. 7

                                                    I’m not a huge social person, but I had only heard of Pleroma without investigating it. After looking a bit more, I don’t really understand why someone would choose Mastodon over Pleroma. They do basically the same thing, but Pleroma takes less resources. Anyone who chose Mastodon over Pleroma have a reason why?

                                                    1. 6

                                                      Mastodon has more features right now. That’s about it.

                                                      1. 4

                                                        Pleroma didn’t have releases for a looong time. They finally started down that route. They also don’t have official Docker containers and config changes require recompiling (just due to the way they have Elixir and builds setup). It was a pain to write my Docker container for it.

                                                        Pleroma also lacks moderation tools (you need to add blocked domains to the config), it doesn’t allow remote follow/interactions (if you see a status elsewhere on Mastodon, you can click remote-reply, it will ask your server name, redirect you to your server and then you can reply to someone you don’t follow) and a couple of other features.

                                                        Misskey is another alternative that looks promising.

                                                        1. 2

                                                          it doesn’t allow remote follow/interactions (if you see a status elsewhere on Mastodon, you can click remote-reply, it will ask your server name, redirect you to your server and then you can reply to someone you don’t follow)

                                                          I think that might just be the Pleroma FA - if I’m using the Mastodon FE, I get the same interaction on my Pleroma instance replying to someone on a different instance as when I’m using octodon.social (unless I’m radically misunderstanding your sentence)

                                                          1. 1

                                                            Thanks, this is a really great response. I actually took a quick look at their docs and saw they didn’t have any FreeBSD guide set up, so I stopped looking. I use Vultr’s $2.50 FreeBSD vps and I didn’t feel like fiddling with anything that particular night. I wish they did have an official docker container for it.

                                                          2. 3

                                                            Pleroma has a bunch of fiddly issues - it doesn’t do streaming properly (bitlbee-mastodon won’t work), the UI doesn’t have any “compose DM” functionality that I can find, I had huge problems with a long password, etc. But they’re mostly minor annoyances than show stoppers for now.

                                                          3. 7

                                                            It doesn’t depend - they’ve just gone further to define what to do for each OS!

                                                            1. 4

                                                              I guess it’s mainly the ImageMagick dependency for OpenBSD that got me thinking otherwise.

                                                              OpenBSD

                                                              • elixir
                                                              • gmake
                                                              • ImageMagick
                                                              • git
                                                              • postgresql-server
                                                              • postgresql-contrib

                                                              Debian Based Distributions

                                                              • postgresql
                                                              • postgresql-contrib
                                                              • elixir
                                                              • erlang-dev
                                                              • erlang-tools
                                                              • erlang-parsetools
                                                              • erlang-xmerl
                                                              • git
                                                              • build-essential
                                                              1. 3

                                                                imagemagick is purely optional. The only hard dependencies are postgresql and elixir (and some reverse proxy like nginx)

                                                                1. 4

                                                                  imagemagick is strongly recommended though so you can enable the Mogrify filter on uploads and actually strip exif data

                                                            2. 3

                                                              Specifically, quoting from their readme:

                                                              Pleroma is written in Elixir, high-performance and can run on small devices like a Raspberry Pi.

                                                              As to the DB, they seem to use Postgres.

                                                              The author of the app posted his list of differences, but I’m not sure if it’s complete and what it really means. I haven’t found a better comparison yet, however.

                                                            3. 16

                                                              Unfortunately I have to agree. I self-host 99% of my online services, and sysadmin for a living. I tried mastodon for a few months, but its installation and management process was far more complicated than anything I’m used to. (I run everything on OpenBSD, so the docker image isn’t an option for me.)

                                                              In addition to getting NodeJS, Ruby, and all the other dependencies installed, I had to write 3 separate rc files to run 3 separate daemons to keep the thing running. Compared to something like Gitea, which just requires running a single Go executable and a Postgres DB, it was a massive amount of toil.

                                                              The mastodon culture really wasn’t a fit for me either. Even in technical spaces, there was a huge amount of politics/soapboxing. I realized I hadn’t even logged in for a few weeks so I just canned my instance.

                                                              Over the past year I’ve given up on the whole social network thing and stick to Matrix/IRC/XMPP/email. I’ve been much happier as a result and there’s a plethora of quality native clients (many are text-based). I’m especially happy on Matrix now that I’ve discovered weechat-matrix.

                                                              I don’t mean to discourage federated projects like Mastodon though - I’m always a fan of anything involving well-known URLs or SRV records!

                                                              1. 11

                                                                Fortunately the “fediverse” is glued by a standard protocol (ActivityPub) that is quite simple so if one implementation (e.g. Mastodon) doesn’t suit someone’s needs it’s not a big problem - just searching for a better one and it still interconnects with the rest of the world.

                                                                (I’ve written a small proof-of-concept ActivityPub clients and servers, it works and federates, see also this).

                                                                For me the more important problems are not implementation issues with one server but rather design issues within the protocol. For example established standards such as e-mail or XMPP have a way to delegate responsibility of running a server of a particular protocol but still use bare domain for user identifies. In e-mail that is MX records in XMPP it’s DNS SRV records. ActivityPub doesn’t demand anything like it and even though Mastodon tries to provide something that would fix that issue - WebFinger, other implementations are not interested in that (e.g. Pleroma). And then one is left with instances such as “social.company.com”.

                                                                For example - Pleroma’s developer’s id is lain@pleroma.soykaf.com.

                                                                1. 16

                                                                  This is a completely reasonable and uncontroversial set of dependencies for a web app. Some of the largest web apps on the Internet run this stack. That is a good thing, because when Fediverse nodes need to scale there are well-understood ways of doing it.

                                                                  Success in social networking is entirely about network effects and that means low barrier to entry is table stakes. Yeah, it’d be cool if someone built the type of node you’re talking about, but it would be a curiosity pursued only by the most technical users. If that were the barrier to entry for the network, there would be no network.

                                                                  1. 39

                                                                    This is a completely reasonable and uncontroversial set of dependencies for a web app. Some of the largest web apps on the Internet run this stack.

                                                                    Yes, but not for a web app I’m expected to run on my own time, for fun.

                                                                    1. 6

                                                                      I’m not sure that’s the exact expectation, that we all should run our single-user Mastodon instances. I feel like the expectation is that sysadmin with enough knowledge will maintain an instance for many users. This seems to be the norm.

                                                                      That, or you go to Mastohost and pay someone else for your own single-user instance.

                                                                      1. 2

                                                                        You’re not expected to do that is my point.

                                                                      2. 16

                                                                        completely reasonable and uncontroversial

                                                                        Not true. Many people are complaining about the unmanaged proliferation of dependencies and tools. Most projects of this size and complexity don’t need more than one language, bulky javascript frameworks, caching and database services.

                                                                        This is making difficult to package Mastodon and Pleroma in Debian and Ubuntu and making it more difficult for people to make the service really decentralized.

                                                                        1. 1

                                                                          I’m not going to defend the reality of what NPM packaging looks like right now because it sucks but that’s the ecosystem we’re stuck with for the time being until something better comes along. As with social networks, packaging systems are also about network effects.

                                                                          But you can’t deny that this is the norm today. Well, you can, but you would be wrong.

                                                                          This is making difficult to package Mastodon and Pleroma in Debian and Ubuntu

                                                                          I’m sure it is, because dpkg is a wholly unsuitable tool for this use-case. You shouldn’t even try. Anyone who doesn’t know how to set these things up themselves should use the Docker container.

                                                                          1. 1

                                                                            I think the most difficult part of the Debian packaging would be the js deps, correct?

                                                                            1. 3

                                                                              Yes and no. Unvendorizing dependencies is done mostly for security and requires a lot of work depending on the amount of dependencies. Sometimes js libraries don’t create serious security concerns because they are only run client-side and can be left in vendorized form.

                                                                              The Ruby libraries can be also difficult to unvendorize because many upstream developers introduce breaking changes often. They care little about backward compatibility, packaging and security.

                                                                              Yet server-side code is more security-critical and that becomes a problem. And it’s getting even worse with new languages that strongly encourage static linking and vendorization.

                                                                              1. 1

                                                                                I can’t believe even Debian adopted the Googlism of “vendor” instead of “bundle”.

                                                                                That aside, Rust? In Mastodon? I guess the Ruby gems it requires would be the bigger problem?

                                                                                1. 2

                                                                                  The use of the word is mine: I just heard people using “vendor” often. It’s not “adopted by Debian”.

                                                                                  I don’t understand the second part: maybe you misread Ruby for Rust in my text?

                                                                                  1. 1

                                                                                    No, I really just don’t know what Rust has to do with Mastodon. There’s Rust in there somewhere? I just didn’t notice.

                                                                                    1. 2

                                                                                      AFAICT there is no Rust in the repo (at least at the moment).

                                                                                      1. 1

                                                                                        Wow, I’m so dumb, I keep seeing Rust where there is none and misunderstanding you, so sorry!

                                                                          2. 7

                                                                            Great. Then have two implementations, one for users with large footprints, and another for casual users with five friends.

                                                                            It is a reasonable stack if you will devote 1+ servers to the task. Not for something you might want to run on your RPI next to your irc server (a single piece of software in those stacks too)

                                                                            1. 4

                                                                              Having more than one implementation is healthy.

                                                                              1. 2

                                                                                Of course it is. Which is why it’s a reasonable solution to the large stack required by the current primary implementation.

                                                                          3. 6

                                                                            There’s really one database and one cache there. I mean, I guess technically Redis is a database, but it’s almost always used for caching and not as a DB layer like PSQL.

                                                                            You can always write your own server if you want in whatever language you choose if you feel like Ruby/Node is too much. Or, like that other guy said, you can just use Docker.

                                                                            1. 4

                                                                              There’s really one database and one cache there. I mean, I guess technically Redis is a database, but it’s almost always used for caching . . .

                                                                              A project that can run on a single instance of the application binary absolutely does not need a cache. Nor does it need a pub/sub or messaging system outside of its process space.

                                                                              1. 2

                                                                                It’s more likely that Redis is being used for pub/sub messaging and job queuing.

                                                                              2. 11

                                                                                This does not seem like a reasonable set of dependencies to me

                                                                                Huh. I must be just used to this, then. At work I need to use or at least somewhat understand,

                                                                                • Postgres
                                                                                • Python 2
                                                                                • Python 3
                                                                                • Django
                                                                                • Ansible
                                                                                • AWS
                                                                                • Git (actually, Mercurial, but this is my choice to avoid using git)
                                                                                • Redis
                                                                                • Concourse
                                                                                • Docker
                                                                                • Emacs (My choice, but I could pick anything else)
                                                                                • Node
                                                                                • nginx
                                                                                • Flask
                                                                                • cron
                                                                                • Linux
                                                                                • RabbitMQ
                                                                                • Celery
                                                                                • Vagrant (well, optional, I actually do a little extra work to have everything native and avoid a VM)
                                                                                • The occasional bit of C code

                                                                                and so on and so forth.

                                                                                Do I just work at a terrible place or is this a reasonable amount of things to have to deal with in this business? I honestly don’t know.

                                                                                To me Mastodon’s requirements seem like a pretty standard Rails application. I’m not even sure why Redis is considered another db – it seems like an in-memory cache with optional disk persistence is a different thing than a persistent-only RDBMS. Nor do I even see much of a problem with two interpreted languages – the alternative would be to have js everywhere, since you can’t have Python or Ruby in a web browser, and js just isn’t a pleasant language for certain tasks.

                                                                                1. 38

                                                                                  I can work with all that and more if you pay me. For stuff I’m running at home on my own time, fuck no. When I shut my laptop to leave the office, it stays shut until I’m back again in the morning, or I get paged.

                                                                                  1. 2

                                                                                    So is Mastodon unusual for a Rails program? I wonder if it’s simply unreasonable to ask people to run their own Rails installation. I honestly don’t know.

                                                                                    Given the amount of Mastodon instances out there, though, it seems that most people manage. How?

                                                                                    1. 4

                                                                                      That looks like a bog-standard, very minimal rails stack with a JS frontend. I’m honestly not sure how one could simplify it below that without dropping the JS on the web frontend and any caching, both of which seem like a bad idea.

                                                                                      1. 7

                                                                                        There’s no need to require node. The compilation should happen at release time, and the release download tarball should contain all the JS you need.

                                                                                        1. -3

                                                                                          lol “download tarball”, you’re old, dude.

                                                                                          1. 7

                                                                                            Just you wait another twenty years, and you too will be screaming at the kids to get off your lawn.

                                                                                        2. 2

                                                                                          You could remove Rails and use something Node-based for the backend. I’m not claiming that’s a good idea (in fact it’s probably not very reasonable), but it’d remove that dependency?

                                                                                          1. 1

                                                                                            it could just have been a go or rust binary or something along those lines, with an embedded db like bolt or sqlite

                                                                                            edit: though the reason i ignore mastodon is the same as cullum, culture doesn’t seem interesting, at least on mastodon.social

                                                                                          2. 4

                                                                                            If security or privacy focused, I’d try a combo like this:

                                                                                            1. Safe language with minimal runtime that compiles to native code and Javascript. Web framework in that language for dynamic stuff.

                                                                                            2. Lwan web server for static content.

                                                                                            3. SQLite for database.

                                                                                            4. Whatever is needed to combine them.

                                                                                            Combo will be smaller, faster, more reliable, and more secure.

                                                                                            1. 2

                                                                                              I don’t think this is unusual for a Rails app. I just don’t want to set up or manage a Rails app in my free time. Other people may want to, but I don’t.

                                                                                          3. 7

                                                                                            I don’t think it’s reasonable to compare professional requirements and personal requirements.

                                                                                            1. 4

                                                                                              The thing is, Mastodon is meant to be used on-premise. If you’re building a service you host, knock yourself out! Use 40 programming languages and 40 DBs at the same time. But if you want me to install it, keep it simple :)

                                                                                              1. 4

                                                                                                Personally, setting up all that seems like too much work for a home server, but maybe I’m just lazy. I had a similar issue when setting up Matrix and ran into an error message that I just didn’t have the heart to debug, given the amount of moving parts which I had to install.

                                                                                                1. 3

                                                                                                  If you can use debian, try installing synapse via their repository, it works really nice for me so far: https://matrix.org/packages/debian/

                                                                                                  1. 1

                                                                                                    Reading other comments about the horror that is Docker, it is a wonder that you dare propose to install an entire OS only to run a Matrix server. ;)

                                                                                                    1. 3

                                                                                                      i’m not completely sure which parts of you comment are sarcasm :)

                                                                                                2. 0

                                                                                                  Your list there has lots of tools with overlapping functionality, seems like pointless redundancy. Just pick flask OR django. Just pick python3 or node, just pick docker or vagrant, make a choice, remove useless and redundant things.

                                                                                                  1. 3

                                                                                                    We have some Django applications and we have some Flask applications. They have different lineages. One we forked and one we made ourselves.

                                                                                                3. 6

                                                                                                  Alternatively you install it using the Docker as described here.

                                                                                                  1. 32

                                                                                                    I think it’s kinda sad that the solution to “control your own toots” is “give up control of your computer and install this giant blob of software”.

                                                                                                    1. 9

                                                                                                      Piling another forty years of hexadecimal Unix sludge on top of forty years of slightly different hexadecimal Unix sludge to improve our ability to ship software artifacts … it’s an aesthetic nightmare. But I don’t fully understand what our alternatives are.

                                                                                                      I’ve never been happier to be out of the business of having to think about this in anything but the most cursory detail.

                                                                                                      1. 11

                                                                                                        I mean how is that different from running any binary at the end of the day. Unless you’re compiling everything from scratch on the machine starting from the kernel. Running Mastodon from Docker is really no different. And it’s not like anybody is stopping you from either making your own Dockerfile, or just setting up directly on your machine by hand. The original complaint was that it’s too much work, and if that’s a case you have a simple packaged solution. If you don’t like it then roll up the sleeves and do it by hand. I really don’t see the problem here I’m afraid.

                                                                                                        1. 11

                                                                                                          “It’s too much work” is a problem.

                                                                                                          1. 5

                                                                                                            Unless you’re compiling everything from scratch on the machine starting from the kernel

                                                                                                            I use NixOS. I have a set of keys that I set as trusted for signature verification of binaries. The binaries are a cache of the build derivation, so I could theoretically build the software from scratch, if I wanted to, or to verify that the binaries are the same as the cached versions.

                                                                                                            1. 2

                                                                                                              Right, but if you feel strongly about that then you can make your own Dockerfile from source. The discussion is regarding whether there’s a simple way to get an instance up and running, and there is.

                                                                                                              1. 3

                                                                                                                Docker containers raise a lot of questions though, even if you use a Dockerfile:

                                                                                                                • What am I running?
                                                                                                                • Which versions am I running?
                                                                                                                • Do the versions have security vulnerabilities?
                                                                                                                • Will I be able to build the exact same version in 24 months?

                                                                                                                Nix answers these pretty will and fairly accurately.

                                                                                                            2. 2

                                                                                                              Unless you’re compiling everything from scratch on the machine starting from the kernel.

                                                                                                              You mean starting with writing a bootstrapping compiler in assembly, then writing your own full featured compiler and compiling it in the bootstrapping compiler. Then moving on to compiling the kernel.

                                                                                                              1. 1

                                                                                                                No no, your assembler could be compromised ;)

                                                                                                                Better write raw machine code directly onto the disk. Using, perhaps, a magnetized needle and a steady hand, or maybe a butterfly.

                                                                                                                1. 2

                                                                                                                  My bootstrapping concept was having the device boot a program from ROM that takes in the user-supplied, initial program via I/O into RAM. Then passes execution to it. You enter the binary through one of those Morse code things with four buttons: 0, 1, backspace, and enter. Begins executing on enter.

                                                                                                                  Gotta input the keyboard driver next in binary to use a keyboard. Then the display driver blind using the keyboard. Then storage driver to save things. Then, the OS and other components. ;)

                                                                                                                2. 1

                                                                                                                  If I deploy three Go apps on top of a bare OS (picked Go since it has static binaries), and the Nginx server in front of all 3 of them uses OpenSSL, then I have one OpenSSL to patch whenever the inevitable CVE rolls around. If I deploy three Docker container apps on top of a bare OS, now I have four OpenSSLs to patch - three in the containers and one in my base OS. This complexity balloons very quickly which is terrible for user control. Hell, I have so little control over my one operating system that I had to carefully write a custom tool just to make sure I didn’t miss logfile lines in batch summaries created by cron. How am I supposed to manage four? And three with radically different tooling and methodology to boot.

                                                                                                                  And Docker upstream, AFAIK, has provided nothing to help with the security problem which is probably why known security vulnerabilities in Docker images are rampant. If they have I would like to know because if it’s decent I would switch to it immediately. See this blog post for more about this problem (especially including links) and how we “solved” it in pump.io (spoiler: it’s a giant hack).

                                                                                                                  1. 3

                                                                                                                    That’s not how any of this works. You package the bare minimum needed to run the app in the Docker container, then you front all your containers with a single Nginx server that handles SSL. Meanwhile, there are plenty of great tools, like Dokku for managing Docker based infrastructure. Here’s how you provision a server using Let’s Encrypt with Dokku:

                                                                                                                    sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
                                                                                                                    okku letsencrypt:auto-renew
                                                                                                                    

                                                                                                                    viewing logs isn’t rocker science either:

                                                                                                                    dokku logs myapp
                                                                                                                    
                                                                                                                    1. 1

                                                                                                                      OK, so OpenSSL was a bad example. Fair enough. But I think my point still stands - you’ll tend to have at least some duplicate libraries across Docker containers. There’s tooling around managing security vulnerabilities in language-level dependencies; see for example Snyk. But Docker imports the entire native package manager into the “static binary” and I don’t know of any tooling that can track problems in Docker images like that. I guess I could use Clair through Quay but… I don’t know. This doesn’t feel like as nice of a solution or as polished somehow. As an image maintainer I’ve added a big manual burden keeping up with native security updates in addition to those my application actually directly needs, when normally I could rely on admins to do that, probably with lots of automation.

                                                                                                                      1. 3

                                                                                                                        you’ll tend to have at least some duplicate libraries across Docker containers

                                                                                                                        That is literally the entire point. Application dependencies must be separate from one another, because even on a tight-knit team keeping n applications in perfect lockstep is impossible.

                                                                                                                        1. 1

                                                                                                                          OS dependencies are different than application dependencies. I can apply a libc patch on my Debian server with no worry because I know Debian works hard to create a stable base server environment. That’s different than application dependencies, where two applications are much more likely to require conflicting versions of libraries.

                                                                                                                          Now, I run most of my stuff on a single server so I’m very used to a heterogeneous environment. Maybe that’s biasing me against Docker. But isn’t that the usecase we’re discussing here anyway? How someone with just a hobbyist server can run Mastodon?

                                                                                                                          Thinking about this more I feel like a big part of what bothers me about Docker, and therefore about Clair, is that there’s no package manifest. Dockerfile does not count, because that’s not actually a package manifest, it’s just a list of commands. I can’t e.g. build a lockfile format on top of that, which is what tools like Snyk analyze. Clair is the equivalent of having to run npm install and then go trawling through node_modules looking for known vulnerable code instead of just looking at the lockfile. More broadly, because Docker lacks any notion of a package manifest, it seems to me that while Docker images are immutable once built, the build process that leads you there cannot be made deterministic. This is what makes it hard to keep track of the stuff inside them. I will have to think about this more - as I write this comment I’m wondering if my complaints about duplicated libraries and tracking security there is an instance of the XY problem or if they really are separate things in my mind.

                                                                                                                          Maybe I am looking for something like Nix or Guix inside a Docker container. Guix at least can export Docker containers; I suppose I should look into that.

                                                                                                                          1. 2

                                                                                                                            OS dependencies are different than application dependencies.

                                                                                                                            Yes, agreed.

                                                                                                                            Thinking about this more I feel like a big part of what bothers me about Docker, and therefore about Clair, is that there’s no package manifest. Dockerfile does not count, because that’s not actually a package manifest, it’s just a list of commands. I can’t e.g. build a lockfile format on top of that, which is what tools like Snyk analyze.

                                                                                                                            You don’t need a container to tell you these things. Application dependencies can be checked for exploits straight from the code repo, i.e. brakeman. Both the Gemfile.lock and yarn.lock are available from the root of the repo.

                                                                                                                            The container artifacts are most like built automatically for every merge to master, and that entails doing a full system update from the apt repository. So in reality, while not as deterministic as the lockfiles, the system deps in a container are likely to be significantly fresher than a regular server environment.

                                                                                                                        2. 1

                                                                                                                          You’d want to track security vulnerabilities outside your images though. You’d do it at dev time, and update your Dockerfile with updated dependencies when you publish the application. Think of Docker as just a packaging mechanism. It’s same as making an uberjar on the JVM. You package all your code into a container, and run the container. When you want to make updates, you blow the old one away and run a new one.

                                                                                                                  2. 4

                                                                                                                    I have only rarely used Docker, and am certainly no booster, so keep that in mind as I ask this.

                                                                                                                    From the perspective of “install this giant blob of software”, do you see a docker deployment being that different from a single large binary? Particularly the notion of the control that you “give up”, how does that differ between Docker and $ALTERNATIVE?

                                                                                                                    1. 14

                                                                                                                      Ideally one would choose door number three, something not so large and inauditable. The complaint is not literally about Docker, but the circumstances which have resulted in docker being the most viable deployment option.

                                                                                                                    2. 2

                                                                                                                      You have the dockerfile and can reconstruct. You haven’t given up control.

                                                                                                                      1. 5

                                                                                                                        Is there a youtube video I can watch of somebody building a mastodon docker image from scratch?

                                                                                                                        1. 1

                                                                                                                          I do not know of one.

                                                                                                                  3. 3

                                                                                                                    I totally agree as well, and I wish authors would s/Mastodon/Fediverse/ in their articles. As others have noted, Pieroma is another good choice and others are getting into the game - NextCloud added fediverse node support in their most recent release as a for-instance.

                                                                                                                    I tried running my own instance for several months, and it eventually blew up. In addition to the large set of dependencies, the system is overall quite complex. I had several devs from the project look at my instance, and the only thing they could say is it was a “back-end problem” (My instance had stopped getting new posts).

                                                                                                                    I gave up and am now using somebody else’s :) I love the fediverse though, it’s a fascinating place.

                                                                                                                    1. 4

                                                                                                                      I just use the official Docker containers. The tootsuite/mastodon container can be used to launch web, streaming, sidekiq and even database migrations. Then you just need an nginx container, a redis container, a postgres container and an optional elastic search container. I run it all on a 2GB/1vCPU Vultr node (with the NJ data center block store because you will need a lot of space) and it works fairly well (I only have ~10 users; small private server).

                                                                                                                      In the past I would agree with out (and it’s the reason I didn’t try out Diaspora years ago when it came out), but containers have made it easier. I do realize they both solve and cause problems and by no means think they’re the end all of tech, but they do make running stuff like this a lot easier.

                                                                                                                      If anyone wants to find me, I’m @djsumdog@hitchhiker.social

                                                                                                                      1. 2

                                                                                                                        Given that there’s a space for your Twitter handle, i wish Lobste.rs had a Mastodon slot as well :)

                                                                                                                      2. 2

                                                                                                                        Wait, you’re also forgetting systemd to keep all those process humming… :)

                                                                                                                        You’re right that this is clearly too much: I have run such systems for work (Rails’ pretty common), but would probably not do that for fun. I am amazed, and thankful, for the people who volunteer the effort to run all this on their week-ends.

                                                                                                                        Pleroma does look simpler… If I really wanted to run my own instance, I’d look in that direction. ¯_(ツ)_/¯

                                                                                                                        1. 0

                                                                                                                          I’m waiting for urbit.org to reach useability. Which I expect for my arbitrary feeling of useability to come about late this year. Then the issue is coming up to speed on a new language and integrated network, OS, build system.

                                                                                                                          1. 2

                                                                                                                            Urbit is apparently creating a feudal society. (Should note that I haven’t really dug into that thread for several years and am mostly taking @pushcx at his word.)

                                                                                                                            1. 1

                                                                                                                              The feudal society meme is just not true, and, BTW, Yarvin is no longer associated with Urbit. https://urbit.org/primer/

                                                                                                                          2. 1

                                                                                                                            I would love to have(make) a solution that could be used locally with sqlite and in aws with lambda, api gateway and dynamodb. That would allow scaling cost and privacy/controll.

                                                                                                                            1. 3

                                                                                                                              https://github.com/deoxxa/don is sort of in that direction (single binary, single file sqlite database).

                                                                                                                          1. 4

                                                                                                                            At what stage in the interview process do you have this in mind? If it’s late-ish, seems plausible. If it’s early-ish, seems like a lot to ask up front from a candidate to spend a day grokking a codebase when they’re still at the point where they might be summarily rejected after 10 minutes’ review. You do mention that some people might not have the time, but even for those who do, is it a good use of their time?

                                                                                                                            The academic-job version of this is a university wanting your initial application for a faculty position to come with a custom-made syllabus for one of their new courses, or a review of their degree program with suggested revisions, or something of that kind. (Distinct from asking you to send in an example syllabus of a course you might teach or have taught in the past, which isn’t custom, employer-specific work.) I usually pass on applying to those. I am happy to prep custom material if I made it to the shortlist and the potential employer shows they’re serious enough about me as a candidate to fly me out for an on-site interview, though. Then it seems fair and more likely to be time not wasted.

                                                                                                                            1. 4

                                                                                                                              I figured this would replace the in person technical interviews. So for a company, the recruiting flow might be

                                                                                                                              1. Initial Phone Interview
                                                                                                                              2. Maybe a fast phone technical filter interview
                                                                                                                              3. Give them the project, tell them to make a change (and that they’ll be reviewing a couple of PRs for the onsite)
                                                                                                                              4. On site: culture fit, discuss their change to the codebase, have them do the code review
                                                                                                                              5. Hire/no hire decision.
                                                                                                                              1. 1

                                                                                                                                For me, this would be a red flag - 2/3 interviews (including the absolute worst kind, the phone interview) and a day long coding test? Maybe if I was applying to be CTO of a Fortune 500 company. For a lowly developer, this is too much.

                                                                                                                                1. 4

                                                                                                                                  You’ve definitely been luckier with interviews than I have. Every company I’ve ever interviewed with had at least three rounds!

                                                                                                                                  1. 1

                                                                                                                                    My last two interviews were just one short onsite session each. Both led to an offer. I turned down companies with more involved & time consuming process.

                                                                                                                            1. 2

                                                                                                                              Mastodon has a flexible approach to adult content.

                                                                                                                              FWIW, the problem with Tumblr seems to have been child porn content - which would get any Mastodon instance / Mastodon-compatible apps into trouble just the same.

                                                                                                                              1. 2

                                                                                                                                It would, and there is plenty of dubious content in the Fediverse. Someone who makes a Mastodon app and tries to get it reviewed by the App Store could give the reviewer instructions to log into an account on verychildfriendly.mastodon.example which peers with few or no other instances. The reviewer would have to go a long way off the rails to get to reject-worthy content.

                                                                                                                                This is not to say that it wouldn’t happen. There used to be posts about reviewers searching dictionaries for rude content and banning them, and there’s no reason a reviewer wouldn’t deliberately search out a bad Mastodon account to demonstrate that it could be found from within the app. An author could nontheless work to minimise that likelihood.

                                                                                                                                1. 1

                                                                                                                                  I assume that’s why, e.g. Tootdon, is 17+ in the App Store - “unrestricted access to the internet and all the associated filth you might find there.”

                                                                                                                              1. 99

                                                                                                                                I’m sorry to bring this up, and it’s probably considered off-topic here on Lobsters, so feel free to flag this.

                                                                                                                                I know that OpenBSD and SQLite and lots of great pieces of software have been funded by the US military, and computing and military have a long and complicated relationship, but where do we as developers draw the line as to whom we are willing to accept contributions from?

                                                                                                                                This is from Palantir, the company providing the technology for Trump’s deportation machine. I don’t think that this is a black/white issue, and I guess it may be possible to work at a seedy company and still do good stuff. But the docs include a FlightSearch example; is that really appropriate given the context?

                                                                                                                                Regardless, thanks for releasing this as free software.

                                                                                                                                1. 37

                                                                                                                                  Thank you very much for saying it. I think making sure these ethical topics aren’t ignored is the very least we all have a responsibility to do. It’s also entirely possible that there are people here who didn’t know about it, so it’s always worth saying.

                                                                                                                                  1. 37

                                                                                                                                    Thank you for saying this. I’m troubled by the cavalier attitude of techies toward ethics lately, and it’s nice to know I’m not alone.

                                                                                                                                    1. 24

                                                                                                                                      I don’t think a forum where this response is off-topic is worth participating in. The tech industry spends too little time thinking about the ethical implications of it’s products.

                                                                                                                                      1. 25

                                                                                                                                        Even today, we debate the ethics of using the data gathered from unethical experiments in WW2.

                                                                                                                                        I agree that there is a massive ethical issue working for Palatir - and I am not sure it’s ethical to use the work they have produced. Particularly if it’s a Swagger-like clone not yielding substantive value to humanity.

                                                                                                                                        1. 11

                                                                                                                                          While we’re at it, you probably typed that on a machine made by highly-exploited workers in a corrupt country that does far worse, added to the lake in the process, probably paid a surveillance-enabling company in a police state to send it over the network, and possibly wearing clothes made by kids in a sweatshop. And you did all this to get online suggesting moral folks maybe shouldn’t contribute to a HTTP/JSON thing that’s open source since a bad company might misuse [more] open source. Seems hypocritical to me.

                                                                                                                                          Where to we draw the line on how our consumption and contribution harms or helps others? And do you regularly do that for every product and service you buy? Most of them? Have you been active in government on laws, treaties, court cases, etc? The stuff that stops things like you describe. Or just some quick, social signaling on Lobsters getting feel-good points? If you care, I encourage you to put time into legal reform or bootstrapping alternatives to each of the things I mentioned. Maybe make for better opportunities for immigrants in whatever your country is, too. Maybe host some coding bootcamps or something for those in the slums. What you’re doing here is adding to the noise but not helping Trump’s victims or your country’s immigrants in any way.

                                                                                                                                          1. 71

                                                                                                                                            I feel like this is a great example of whataboutism.

                                                                                                                                            I think that if this approach was applied to tech, we’d never fix a bug because “what about the other bugs that could crash the app, this is just virtue signaling because physical compromise means game over”. Why fix a bug when you can say “What about the terrible state of security education in general, why fix a security bug when developers are just adding more?”

                                                                                                                                            It’s ok to make a judgement call and improve one thing in this messy world. It’s ok to try and reduce your footprint/total harm while hypocritically still participating in the system that feeds you. In fact that’s sort of core to improving those systems in a democracy.

                                                                                                                                            Sorry if I misinterpreted your statement, I greatly enjoy your comments across the internet.

                                                                                                                                            1. 13

                                                                                                                                              Whataboutism is a common reply on HN or Lobsters when a popular group decries their outgroup’s activities, third party points out their actions are contrary to their own beliefs, adds that the biases indicate they’re scoring political points rather than really care, and someone pops in to say third party is whataboutism to silence those views. Thing is, whatever 3rd party brings up is almost never on these forums, getting crowd support, or whatever. Always absent. Rather than likely-intended purpose, the whataboutism claim just reinforces specific types of people supporting/rejecting specific activities by silencing dissenters. I mean, if commenter really cares about Trump’s horrors or not contributing to evil organizations, why the hell are they funding evil, slaving companies to buy toys to spend so much time on the programming projects? So, they probably don’t care or are acting like it now. Then, I do to them as they do to others.

                                                                                                                                              Far as what I’m doing, I’ll tell you straight up. There’s been an increase over time of political comments that are about shaming people into behaving certain ways for a perceived, social good. Almost all of them are coming from hypocrits and/or slactivists. I mean, they’re talking on a forum no politician reads with low views. It’s not going to change Palantir’s or Trump’s practices. They know they avoiding stuff that can get results to spend time on Internet forums. So, they’re just getting an emotional high off attacking their opponents, looking like they’re responsible, or getting meaningless votes from people that agree with them. They also tie up our threads with that shit. So, as a real activist doing real-world work, I just call out their selfish, hypocritical bullshit to (a) deter more comments like that here and/or (b) encourage them to actually work on the causes they claim to work on.

                                                                                                                                              Disclaimer: In fairness, people could (and do) call me out for not putting more time into actually building and deploying secure goods rather than high-level designs posted online. Although I defended my choice, I’m probably guilty of screwing up on a reasonable ratio between the two. Anything above zero code might be better. I plan to work on that more next year after I change circumstances.

                                                                                                                                              Disclaimer 2: I say “almost all” cuz a few people here are legit activists or doing things at a loss to address the causes they’re talking about. I respect them a lot.

                                                                                                                                              “It’s ok to make a judgement call and improve one thing in this messy world. It’s ok to try and reduce your footprint/total harm while hypocritically still participating in the system that feeds you. “

                                                                                                                                              I totally agree with you. That’s not what the person was doing, though. It won’t stop Palantir’s contracts, it won’t stop the government’s activities, and proliferation of HTTP/JSON libraries will continue. The latter will even be FOSS so anyone, including Palantir, can use them. Maybe person complaining should start an alternative to Palantir that’s more ethical, organize boycotts of their products, get in a HR office poaching all their smartest talent (or delivering idiots), make enough money to pay off politicians to change government policies, and so on. Stuff that actually affects Palantir or Trump’s agencies.

                                                                                                                                              “I greatly enjoy your comments across the internet.”

                                                                                                                                              Thanks and same to you. :)

                                                                                                                                              1. 25

                                                                                                                                                Maybe person complaining should start an alternative to Palantir that’s more ethical, organize boycotts of their products, get in a HR office poaching all their smartest talent (or delivering idiots), make enough money to pay off politicians to change government policies, and so on.

                                                                                                                                                This objection is absurd on its face. You can’t ethically compete in a market for unethical services. An ethical alternative to Palantir is an oxymoron, because Palantir’s ethical issues are fundamental to the things that Palantir sells. You also can’t “organize a boycott” of a defense contractor. Your final two points are literally “just have enough money to fix the problem”.

                                                                                                                                                How does starting a company which sells the same thing as Palantir to the same customers Palantir sells to, hires the same people as Palantir, has the same wealth as Palantir, and bribes politicians the way Palantir does, stop the problem of companies that behave like Palantir? You’re objecting to someone criticizing the status quo by telling them they should instead… further reinforce the status quo?

                                                                                                                                                1. 19

                                                                                                                                                  I think you misapprehend what is going on here. This is a forum for highly technical people; by raising the serious ethical space Palantir exists in, it directly bears on creating difficulty in recruiting, along with decreasing retention.

                                                                                                                                                  You, of all people, should understand the power of words on an internet screen to influence readers: you’ve been writing long & grammatically correct essays on security across multiple major internet fora for years. I’ve seen you on Schnier and HN, :) Communication, persuasion, and discussion are an essential activist activity. (And for my money, it is substantially more effective than picketing and marching 95% of the time…)

                                                                                                                                                  1. 7

                                                                                                                                                    (I suspect this was meant as a reply to the person I replied to.)

                                                                                                                                                    1. 2

                                                                                                                                                      “by raising the serious ethical space Palantir exists in, it directly bears on creating difficulty in recruiting, along with decreasing retention.”

                                                                                                                                                      I agree with you. I actively do that in real life every day for customers and coworkers wanting something better in a lot of areas. I have plenty of results to show for it. That’s because I put the time in where it gets results and consistently do it rather than one-off’s we sometimes see here. Companies like Palantir use recruiting practices that cast a wide net. Anyone wanting to disrupt their recruiting should be posting such comments on sites with massive numbers of page views that are mostly developers. Big, social media sites like Twitter, Facebook, Reddit, and Hacker News. LinkedIn, too, if you can do it that way but I haven’t been on in long time. That’s why I encourage them to put political efforts in front of literally millions of developers instead of a hundred or less participating here if aiming for a big wave of change.

                                                                                                                                                      “You, of all people, should understand the power of words on an internet screen to influence readers: you’ve been writing long & grammatically correct essays on security across multiple major internet fora for years. I’ve seen you on Schnier and HN, :) “

                                                                                                                                                      You said long and grammatically correct. You gotta be messing with me on second half lmao. I agree with the power of words and persuasion as stated above. Hell, you had to have seen me do it there, esp to “Skeptical” (troll or near-perfect DOD apologist) before I left. That’s why I tell them to use that power where it gets results instead of Lobsters. Then, we keep Lobsters focused on deep, technical stuff with low noise. Anyone wanting to achieve political action can ping Lobsters, via dedicated threads or private messages, to go where the action is to get actual, Palantir-scale results.

                                                                                                                                                      ““It is what it is”, which is what your comment & Nick’s comment promote, simply promotes apathy; history provides many examples of change taking place. I encourage people to shake off the belief that things will always stay the same.”

                                                                                                                                                      That’s not true at all. I’ve just followed something like several lifetimes worth of history on the U.S. military and government under both left- and right-leaning leaders finding the military-industrial-complex just got more powerful over time. The politicians of both sides support it. The right supports companies like Palantir overtly. The left’s politicians will support the defense contractors for both payouts and to bring jobs to their districts. So, to change the situation voronoipotato describes, you have to get millions of people to vote out scumbags that take money to improve chances of elections to combat defense industry or get an anti-war, pro-immigration President in office with Congress willing to roll-back legislation.

                                                                                                                                                      The last election surprised most lefter-than-I liberals that were trying to make people say the correct things on forums, etc in ways we see in some threads here. I doubt they’re capable of achieving that 180 directly if keeping same practices that failed before so hard they didn’t even see what was coming. Fingers crossed that we just get lucky that Trump does so much damage and embarrassment that a reversal happens in swing states after the Democrats get on top of their shit this time. Or we centrists get a President. Fat chance on that one since few listen to moderates. ;)

                                                                                                                                                    2. 5

                                                                                                                                                      The person you’re talking to likely doesn’t even think that Defense Contracting is unethical. Being said palantir is going to keep existing, boycotting doesn’t mean anything here because we don’t even buy their products. Even under a proper organized effort if we got a different defense contractor absolutely nothing would be different. The only tactics I’m aware we can do are mitigation tactics of not giving our labor to defense contractors, but this drives up the wages to the point where someone would. You can if you work there do a labor slowdown, but your ability to act in that way is limited, and useless if it’s not a group effort.

                                                                                                                                                      Palantir is a bad thing but our ability to affect it is extremely limited. Electoral politics is mostly useless here. Their lobbying power affects both parties pretty evenly. IMHO it’s better to put energy into mitigation tactics into problems where it’s easier to have traction. One group has been for example paying for bail bonds for refugees.

                                                                                                                                                      Defense contractor spending isn’t a symptom of capitalism but rather attached to the heart, a swollen vestigial organ from mercantilism and much like the appendix may kill you if you remove it unskillfully.

                                                                                                                                                      I think it’s natural to see the biggest problem and try and lock horns with it, but sometimes a smaller problem you can solve is genuinely better than a larger problem you can’t. Obviously don’t work for them, there’s plenty of other places that pay you well and you won’t even have to think about all the bodies when you go to sleep.

                                                                                                                                                      1. 7

                                                                                                                                                        The person you’re talking to likely doesn’t even think that Defense Contracting is unethical.

                                                                                                                                                        Yes, but the person they’re suggesting this in response to does, which was the context of nickpsecurity’s original suggestion to compete with Palantir.

                                                                                                                                                        The only tactics I’m aware we can do are mitigation tactics of not giving our labor to defense contractors, but this drives up the wages to the point where someone would.

                                                                                                                                                        I don’t know what your point is. Driving up wage costs for unethical corporations is the point of organizing an effort to boycott employment at specific corporations. The goal is making things like human rights violations untenable to corporations by making them unprofitable. Yes, this is a half measure - but it’s not nothing, either.

                                                                                                                                                        Defense contractor spending isn’t a symptom of capitalism but rather attached to the heart, a swollen vestigial organ from mercantilism and much like the appendix may kill you if you remove it unskillfully.

                                                                                                                                                        So your point is, we should leave it alone?

                                                                                                                                                        I think it’s natural to see the biggest problem and try and lock horns with it, but sometimes a smaller problem you can solve is genuinely better than a larger problem you can’t.

                                                                                                                                                        On the contrary - refusing to work for companies like Palantir and encouraging my fellow tech workers to do the same is one of my most fruitful opportunities to fight against systemic injustices at the moment. Each of us in the tech industry have far more influence on an our industry’s actions than on the actions of things like the federal government - there are less than four million programmers in the entire US, as opposed to the vastly higher number of voters. We should be adamant about using our privileged place as one of the few labor pools left with real negotiating power to prevent our industry from committing acts of evil, not conveniently defeatist whenever someone dares to suggest the small personal sacrifice of choosing not to directly build the tools of human misery.

                                                                                                                                                        1. 7

                                                                                                                                                          Fundamental changes are achieved by many people choosing to not accept what is, and coming together to push towards a major change in the status quo.

                                                                                                                                                          “It is what it is”, which is what your comment & Nick’s comment promote, simply promotes apathy; history provides many examples of change taking place. I encourage people to shake off the belief that things will always stay the same.

                                                                                                                                                          1. 1

                                                                                                                                                            You said it even better than me.

                                                                                                                                                        2. 20

                                                                                                                                                          Whataboutism is a common reply on HN or Lobsters when a popular group decries their outgroup’s activities, third party points out their actions are contrary to their own beliefs, adds that the biases indicate they’re scoring political points rather than really care, and someone pops in to say third party is whataboutism to silence those views. Thing is, whatever 3rd party brings up is almost never on these forums, getting crowd support, or whatever.

                                                                                                                                                          No it’s a common reply when you distract from the discussion at hand to go ‘oh but what about these other unrelated issues?’ Your response is literally at the level of ‘capitalism made your iPhone you’re using to have this conversation so checkmate’ in a discussion about economic systems.

                                                                                                                                                          There is no ‘popular group’ here, there’s no ‘outgroup’, nobody is decrying anyone’s activities. You haven’t ‘pointed out’ any actions that are contrary to anyone’s beliefs or exposed any biases or virtue signalling. All you’ve done is responded to a post pointing out that Palantir might be an unethical company, accusing them of virtue signalling! They didn’t even say ‘Palantir is bad’. They suggested that it might be, and that it was worth thinking about and discussion. Did you then discuss it? Did you think about it? No, you just launched into an attack, said that their post was social signalling and accused them of hypocrisy.

                                                                                                                                                          Imagine for a moment the discussion was oil companies, and the person you were responding to had said ‘I think oil companies often act unethically and I think we should consider whether we want to be working with them and contributing to their open source software’. Your response was the equivalent of ‘you don’t have an electric car so you’re not allowed to discuss this’. I hope you can see that that is nonsense.

                                                                                                                                                          I totally agree with you. That’s not what the person was doing, though. It won’t stop Palantir’s contracts, it won’t stop the government’s activities, and proliferation of HTTP/JSON libraries will continue. The latter will even be FOSS so anyone, including Palantir, can use them. Maybe person complaining should start an alternative to Palantir that’s more ethical, organize boycotts of their products, get in a HR office poaching all their smartest talent (or delivering idiots), make enough money to pay off politicians to change government policies, and so on. Stuff that actually affects Palantir or Trump’s agencies.

                                                                                                                                                          When someone says ‘where do we as developers draw the line as to whom we are willing to accept contributions from?’ they are opening up a discussion. Maybe the result of that discussion would have been ‘anyone actually’. Suggesting that the first thing you should do is start boycotting companies before the issue has even been discussed is ridiculous. Discussions are fine. Discussions are not slacktivism. Posting ‘#stoppalantir #metoo #stoptrump’ at the end of your tweets and doing nothing else in your life is virtue signalling. Discussing issues is not.

                                                                                                                                                          1. 10

                                                                                                                                                            There is no ‘popular group’ here, there’s no ‘outgroup’, nobody is decrying anyone’s activities.

                                                                                                                                                            A person submitted a HTTP/JSON toolchain that they were open-sourcing. A versatile, general-purpose tool that can be used for good if someone wants to. The comment I replied to ignored the software submission entirely to tell them they’re unethical for working at Palantir since other parts of the company uses its tech to serve an unethical customer. That’s decrying activities. Such reasoning also applies to companies like Google (or other surveillance companies), Apple/Foxconn, VC-funded companies aiming for lock-in, and so on since buying their stuff or contributing to their FOSS might support all kinds of evil. Some people supporting the decrying comment even work at such companies despite other jobs being available for people with that kind of talent. Strange.

                                                                                                                                                            The fact that this accusation and suggestion to quit their job got 60 votes vs 7 about the submission… on Lobsters with lower numbers of votes to begin with… definitely says it’s popular. The marked difference between the people who support or question that tangent supports the existence of an outgroup relationship. I can’t say as much about what it means here since the outgroup receives more support on a lot of political divides. Lots of folks here hate companies like Palantir regardless of other beliefs. That’s what I’m leaning toward.

                                                                                                                                                            It’s been an interesting thread to observe, though.

                                                                                                                                                            1. 2

                                                                                                                                                              Wholeheartedly agree, there! I suspect I drew different conclusions than you, though.

                                                                                                                                                          2. 3

                                                                                                                                                            People can disagree with you without being part of a conspiracy to silence or shame you. Maybe a less emotional response would be more informative.

                                                                                                                                                          3. 0

                                                                                                                                                            One of nick’s pastimes seems to be railing against liberal “hypocrisy” on this website, mostly by deflecting into muddy tangential arguments just like so.

                                                                                                                                                            1. 13

                                                                                                                                                              Please don’t post ad-hominem attacks here. If you disagree with the argument, pick it apart politely.

                                                                                                                                                              Lord knows you should have enough practice by now to do so.

                                                                                                                                                              1. 5

                                                                                                                                                                If you disagree with the argument, pick it apart politely.

                                                                                                                                                                That only works if both sides are arguing in good faith though which definitely doesn’t appear to be the case with some commenters on here.

                                                                                                                                                                1. 4

                                                                                                                                                                  If that’s the case, then arguing further with somebody in bad faith is just going to create noise and antagonize other lobsters. Best just to ignore the posts then.

                                                                                                                                                                  1. 3

                                                                                                                                                                    I do but it ruins the lobsters experience for me to see people arguing in bad faith without any censure. Some of them even seem to be encouraged as a kind of clickbait/outrage generator. It’s disheartening.

                                                                                                                                                                2. 4

                                                                                                                                                                  Lord knows you should have enough practice by now to do so.

                                                                                                                                                                  This is an ad-hominem, friendly.

                                                                                                                                                            2. 19

                                                                                                                                                              Leaving whataboutism aside, I think you cannot conflate the (delusional) idea of ethical consumption with active usage and contribution of open source software.

                                                                                                                                                              Ethical consumption doesn’t work for the structure of the market, where the contribution of the individual gives no perceivable feedback to the system.

                                                                                                                                                              The Open Source world and software engineering are a much smaller world. It is a realistic goal to radicalize enough software engineers inside and outside of Palantir in order to halt their production. Your target audience has contract leverage, money and is highly connected and easily reachable.

                                                                                                                                                              This is a much easier and realistic goal than convince the management of some big corporation to reduce their exploitation just because a small minority of consumers is unhappy. When they realize this, instead of reducing exploitation, they invest in more marketing to wash their brand, or they simply start a new one. Much cheaper.

                                                                                                                                                              Don’t conflate your power as a consumer with your power as a producer, because they very different.

                                                                                                                                                              1. 11

                                                                                                                                                                I used to work for Nokia. They did everything in their power to ethically source all their materials. It was the only phone company that did that. Other companies don’t do that because nobody demands it from them. While there is no ethical consumption under capitalism, there is slightly less terrible consumption. So where do we draw the line? As deep into their pocket books as it can go.

                                                                                                                                                                1. 1

                                                                                                                                                                  I didn’t know that about Nokia. That’s awesome! Thanks for the tip.

                                                                                                                                                                  1. 1

                                                                                                                                                                    Now, keep in mind the new Nokia phones are made by a different company that just licenses the brand. I’m not sure if care as much.

                                                                                                                                                                2. 10

                                                                                                                                                                  […] the lake […]

                                                                                                                                                                  That is horrible.

                                                                                                                                                                  Seems hypocritical to me.

                                                                                                                                                                  Ok.

                                                                                                                                                                  Where would you draw the line personally? Do I understand your opinion correctly as suggesting that if you use a computer, then you shouldn’t be discussing unethical behaviour, e.g. racism? It is not my intention to judge here; just genuinely curious.

                                                                                                                                                                  Maybe make for better opportunities for immigrants in whatever your country is, too.

                                                                                                                                                                  I agree with this very much, and this is something that I aspire to do. Additionally I do have friends that have been deported, and worry a bit about my own not so distant post-Brexit situation in the UK.

                                                                                                                                                                  1. 2

                                                                                                                                                                    Im glad you’re doing real work on this issue. I commend that.

                                                                                                                                                                    Writing it here likely isn’t is the thrust of my point. Instead, it’s just adding noise to the forum plus sending a jab at one of only folks we know in Palantir doing something possibly beneficial (eg open-sourcing software for data analysis). The people here that would agree with your position already dont work for Palantir, use their services, or vote for folks that support horrible policies on immigration.

                                                                                                                                                                    Those that do these thing are (a) mostly not on Lobsters where your comments bave about lowest ROI you can get and (b) usually disagree with you with no intent to change their mind based on your comment that states the obvious. So, you’re not reaching them. Goes for similar comments aiming for political impact on government-level stuff in non-political, Lobsters threads. So, I push for people not to introduce them.

                                                                                                                                                                    Im at work now so responses might be delayed.

                                                                                                                                                                    1. 5

                                                                                                                                                                      mostly not on Lobsters where your comments bave about lowest ROI you can get

                                                                                                                                                                      Yes, you are probably correct in that observation.

                                                                                                                                                                      I wasn’t really sharing my thoughts here expecting any impact, but rather because I’m interested in hearing what other people think. And you are right that I’m being hypocritical here, because I doubt I’d react the same to an IBM project even though they have a shameful past; and even worse, I used to work on this phone app promoting some agrochem from DOW. At first I just kept my eyes on the code, but I couldn’t justify it to myself after reading about their role in the Vietnam War and the Bhopal Disaster and all that.

                                                                                                                                                                      So, it was intended more of an open question about where people here draw the line.

                                                                                                                                                                      1. 2

                                                                                                                                                                        Well, you seem to be speaking out of the heart on things you’ve been close to personally. I respect that. I still say low-ROI with better results elsewhere. You were bringing it up for good reasons, though. The community response also strongly favored your comment in a way consistent with prior threads on politics showing a shift in what Lobsters wants as a community. I’ll write on that in the future.

                                                                                                                                                                        And it’s still cool you’re another person reusing older computers with the LiveCD tests and such. Off-topic a bit, but I was wondering if the hardware vulnerabilities they probably won’t patch on 5-10 year old machines have you considering new stuff? I always knew they were there. Now, they’re coming quickly with many eyeballs on them. Might be best reason I ever heard to get the latest and greatest from Purism, Raptor, or whoever. And then most have backdoors for (insert group) but fewer hardware 0-days for (more groups). Wait, I thought this tangent-tangent could lighten things up with easier choices… Looks just as hard… ;)

                                                                                                                                                                        1. 1

                                                                                                                                                                          Off-topic a bit, but I was wondering if the hardware vulnerabilities they probably won’t patch on 5-10 year old machines have you considering new stuff?

                                                                                                                                                                          I don’t know enough about this; what hardware vulns are we talking about here, and how easy are they to exploit? Although it’s not really about hardware, there’s that whole Intel Management Engine issue that is avoided by using somewhat old WinXP-era 32-bit laptops, so newer is not always more secure.

                                                                                                                                                                          And it’s still cool you’re another person reusing older computers with the LiveCD tests and such.

                                                                                                                                                                          Oh yes that thread! At least it’s a bit less harmful if we can use computers for longer. A friend of mine has a Mac that can’t get more OS X updates now, so she’s stuck with insecure versions of Firefox and all that. Gonna put Debian on it later this week, hopefully!

                                                                                                                                                                          Do you know of any somewhat more ethical laptop producers?

                                                                                                                                                                          1. 2

                                                                                                                                                                            re hardware attacks.

                                                                                                                                                                            Essentially, the hardware has always been secure with only elite pro’s focusing on it. Now, due to Meltdown/Spectre, hardware attacks have gone really mainstream with all kinds of university research, private research, folks describing stuff on blogs, and so on. All the CPU’s that were highly optimized (esp Intel/AMD) are vulnerable to them needing patches. They’re doing the attacks over the network now. Older systems used to be safer but now they’re not since attacks will get more numerous and effective over time.

                                                                                                                                                                            About the only things that are immune were simpler, embedded CPU’s. They’re not designed for security, though, with far less attention by defenders. So, that could reduce the hardware risk adding to the software risk. Simpler boards that can run modern, security-updated OS’s might help. I’m not sure. At lot of stuff is piling in.

                                                                                                                                                                            re put Debian on it.

                                                                                                                                                                            Ok, you’re already using that strategy. Good thinking and being helpful! :)

                                                                                                                                                                            re ethical producers

                                                                                                                                                                            I can’t remember since I was buying used ones like you. The one I see in media most with good things going for it is Purism. They try to disable the ME with software changes, too. Some folks pushing high freedom were using MiniFree to get ME-less, FOSS-firmware laptops. It had downsides. My own Core Duo 2 still handles stuff nicely outside games, highest-def content, and worst of web apps. Here’s a Guardian article I just found with some recommendations. Another said iFixit can help keep things going.

                                                                                                                                                                            So, not a lot of options for new hardware minimizing harm to self and others. There are options in both reuse and new categories that help us reduce harm. We can at least do that. I stay dedicating slices of my research to solving this problem. Tracking whatever can help for whoever can do it. Maybe something will shake out eventually.

                                                                                                                                                                    2. 0

                                                                                                                                                                      Additionally I do have friends that have been deported

                                                                                                                                                                      Sorry but are we now living in a world where the ‘standard’ left-wing political view in the Anglosphere is that any kind of deportation is bad? Because that’s how I’m reading this comment.

                                                                                                                                                                      Immigration policy exists for very good reasons. The American political dichotomy that either there should be zero immigration or completely unchecked immigration is, for lack of a better word, moronic.

                                                                                                                                                                      1. 3

                                                                                                                                                                        I think it’s fair to assume that the poster could be criticising the particular immigration policy that led to these deportations, instead of all immigration policy.

                                                                                                                                                                        1. 1

                                                                                                                                                                          It could be fair, if the poster denounced similar and almost identical policies under the previous President. As it stands, the poster is mostly just criticizing immigration policies that seemed totally reasonable and main stream just eight short years ago.

                                                                                                                                                                    3. 5

                                                                                                                                                                      You can’t make perfect the enemy of good. Your argument essentially seems to be that if you can’t live perfectly you shouldn’t try living better at all.

                                                                                                                                                                      It’s virtually impossible to operate in the modern world without using the internet, without having and using a computer. If it were possible to, for a reasonable price that I can afford but knowing I’d have to pay somewhat of a premium, buy a computer that I knew wasn’t made using exploitation of those in the third world, then of course I would buy one. But I don’t know that it is. And there are other competing priorities too, like getting a computer that is free of binary blobs and proprietary software.

                                                                                                                                                                      I certainly don’t pay a ‘surveillance-enabling company in a police state’ to send anything over the internet. I pay an ISP for internet access, but I don’t live in a police state and as far as I know my ISP doesn’t enable surveillance.

                                                                                                                                                                      In the same way that I think it’s perfectly reasonable for someone to say ‘I can’t afford to be vegan’ even though being vegan is morally important, I think it’s perfectly acceptable to say ‘I can’t afford to buy ethically produced clothes’. Plus there’s significant evidence that manufacturing things in third world countries has improving their living standards and wages considerably.

                                                                                                                                                                      Where to we draw the line on how our consumption and contribution harms or helps others? And do you regularly do that for every product and service you buy? Most of them?

                                                                                                                                                                      I like to have an idea, at least, of what goes into the things I buy, yes. It’s hard to do it with absolutely everything though, because there’s just so much different stuff.

                                                                                                                                                                      Have you been active in government on laws, treaties, court cases, etc? The stuff that stops things like you describe.

                                                                                                                                                                      That’s absolutely ridiculous. You do not have to be a member of government to have a political view. You do not have to negotiate an international treaty to have a political view. You do not have to sue someone to have a political view. Your standards are ridiculous.

                                                                                                                                                                      Or just some quick, social signaling on Lobsters getting feel-good points?

                                                                                                                                                                      Discussing important issues is not ‘virtue signalling’.

                                                                                                                                                                      If you care, I encourage you to put time into legal reform or bootstrapping alternatives to each of the things I mentioned. Maybe make for better opportunities for immigrants in whatever your country is, too. Maybe host some coding bootcamps or something for those in the slums. What you’re doing here is adding to the noise but not helping Trump’s victims or your country’s immigrants in any way.

                                                                                                                                                                      This has nothing to do with immigrants and everything to do with Palantir being a company that operates in an unethical manner. It’s a surveillance company. There’s absolutely nothing problematic about a company producing software on contract for a government that has immigration policies. The issue is that Trump’s policies are violating human rights in how they’re enforcing those laws.

                                                                                                                                                                      You don’t solve this problem by creating ‘coding bootcamps’ for immigrants LOL.

                                                                                                                                                                    4. 4

                                                                                                                                                                      I guess it may be possible to work at a seedy company and still do good stuff.

                                                                                                                                                                      Regardless, thanks for releasing this as free software.

                                                                                                                                                                      Every field of endeavor is welcome here. Every field of endeavor is welcome here for technical discussion, free of (without expectation of) moralizing, guilt, or shame.

                                                                                                                                                                      1. 2

                                                                                                                                                                        I personally already draw the line at technology coming from uber for ethical reasons, so I will not touch palantir things at all. Thanks for bringing that up!

                                                                                                                                                                      1. 3

                                                                                                                                                                        Apropos of nothing, that Lynx image is styled using my code from 1996. Almost certainly the most used and successful code I’ve written unless the cookie jar handling is still mine too.

                                                                                                                                                                        1. 7

                                                                                                                                                                          The top priority is speed.

                                                                                                                                                                          For me, the top priority is “doesn’t thrash the CPU, cause my laptop to heat up, and shag my battery” which Firefox is exceptionally good at. But since there’s no other option if you want a portable browser, I’m stuck with it.

                                                                                                                                                                          1. 4

                                                                                                                                                                            If somebody says “I think that Angersock is mean to everybody”, that’s a pure statement of their opinion, and that cannot be incorrect.

                                                                                                                                                                            Opinions cannot be incorrect insofar as they’re opinions, sure, but the beliefs behind those opinions can be provably incorrect.

                                                                                                                                                                            “I think that climate change is an Illuminati conspiracy” might well be their opinion but what they believe is provably incorrect. How to handle this situation?

                                                                                                                                                                            1. 4

                                                                                                                                                                              You can politely point out that there is no evidence to support that belief, or you can just ignore it. I mean, people believe silly things…no need to take up space trying to fix everybody.

                                                                                                                                                                            1. 6

                                                                                                                                                                              Today I learned that downvoting a comment requires you to pick a category. I guess I’ve never tried to do that here before.

                                                                                                                                                                              The comment provided as an example is the first comment I tried to downvote here on Lobste.rs…

                                                                                                                                                                              And indeed, none of the available categories fit.

                                                                                                                                                                              If there was a ‘destructive’ category, I’d pick that one. Meanwhile, I’ll use ‘troll’, which is clearly not correct. AFAIK.

                                                                                                                                                                              [EDIT: uh-oh, it looks as if I’ve committed a “me-too”!]

                                                                                                                                                                              1. 5

                                                                                                                                                                                I only learned that downvotes require a category today as well. And I was pleasantly surprised both because I realized that I haven’t needed to downvote a comment here before, and because I really like that lobste.rs requires a reason for a downvote. I feel like your comment had value beyond just a me-too, so you’re fine :)

                                                                                                                                                                                1. 6

                                                                                                                                                                                  Interestingly, gave me an opportunity to upvote that comment. Don’t know why someone’s personal feelings, which is what they are describing there should be less valid because of the color of their skin. I thought that was what we were all striving for.

                                                                                                                                                                                  1. 4

                                                                                                                                                                                    People reading that comment who missed the thread might not know it was very context-sensitive. Remember that the context (OP) is specific people pushing a specific set of political views on everyone asking that all disagreement be censored. They say they benefit minorities but wont allow them to have a say if they have different beliefs. Coraline et al are uncompromising in that the options are (a) agree with them pushing same things or (b) shut up and leave every public space they take over.

                                                                                                                                                                                    With that backdrop, I read the various Github articles and the OP. She constantly talked about extreme negative reactions she got as if it’s incidental to being a minority. She was a minority, did some work, and piles of hate emerged. She never mentions when doing so that she aggresively evangelizes, insults, and coerces FOSS projects usually with a pile of likeminded people behind her. I kept bringing that behavior up since I think her showing up at people’s doorsteps insulting them and telling them to do her bidding in their projects might be why people dont like her. That pisses all types of people off here in the Mid-South, including minorities. Consistently. I imagine some in other areas, too.

                                                                                                                                                                                    Anyway, in the thread you linked, my main comment on that article was judged by site as follows:

                                                                                                                                                                                    +73 yes -4 incorrect -1 off-topic -8 troll

                                                                                                                                                                                    It means the main post got overwhelming support esp considering how few upvotes I normally get. The others were peripheral supporting it as part of a larger debate. Anyone trying to judge the linked one should probably look at OP and first comment to get context:

                                                                                                                                                                                    https://lobste.rs/s/js3pbv/antisocial_coding_my_year_at_github#c_h8znxo

                                                                                                                                                                                    Im just a political moderate calling out hypocrisy/deceit of an article’s source (i.e. source integrity) and protecting right to dissent as usual. I do it on all topics. Even my favorites on occasion. On political ones, people tend to have strong emotional reactions that clouds judgment or just evokes strong reactions. Im not saying whose right or wrong so much as disagreement they take personally, get disgusted/angry, and will hit any button to make that person or post disappear.

                                                                                                                                                                                    I think I warned of that in either linked thread or Community Standards discussion. Both then and now, people started calling out others that should disappear with often opposite views of what should be allowed. There was no consensus except against comments that are blatantly harmful where there is a consensus by most peeple that it’s abusive. The same thing I see play out in person every day. So, I oppose comment deletions or bans in political situations without consensus so long as people keep it civil and about specific claims with supporting evidence. And if one side can speak, the other parties better be able to as well.

                                                                                                                                                                                    And a minimum of politics on Lobsters period! Keep it focused on tech and such. Somone had to post something by a decietful activist on politics pushing a mix of truth and propaganda. And that hit my mental button of calling them out staying as civil and factual as I could despite knowing with every word I might be censored for it. Might. The upvotes from my first comment were reason I kept taking the risk of more argument given there was a surge of dissent that needed to be represented. Not just me. I always help the underdogs. :)

                                                                                                                                                                                    Note: That was long as we were just talking about but I wanted context and intent clear given it’s about whether to filter or ban me. I also hold no grudges against anyone who did. It’s their deeply-held, personal beliefs about what’s right and wrong. People will do what you believe is necessary there.

                                                                                                                                                                                    Note 2: Lunch break is over. Darn. I was hoping for tech over politics. Ill do what’s necessary, though, since I value and respect this community. Gotta defend dissent as it’s critical.

                                                                                                                                                                                    1. 3

                                                                                                                                                                                      While I disagree with your positions on the topic of the OP, that’s not really what I wanted to bring attention to in this thread. And, as you correctly point out, the longer post you had there does contribute to the discussion. This is why I specifically linked only to that one comment, because that is the only one I feel is not contributing, constructive, or otherwise meaningful as a part of the larger thread. Under no circumstances do I think any of what happened in that thread is cause for banning or deletion; on that, we are in complete agreement. What I wanted to highlight in this topic is that we should have a way of discouraging comments that are solely inflammatory without carrying other value, and I believe that particular one was of that kind. I did not downvote your other posts despite disagreeing with them, because (as also mentioned elsewhere in this thread), I do not think disagreement should be a reason for downvoting. We can have a whole different discussion about how politics and tech mix, but that does not belong in this thread.

                                                                                                                                                                                      1. 3

                                                                                                                                                                                        This is why I specifically linked only to that one comment, because that is the only one I feel is not contributing, constructive, or otherwise meaningful as a part of the larger thread. Under no circumstances do I think any of what happened in that thread is cause for banning or deletion; on that, we are in complete agreement.

                                                                                                                                                                                        Well, my respect just went up for you quite a bit. Very reasonable position far as critiques go. The selected comment was lower info than the other one and maybe even unnecessary. Likely because it was part of a back and forth on politics where comment quality on all sides (including my own) tend to get lower as it goes on. One of reasons I don’t like political discussions in low-noise sites like Lobsters. They also can have less info since more of the specific points and context is already defined where the replies start just implying that stuff with less info content in general. That one was some combination of those.

                                                                                                                                                                                        In any case, I appreciate you clarifying your position. I at least get why you’d want to see less of that kind of comment than the main one.

                                                                                                                                                                                        1. 4

                                                                                                                                                                                          I’m glad we’ve found common ground. As I’ve said elsewhere (this thread is getting pretty large), I don’t want to see downvotes used as a way to signal disagreement, nor do I want them to be used to “punish” a particular user or otherwise label the user as bad. Downvotes to me are a way of signaling that a particular comment is unwanted, along with the reason why, nothing more, nothing less.

                                                                                                                                                                                          1. 1

                                                                                                                                                                                            I’m fine with that as long as there’s a consensus across majority of community’s users. That’s really all I ask with these sorts of things even though I’m biased toward free speech or low censorship. Your proposal isn’t a big risk to that esp given it’s mostly a tech-focused forum.

                                                                                                                                                                                    2. 1

                                                                                                                                                                                      alynpost’s suggestion meets my needs and I withdraw my support for a new category.

                                                                                                                                                                                    1. 31

                                                                                                                                                                                      This post has everything

                                                                                                                                                                                      1. Opinionated UX decisions
                                                                                                                                                                                      2. Publicly trashing a main project maintainer for something happened 10+ years ago
                                                                                                                                                                                      3. PS we’re hiring
                                                                                                                                                                                      4. yet another git wrapper that pretends to be easier to use based on 1.
                                                                                                                                                                                      1. 19

                                                                                                                                                                                        I don’t think he’s trashing him. He says, “I would have done the same thing”. He’s just trying to figure out what happened. More git annotate than git blame (hey, by the way, why does git not have that alias? svn also has svn praise as another alias in this family.)

                                                                                                                                                                                        Furthermore, the proliferation of git wrappers says something. Mercurial has a lot of users too (Facebook), and guess what, they don’t write wrappers for it. They do write aliases and extensions, using hg’s established customisation mechanisms, but they don’t feel like the entire UI is so terrible that it has to be completely replaced by a different UI. There’s a reason for this – we spend a lot of time thinking in hg about how to make things consistent with itself (in our defense, a lot of the modifications that Facebook does is to make hg more consistent with git). Every time a new feature comes in a lot of time is spent naming that feature, seeing what options it should take, seeing what other similar or related features already exist and what options they use. It’s not a perfect process, and there are some small historical mistakes, but at least we have a process.

                                                                                                                                                                                        1. 1

                                                                                                                                                                                          And those of us who use Hg thank you greatly for that process.

                                                                                                                                                                                        2. 3

                                                                                                                                                                                          Has anyone made a Git equivalent of https://craphound.com/spamsolutions.txt ?

                                                                                                                                                                                          1. -5

                                                                                                                                                                                            I stopped taking the author seriously after they mentioned git’s “user experience”. Git is a tool. It is not there to be pretty or give you a good experience - it’s there to get the job done.

                                                                                                                                                                                            1. 20

                                                                                                                                                                                              Why does being “a tool” give it carte blanche to have bad UX? In fields outside of software tool ergonomics is a serious topic.

                                                                                                                                                                                              1. 9

                                                                                                                                                                                                In the tools I maintain at least, user experience is pretty far up there with one of the most important things to optimize for. (Among other things, like ease of maintenance.)

                                                                                                                                                                                                1. 6

                                                                                                                                                                                                  tools are where i most want a good user experience! that extends to the physical realm too; the experience of using a tool that is well-made, sturdy and fits well into your hand is an order of magnitude better than using a shoddy one, even if the latter gets the job done too.

                                                                                                                                                                                                  1. 3

                                                                                                                                                                                                    This effect is greatly magnified if you use the tool for a long time.

                                                                                                                                                                                                    Using a weirdly shaped hammer for 5 minutes is annoying. Using it for 8 hours is unbearable.

                                                                                                                                                                                                    Same with digital tools.

                                                                                                                                                                                                  2. 5

                                                                                                                                                                                                    This is a pretty lame response. Certainly things that get jobs done can have a decent UX. Or at least not a ridiculously confusing one.

                                                                                                                                                                                                    1. 2

                                                                                                                                                                                                      Bad UX gets in the way of using the tool effectively, it is directly related to getting the job done.

                                                                                                                                                                                                      With that said, git gets a lot of bad-rap for having a learning curve, but having a learning curve is not bad UX. Git is the damn good DVCS.