1. 10

    Given increasing evidence that organized human life might not be possible by the end of the century and possibly sooner

    Becoming desensitized to this sort of absurd alarmism is partially why so many people quickly discard legitimate, science-based warnings about the actual risks of climate change.

    1. 5

      Just git?

      I was kind of hoping that if we’re going to break the github hegemony, we might also start to reconsider git at least a little. Mercurial has so many good ideas worth spreading, like templates (DSL for formatting the output of every command), revsets (DSL for querying commits), filesets (DSL for querying files and path) and changeset evolution (meta-graph of commit rewriting).

      1. 10

        Don’t forget pijul!

        Seriously, though, I don’t think there is any “github plus something” that is going to break the github hegemony. Github won because it offered easy forking while Sourceforge was locked in a centralized model. Sourceforge won because it was so much easier than hosting your own repo + mailing list.

        The thing that will get people away from github has to have a new idea, a new use case that isn’t being met by github right now, and which hasn’t been proposed before. That means that adding hg won’t do it – not because hg is worse than git (honestly, git’s terrible, and hg is fine), but because hg’s already been an option and people aren’t using it.

        Adding email commits won’t do it, because that use case has been available for a long time (as pointed out elsewhere in these comments) and people aren’t using it.

        Until something new is brought to the table, it’s all “let’s enter a dominated market with a slight improvement over the dominant tech”, and that’s just not going to be enough.

        1. 8

          So, one thing that I would use a new contender for is being able to put my work under my own domain.

          The “new thing” here is “have your personal branding on your site” (which is clearly fairly popular given how common personal domain/sites are among developers).

          If I could CNAME code.daniel.heath.cc to your host to get my own github, I’d do it today (as long as any issues/wiki/PR state/etc remained usefully portable).

          1. 8

            That’s a really neat idea. I don’t think I can prioritize it right now but it’s definitely something I would consider implementing.

            1. 3

              I actually think that GitHub’s lack of branding and customization is a big reason for its success. When I go take a look at a new project on GitHub, I don’t have to figure out how to navigate a new site’s design, and this makes the GitHub ecosystem as a whole easier to use.

              1. 3

                I don’t mean corporate/design branding.

                I want to use my own name (and be able to move providers without breaking links).

                1. 1

                  I want to use my own name (and be able to move providers without breaking links).

                  But that will happen anyway, unless your new provider uses the same software as the old one.

                  1. 1

                    Yep - so it has to be oss too.

                    1. 1

                      That makes sense actually. sr.ht supporting the ability to use your own domain name (presumably a subdomain of your personal domain name for personal projects?) would make it really easy to migrate away from sr.ht in the future if you felt it was more cost-effective to host your own. Although I don’t know what the pricing model is intended to be.

              2. 2

                You can do that with Gitlab (or Gitea if you prefer something lightweight). Only thing is you need to take care of the hosting yourself. But I’m sure there are companies offering a one-click setup, to which you can later point your own domain.

                1. 2

                  If you host your own gitlab instance, can you fork and submit patches to a project that’s hosted on gitlab,com, as easily/seamlessly as if you were hosted there?

                  Centralization has benefits that self-hosting can’t always provide. If there were some federation which allowed self-hosting to integrate with central and other self-hosting sites, that seems like a new and interesting feature.

                  1. 5

                    Git is already federated with email - it’s specific services like GitHub which are incompatible with git’s federation model (awfully conveniently, I might add). sr.ht is going to be designed to accomodate git’s email features, both for incoming and outgoing communication, so you’ll be able to communicate easily between sr.ht instances (or sr.ht and other services like patchworks or LKML).

                    1. 2

                      As I mention earlier, though, federation by email has been available for a long time and hasn’t been used (by enough people to replace github). The (vast) majority of developers (and other repo watchers) prefer a web UI to an email UI.

                      1. 4

                        I intend to build a web UI which is driven by email underneath.

                    2. 4

                      The gitlab, gitea, and gogs developers are working on this but it’s still very much in the discussion stage at this point. https://github.com/git-federation/gitpub/

                      1. 1

                        Oh, definitely no federation. Didn’t know that federation was what he was looking for.

                        1. 2

                          I don’t know exactly what he was looking for, but It seemed like one of:

                          • hosted, centralized, but with my domain plus some branding, or
                          • self-hosted but with the features of centralization, including community, etc

                          The latter sounds to me like it would need federation.

                      2. 1

                        It’s currently awkward to run multiple domains on most OSS servers which might otherwise be suitable.

                    3. 3

                      hg isn’t really an option right now, though. There’s nowhere to host it. There’s bitbucket, and it’s kind of terrible, and they keep making it worse.

                      If you can’t even host it, people won’t even try it.

                    4. 14

                      I’m afraid you’re not going to find a sympathetic ear in sr.ht. I am deeply fond of git and deeply critical of hg.

                      The GitHug hegemony has nothing to do with its basis on git. If git were the product of GitHub, I might agree, but it’s not. If you really want to break the GitHub hegemony you should know well enough to throw your lot in with the winning tool rather than try to disrupt two things at once.

                      1. 3

                        Do you mind expanding on why you are deeply critical of mercurial?

                        1. 8

                          Perhaps some day I’ll write a blog post going into detail. The short of it is that git is more Unixy, Mercurial does extensibility the wrong way, and C is a better choice than Python (or Rust, I hear they’re working on that).

                          1. 4

                            Git IS more unixy! Using hg feels suspiciously like using a GUI and I can’t figure out why.

                            1. 4

                              because hg‘s command-line interface was “designed”, whereas git’s command-line interface “evolved” from how it was being used.

                        2. 2

                          The GitHug hegemony has nothing to do with its basis on git.

                          Exactly; it’s the other way around. Git got popular because of github.

                          Git was much worse before github made it popular. It’s bad now and difficult to use now, but it was much worse before 2008. So if you just want to get away from Github, there’s no need to stay particulary enamoured with git either.

                          And whatever criticisms you may have about hg, you have to also consider that it has good ideas (those DSLs above are great). Those ideas are worth spreading, and git for a long time has tried to absorb some of them and hasn’t succeeded.

                      1. 13

                        A person I know who was active on Twitter around 2010 said that he felt at home with the geeky culture on twitter then, and regrets the loss of that culture as twitter became more mainstream and politically relevant on an international scale. I suspect that some of the homey feeling of mastodon is this same effect - because of its newness, and lack of backing by an expansion-seeking corporation, it hasn’t attracted enough people the author doesn’t like yet. Just like Twitter in 2010.

                        This doesn’t mean that I’m anti-Mastodon. In fact, I’m strongly in favor of it, and I hope it gains more adoption as a competitor to Twitter. I’m always in favor of open, decentralized platforms that are not controlled by a profit-seeking corporation. But I’d like to see the author revisit this article in 1 or 3 or 5 years, if the same people who he thinks make Twitter a “garbage pile” are on Mastodon as well.

                        Of course one crucial difference between Twitter and Mastodon is that by design Mastodon makes it easy for communities to arise that have the power to systematically block content they don’t want to see. So maybe even in that future, the author would still feel “at home” on Mastodon, and so would the garbage pile people, and everyone would be happier than they are today.

                        1. 6

                          if the same people who he thinks make Twitter a “garbage pile” are on Mastodon as well.

                          Some of them are already on the Fediverse, if not using Mastodon. Each instance can control who it federates with, and life goes on.

                          1. 2

                            I have heard it is even better: sometimes instance A federates with B, but only for explicit subscriptions and targeted messages (not for global search etc.). In this case, communicating with both sides of the schism of the day becomes feasible even on individual-user level, not just on the instance-level.

                          2. 3

                            Of course one crucial difference between Twitter and Mastodon is that by design Mastodon makes it easy for communities to arise that have the power to systematically block content they don’t want to see. So maybe even in that future, the author would still feel “at home” on Mastodon, and so would the garbage pile people, and everyone would be happier than they are today.

                            I’m not familiar enough with Mastodon to know how this works. But if it’s as you describe above, then given the current highly-polarized state of Western democracy, we must recognize the downside of a system that would encourage people to disappear even further into the comfort of their own ideological ingroups.

                            To the extent that Twitter users are confronted with opinions they vehemently disagree with, that’s a good thing for society. (Even though it’s notoriously rare for such a disagreement on Twitter to lead to a productive conversation.)

                            1. 5

                              On the one hand it is true; on the other hand, having a global conversation seems to encourage everyone to take a side in every conflict, which drives the polarization even deeper. It is not enough to show people things they disagree with, you have to show mostly the high-quality examples of the opposing views for anything good to happen.

                              Maybe overlapping personal bubbles could provide better diffusion of ideas by avoiding indestructible walls? I am not sure this would work, I just don’t think we have any obviously-better simple options.

                          1. 3

                            I like it. There are clearly performance downsides to CGI (and does httpd support concurrent requests to a single FastCGI backend?), but I could see myself using this for a lot of real-world projects where those downsides don’t matter.

                            I think the key takeaway from this project is that while C-based CGI web applications have traditionally been a security minefield, there are now fewer mines in that field thanks to usable sandboxing mechanisms like OpenBSD’s pledge(2) and wrappers like kcgi. Developers still need to worry about vulnerabilities that could leak or change internal application state, but the application itself can be fairly well contained without dealing with containers/jails.

                            1. 3

                              As far as I can tell from browsing the source code to httpd it does not support concurrent (fastcgi multiplex) requests to a single fastcgi backend. I don’t think nginx supports this either though. For higher performance you might just need to use proxy_pass in nginx which does support concurrent requests.

                              1. 2

                                IIUC, FastCGI has no notion of flow control when multiplexing connections, which seems a little scary if you have high load.

                            1. 22

                              This reads a lot like “Kotlin is better than Java, hence better than any other language”

                              1. 12

                                I think it’s because the article has the unstated premise that you’re stuck with Java for one reason or another—because of Android, as in the author’s case, or because the codebase you’re paid to work on is already written in Java. By “whatever dumb language”, I get the feeling that he really does mean precisely Java here.

                              1. 1

                                I am reminded of the article “The Profound Weakness of the .NET OSS Ecosystem”, by a developer frustrated by the lack of .NET alternatives to certain kinds of frameworks taken for granted in the Java ecosystem (Akka in particular). I wonder whether this would change his assessment of the landscape any?

                                For my part I think this is a step in the right direction for Microsoft’s standing in the open source developer community—one of many we’ve seen them take lately.

                                1. 4

                                  Very interesting, thanks for posting this.

                                  For someone who hasn’t had the chance to read through all the documentation (yet), what are the main ways Bond differs from Protocol Buffers?

                                  1. 9

                                    Hey, OP here.

                                    The current offerings (Thrift, ProtoBuffs, Avro, etc.) tend to have similar opinions about things like schema versioning, and very different opinions about things like wire format, protocol, performance tradeoffs, etc. Bond is essentially a serialization framework that keeps the schema logic stuff the same, but making the tasks like wire format, protocol, etc., highly customizable and pluggable. The idea being that instead of deciding ProtoBuffs isn’t right for you, and tearing it down and starting Thrift from scratch, you just change the parts that you don’t like, but keep the underlying schema logic the same.

                                    In theory, this means one team can hand another team a Bond schema, and if they don’t like how it’s serialized, fine, just change the protocol, but the schema doesn’t need to.

                                    The way this works, roughly, is as follows. For most serialization systems, the workflow is: (1) you declare a schema, and (2) they generate a bunch of files with source code to de/serialize data, which you can add to a project and compile into programs that need to call functions that serialize and deserialize data.

                                    In Bond, you (1) declare a schema, and then (2) instead of generating source files, Bond will generate a de/serializer using the metaprogramming facilities of your chosen language. So customizing your serializer is a matter of using the Bond metaprogramming APIs change the de/serializer you’re generating.

                                  1. 7

                                    I like the aesthetic of pattern matching and I agree that it can make things more readable, but this article presents a false dichotomy between either pattern matching with enum type safety, or procedural languages without it.

                                    In the event that branching on the language is rewritten as a switch statement, I was surprised to find that Microsoft’s C# compiler apparently does not have any flags to enable the desired warning (at least such that I was able to find with a cursory web search). However, this isn’t a fundamental limitation of procedural languages. Take the following C99 code and compile it in GCC:


                                    You’ll get the following error message if -Werror=switch is specified (which is implied if you compile with -Wall -Werror):

                                    % gcc-4.8 -Werror=switch -o switch switch.c
                                    switch.c: In function ‘convert’:
                                    switch.c:13:2: error: enumeration value ‘GERMAN’ not handled in switch [-Werror=switch]
                                      switch (lang) {
                                    cc1: some warnings being treated as errors