1.  

    Does anybody know how to license something like this? I imagine there is a conflict between accepting contributions to your code and monetizing the game, with the revenues flowing to yourself.

    Context: I would really like to open-source my side project, while keeping the option open to monetize it later. I could see contributors getting upset about that.

    Edit: for reference, Mindustry is GPLv3

    1.  

      Most open open source licenses do not prevent you to sell the software, so this is not a problem.

      1.  

        A license which prevents you from selling the software is not, in fact, an open source license. Being able to sell the software is a base requirement a license has to meet to qualify as open source.

    1. 4

      I’ve never quite understood, but aren’t 9front releases mostly just bug-fixes? Or when was the last time a larger new feature was added.

      1. 10

        There are a whole bunch of larger features. The last release added support for the raspberry pi 4, which involved adding support for the arm64 architecture. Recently enough, there was hardware virtualization (http://man.cat-v.org/9front/1/vmx), a new VPN (http://man.cat-v.org/9front/8/tinc), transparent SSH networking (http://man.cat-v.org/9front/4/sshnet), new TTF renderer (http://man.cat-v.org/9front/2/ttf), a clone of dtrace (http://man.cat-v.org/9front/1/dtracy), and much more.

        1. 11

          Plan 9 is already more or less done. 9front just keeps up with the maintenance and provides a place for you to send your driver patch. You shouldn’t expect it to change in fundamental ways.

          1. 2

            So one shouldn’t expect them on creating a new browser or some larger application like that?

            1. 7

              If someone wants to make it, we’ll make it. I recently implemented git, although it’s not part of the base system right now.

              A browser is unlikely: Modern ones are giant. Minimal ones are incomplete. We’ve got 2 crappy ones already, and I’m not aware of anyone willing to sign up to write third, let alone chase the ever-shifting web standards to a degree that will make it more useful than mothra or abaco. My personal opinion is that we’d be better off improving and extending vmx to make running a web browser under an emulated Linux work better.

              1. 3

                but what do you expect? something like systemd, office or an ide like visual code? well plan9’s creators comes from the same team of unix so there inst a “large application” every pieces of software inside plan9 (and now 9front) fits together.

                1. 2

                  That’s the thing, since I never used Plan 9 or related applications for extended periods, I wasn’t sure what to expect. Of course the examples you list aren’t probable, but Plan 9 users aren’t aliens – they still have the same problems they wish to solve as regular users.

                  1. 2

                    this might give you some idea of where things stand, re: applications, and getting work done:

                    http://fqa.9front.org/fqa8.html

                    1. 1

                      I think you need to give a shot to know what we are talking about

                1. 1

                  As for this, I am wondering, does the Plan9 folks feel that modern touch interfaces are inferior to mice? That is are such interfaces in the horizon at some point, or are they relegated as not useful at all?

                  1. 2

                    given a choice i prefer mice. while the form factor of the desktop computer is no longer universal, the main reasons 9front lacks complex touch support are: the devs hate touchpads; touchscreen devices are multivariate, complex, and less open than their pc-like counterparts; and, most importantly, nobody has yet contributed any code.

                    for example, many years ago plan 9 was ported to the ipaq. the base system still ships with an onscreen keyboard designed for use with the ipaq’s stylus.

                    in 9front there is also support for serial wacom devices. i drew this in paint(1) on a thinkpad x61 tablet:

                    http://plan9.stanleylieber.com/paint/img/nooo.png

              1. 6
                • OS: OpenBSD or 9front
                • Editor: vim or sam
                • WM: awesome or rio
                • Terminal emulator: at
                • shell: ksh or rc
                • email: upas/acme mail
                1. 2

                  what’s wrong with acme? :-)

                  1. 2

                    What do you use sam for? I tried it a few times, but I never really understood it’s strengths, besides being an ed with a visual mode.

                    1. 2

                      Editing text, mostly. I just don’t like acme much. (Also, since I can’t edit the parent post: ‘at’ is a typo, should read ‘st’)

                      1. 1

                        There exists a vim port for plan 9.

                        https://vmsplice.net/9vim.html

                        1. 1

                          Vim on Plan 9? That’s no fun. :)

                    2. 1

                      What hardware do you run 9front on?

                      1. 2

                        Thinkpad X260, a NUC, and a cloud server from vultr. There are other systems that get netbooted at times, too. And a couple of older thinkpads that I don’t really use much any more.

                        1. 1

                          I used to run 9front in a Vultr VPS. It’s so nice that they let you upload your own ISOs; I wish more hosts allowed that.

                    1. 2

                      The Go runtime is terrible and rules out Go’s applicability to a huge set of problems.

                      1. 2

                        Do you mean the garbage collection itself, or how it implements it?

                        1. 3

                          I’m referring more to Goroutines, though garbage collection imposes similar problems. Because goroutines can switch more or less randomly (at least from the programmer’s point of view) between green threads and real threads, all programs have to deal with the problems of the latter. If it were up to me I’d never use real threads and my code would be 100x simpler for it.

                          1. 8

                            I don’t think about threads when I’m writing Go. What are the set of problems where green threads switching to system threads is undesirable?

                            1. 1

                              If a program is using just coroutines (green threads, but I’ll use the term coroutine for this) then only one coroutine is running at a time, so I can be pretty sure a sequence of instructions will be “atomic” with respect to other coroutines. With true, preemptive threading, all that goes out the window.

                              1. 2

                                I’m really confused by this exchange. One of the primary purposes of goroutines (coroutines, green threads) is to exploit the parallelism of the processor. This naturally requires synchronization for shared memory access. Are you and Drew saying you don’t care about it and don’t want to think about it?

                                1. 1

                                  If I want to exploit the parallelism of the processor, I’ll run multiple instances and have them communicate (the actor model). Shared memory, in my opinion, is evil and makes reasoning about code very hard to impossible, depending upon how extensively it’s used.

                                  1. 2

                                    Isn’t that the whole idea behind using goroutines communicating through channels rather than threads modifying global state with mutexes? You could in theory write Go code with a bunch of goroutines modifying global state, but I don’t see why you’d do that when you dislike it so much and channels are so frictionless.

                                    1. 1

                                      That’s certainly an approach, unfortunately made more difficult by all the work you have to do to get those instances to behave nicely if you want to serve (say) 10k QPS on a single port.

                                2. 1

                                  I think one key factor helping go here is that it leans so much on copy semantics. When you can avoid reference types in concurrent code (I mean, you usually want to do this in other languages too) you’re almost exclusively dealing with stack allocations and threads are a non-issue.

                                  If you’re writing code that mutates something on the heap, you need to remember to put a lock around it in go, because you don’t know what else might be fiddling with it.

                                  In python/ruby you don’t have this problem since there’s a GIL, and in rust you don’t have this problem because it won’t compile.

                            2. 2

                              Can you list a few of those problems?

                              1. 3

                                The only possible response to running out of memory is a fatal panic.

                                1. 2

                                  How much actual software does anything more constructive in that case? Heuristically, it’s so little that the Linux kernel (however controversially) doesn’t even give applications the chance—every allocation succeeds, with the OOM killer as a nuclear pressure relief valve.

                                  This is not to say that it’s not a significant failing of the Go runtime, but I doubt it’s one that “rules out Go’s applicability to a huge set of problems”.

                                  1. 3

                                    I have found it a considerable obstacle to writing reliable servers on openbsd, where memory limits actually mean something. I don’t like it when my entire web server goes down because one request happened to be a bit large. I would like that request to fail and for other to continue. Or at the very least for some finite number of requests to fail before order is restored. I can certainly write such code in C.

                            1. 31

                              Nice ad. :|

                                1. 3

                                  Also at the moment according to the pricing page, payment is optional.

                                2. 20

                                  You’re right, and how virtuous Sourcehut may or may not be doesn’t change that. The line between ad and article is a spectrum, but this seems to be pretty well into the ad side of things. I apologise, I’ll be more discerning in the future.

                                  1. 4

                                    If you crack some other good places to get the word out, I’d be interested in hearing. My online circle is pretty small (lobste.rs and HN), but I’m working on something I want to ‘advertise’ the hell out of quite soon…

                                    1. 5

                                      I’ve been trying to engage more with Reddit for this reason. I don’t really like it as a platform or see it as doing a social good, but there are users there and I’d like to be there to answer their questions. I was going to make a Twitter account, too, but they wanted my phone number and a pic of my ID and a blood sample to verify my account so I abandoned that. Finding good ways to ethically grow Sourcehut’s audience is not an entirely solved problem.

                                      1. 2

                                        The reason Twitter – and many platforms – asks for phone numbers is because spam and trolls are a persistent problem. Ban one neo-Nazi troll tweeting obscenities at some black actor for DesTROyinG WhITe SocIEtY and they’ll create a new account faster than you can say “fuck off Nazi”.

                                        Reddit is often toxic as hell by the way, so good luck with that.

                                        1. 1

                                          Huh…I have a twitter account and all I needed for it was an email. Maybe things have changed.

                                          1. 1

                                            Nowadays they let you in with just an email, but after some time “block” your account and only unblock it after you give your phone number.

                                      2. 3

                                        While I also see it as an ad, I’m interested in what it being announced as a Sourcehut user. But it seems you don’t have a RSS/Atom feed for the official blog… Or is there a mailing list I missed?

                                        1. 2

                                          https://sourcehut.org/blog/index.xml

                                          I’ve been meaning to make this more visible… hold please done.

                                      3. 15

                                        It’s advertising an open source project, Source Hut, but also Janet, Zig, Nim, Samurai, Sway and other open source projects I like. Projects that get very little payment or gratitude for the work they do.

                                        Yes sr.ht is a service too, a useful one at that. They support BSD well, unlike other companies, how else are they supposed to let people know this fact? Should they be paying largely unethical companies like google for ad space? Or should they just be more subversive so people don’t complain.

                                        Let me put it this way, if every open source project was also a business, should we hate on every single one for advertising? sr.ht didn’t game the upvotes to get on the front page, people upvoted it by themselves.

                                        I suppose there could be a tag ‘sponsored’ so people can ignore them. Not suggesting allowing lower quality from sponsored content either, probably the inverse.

                                        1. 21

                                          The issue is that I see a Sourcehut “ad” every few days: “Sourcehut supports OpenBSD”, “Sourcehut supports migrations from Bitbucket”, “Sourcehut supports ASCII”. Yeah … we got it … A lot of these posts don’t have a lot of meat to them and at this point, it’s just getting spammy.

                                          1. 16

                                            Yeah … we got it … A lot of these posts don’t have a lot of meat to them and at this point, it’s just getting spammy.

                                            They don’t always have a lot of “meat,” but posts about SourceHut represent a capitalist ideology I can actually get behind. A single proprietor, working their ass off to try to change the software world, which has gotten extremely out of hand with regards to complexity, and the marketing of products that fix the complex systems we don’t need, at all, to begin with.

                                            What’s the difference between a SourceHut post, and an post ad that complains that as an open source author I am not compensated fairly? Hint: one should be inspiration, for the other is actually possible.

                                            1. 0

                                              SourceHut represent a capitalist ideology

                                              payment for the service is optional, so no it doesn’t. All the things that make Sourcehut great in my opinion are the ways in which it denies capitalist ideology. Open Source Software, optional payments, etc.

                                              1. 3

                                                optional payments

                                                It’s optional, right now, while in Alpha. It doesn’t seem the plan is that forever. Also, if it wasn’t clear, I’m extremely in favor of this model of charging people for a service, but releasing your software under a permissive license.

                                            2. 10

                                              Just let me other another data point here. It was thanks to the “migration from Bitbucket” post that I found out Sourcehut had a nifty script to help migrations from Bitbucket and that saved hours of work as I migrated 20+ repos effortlessly. This current post made me realize that maybe I should be paying more attention to their CI system as it looks much simpler than others I’ve used. So, in the end, I’m appreciating these blog posts a lot. Yes they are related to a commercial venture but so what? You can self-host it if you’re not into SaaS outside your control. If we set a hard line like this, then it becomes impossible to post about any commercial project at all. It is already hard to monetize FOSS projects to make them sustainable, now imagine if they are not even allowed blog posts…

                                              1. 4

                                                Same here. This string of posts made me aware of sourcehut and when I had to migrate from bitbucket, I then gave them a hard eval. I like their human, non-shitty business model of “I give them money and they give me services”, and that their products are professionally executed and no-frills.

                                                I don’t know how to reconcile it. These articles were very useful to me, when most product ads weren’t and I’d be disappointed if this site became a product advert platform. I think people are right for flagging it is almost-an-ad, but in this one vendor’s case I’m glad I saw them and am now a happy sourcehut customer.

                                              2. 2

                                                every few days

                                                A lot of these posts don’t have a lot of meat to them and at this point, it’s just getting spammy.

                                                That is fair I guess. I’ll have to check the guidelines on things like that.

                                              3. 6

                                                if every open source project was also a business, should we hate on every single one for advertising?

                                                Yes. I flag those too. Advertising is a mind killer.

                                                1. 6

                                                  But there is no other way to get large numbers of people to know about something, following your advice would be suicide.

                                                  I also hate advertising, I just don’t see a way around it. I won’t argue further against banishing advertising from lobste.rs at least.

                                                  1. 7

                                                    But there is no other way to get large numbers of people to know about something, following your advice would be suicide.

                                                    All these conversations are done like it’s all or nothing. We allow politics/marketing/etc on Lobsters or… it never happens anywhere with massive damage to individuals and society. Realistically, this is a small site with few monetary opportunities for a SaaS charging as little as he does. If the goal is spreading the word, it’s best done on sites and platforms with large numbers of potential users and (especially) paying customers. Each act of spreading the word should maximize the number of people they reach for both societal impact and profit for sustainability.

                                                    Multiple rounds on Lobsters means, aside from the first announcement with much fan fare, the author sacrificed each time opportunities to reach new, larger audiences to show the same message again to the same small crowd. Repeating it here is the opposite of spreading the word. Especially since most here that like Sourcehut are probably already following it. Maybe even buying it. He’s preaching to the choir here more than most places.

                                                    Mind-killer or not, anyone talking about large-scale adoption of software, ideology, etc should be using proven tactics in the kinds of places that get those results. That’s what you were talking about, though. I figured he was just trying to show latest BSD-related progress on one of his favorite tech forums. More noise than signal simply because he was sharing excitement more than doing technical posts or focused marketing.

                                                  2. 5

                                                    Every blog post is an ad for something. It may not be a product, directly, but it’s advertising an idea, the person, or persons the idea was thought by, the writing (which, btw can be a product) of the author, etc.

                                                    If you want to sincerely flag advertising, you might as well get offline—it’s pervasive.

                                                    1. 3

                                                      It may not be a product, directly, but it’s advertising an idea

                                                      Not a native english speaker here. I may be wrong, but after looking at the dictionnary definition

                                                      advertisement

                                                      noun

                                                      A paid notice that tells people about a product or service.

                                                      it seems that an advertisement has a precise definition: an ad is directly related to a paid product, not an idea.

                                                      1. 1

                                                        it seems that an advertisement has a precise definition: an ad is directly related to a paid product, not an idea.

                                                        This is a fairly pedantic interpretation. A person promotes an idea to sell something, if even themselves. That “sale” might only come later in the form of a job offer, or support through Patreon, etc, etc.. But, to say that you can’t advertise an idea is wrong. The cigarette industry’s ad campaigns have always been about selling an image, an idea that if you smoke you become part of something bigger. Oh, and btw, you’ll probably remember the brand name, and buy that kind instead of something else.

                                                        iPods were sold on the very basis of white headphones, TO THE POINT, that people without iPods started wearing white headphones to be part of the “club.” Advertisements sell you the idea of a better life, and hopefully you’ll buy my product to get it.

                                                2. 3

                                                  Somewhat amusing that this post with an interesting fully FOSS service, is marked -29 spam, whereas an actual advertisement about Huawei making macbook clones that run Linux has only -3 spam (one of which is mine).

                                                  1. 3

                                                    Said FOSS service has been on the Lobsters front page multiple times recently. I suspect the reaction is: “We get it, sr.ht exists and SirCmpwn is apparently desperate to attract a paying customerbase, but a clickbaity title for a blogspam ad on the usual suspect’s software is probably crossing the line.”

                                                1. 40

                                                  Sorry for the grumpyness, but:

                                                  I’m getting more and more convinced that in general programmers should not try satire nor rants.

                                                  This is as bland as it gets, each argument are the cookie-cutter arguments made pro and con all the languages since their inception. There’s not a little bit of creativity and there’s not a bit of insight to be had.

                                                  You could delete it and nothing of value is lost.

                                                  I’m dead sure this article would not be spread if it weren’t published under a big name.

                                                  1. 14

                                                    Sometimes the resulting discussion is interesting. I learned my understanding of 100% pure differs from that of Haskell.

                                                    1. 16

                                                      I’m sorry you didn’t like it. I didn’t write it to “spread” it, though, I just wrote it because I wanted to. Am I not allowed such things because my blog posts frontpage on Lobsters too often? I didn’t submit this here, nor anywhere else.

                                                      And for the record, I do think that there is value in all programmers being able to briefly summarize the advantages and drawbacks of a variety of technologies like this. This kind of thinking can help steer your judgement when starting new projects, and extends past languages and into operating systems, architectures, frameworks, etc, and is an essential kind of thinking for project design.

                                                      1. 15

                                                        The curse of popularity. No fun allowed.

                                                        1. 5

                                                          I do think that there is value in all programmers being able to briefly summarize the advantages and drawbacks of a variety of technologies like this.

                                                          That’s great when you’re writing from a place of experience as you are for most of your post. The problem is the small bits where you aren’t, which you included presumably for completeness sake.

                                                          1. 1

                                                            haters gonna hate. I guess if you just put a disclaimer that it is satire and opinion.

                                                          2. 2

                                                            dead sure this article would not be spread if it weren’t published under a big name.

                                                            Not true, I wrote a similar one and it was up voted too. Hating on C++ is just lots of fun for everyone. C++ is a big boy and can handle it.

                                                            I’m getting more and more convinced that in general programmers should not try satire nor rants.

                                                            Hey, let’s not be ‘jobist’, SirCmpwn may be a dirty programmer, but he is also an entrepreneur and community manager too. Let’s not let those jobs have fun either.

                                                          1. 6

                                                            I agree with all of this, just wish he’d included Nim, D and the other “new” ones.

                                                            1. 5

                                                              Nim: neat ideas but a rather bad compiler/implementation

                                                              D: don’t know much about it but what I do know seems reasonable enough. Not sure it’s different enough from anything else to distinguish itself meaningfully

                                                              1. 5

                                                                Nim: neat ideas but a rather bad compiler/implementation

                                                                Interesting. Would you mind elaborating on what you find bad about the current implementation?

                                                                1. 13

                                                                  This is what I sent to the creator of Nim when he asked the same question:

                                                                  Hey Dominik, thanks for your patience. Let me open by reminding you that the context for this discussion is a identifying a language that’s suitable as a replacement for C for sqlite, which is a very high standard to meet. I’m sure nim is great for the niches it serves. I also have to admit that nim has gotten much better since I last gave it a critical look. The last time I looked at it, debugging with gdb was not feasible.

                                                                  The first problem with nim for debugging, especially on embedded systems, is the (huge) extra layer of indirection. Nim is much further removed from the actual behavior of your computer than C is. Remember that, especially on embedded systems, debugging is not happening at the C level but at the assembly level. The distance between C and assembly is at times already great enough to be difficult to deal with, but add to that the distance between nim and C and it becomes a serious issue. I took the example on your home page and compiled it - the generated C source is 437 lines long, full of impossible to read/remember symbol names, contains large amounts of glue code, crazy stack frame hacks, unreadable loop constructs, and several calls into the nim stdlib. To make a point, I chased down one of these stdlib entry points - copyString - and found that it was implemented in Nim. Should I ever need to debug it, too, I’ll face all of the same issues I faced understanding the generated code from my own example. Nim is also able to emit C++ or JavaScript, which (I’m making some assumptions here) tells us that its internals likely add yet another layer of indirection with some intermediate language. Given that Nim is a high level language targeting other high level languages, we can also assume that it uses a high level intermediate language, with all of the problems that can come with that.

                                                                  Also remember that on embedded systems we’re often dealing with obscure architectures. Compilers are not necessarily going to be as sophisticated as we’re used to on x86, ARM, etc. We may have to do a lot of finageling to understand the performance of our generated code and a lot of tweaking to more clearly express our intent to the compiler, a process which would be virtually impossible to tune with Nim. We may often run into compiler bugs and find ourselves diving into the generated assembly to find out more - and now there are two compilers involved. Addressing some edge case is going to be very difficult when you have to do it through Nim, and who knows if it’ll still work with arbitrary combinations of Nim versions, C compilers, and architectures.

                                                                  Nim also changes pretty frequently, as demonstrated by my surprise that so much has changed (for the better, I admit) since I last dug into it deeply. The langauge is still very much under development, and any of this low level work I put into my tuning and understanding my code today are very likely to become outdated within only a few years. C compilers on the other hand move very slowly and very conservatively, and given that the world sits on their shoulders we can expect them to work with care and attention to detail (at least in a perfect world - looking at you, gcc!). C compilers don’t compete with the same things Nim competes with. Nim has to compete with Rust, Go, Crystal - even Python and Ruby - and often liberally adds features and changes to keep up. C doesn’t have to prove itself to anyone, we’ve already built our entire empire on top of it.

                                                                  Nim also only has one implementation. There’s no competition keeping it honest and no standard to which it is held. It’s hard to characterize some behavior as a bug in the compiler or by design - and it’s hard to predict how the upstream will judge such behavior, and whether or not I can rely on some behavior to be consistent if they decide it was a bug after all.

                                                                  sqlite is 17 years old and is one of the most reliable pieces of software in the world. It runs on almost every computer in the entire world - every smart phone, every desktop PC, every laptop, every tablet, every router, most cars, digital cameras, smart fridges and toasters, home security systems, billboards on the street - within the square kilometer you’re sitting in right now there are almost certainly thousands of sqlite installations. There are more sqlite installations on this planet than human beings. The standard to which it is held is extremely high.

                                                                  Anyway, despite all of this, I rather like Nim. I wish it targetted LLVM instead of generating awful C code, but for high level users this isn’t a huge concern. It continues to have improved every time I look at it, and I’m looking forward to using it for the next project to which it’s suited. Keep up the great work!

                                                                  1. 4

                                                                    Dominik isn’t the creator of nim, but a team member iirc.

                                                                    1. 5

                                                                      Ah, my mistake. Still, same arguments apply when given to any audience.

                                                                    2. 2

                                                                      So your problem is mostly “I can’t use Nim with embedded software”?

                                                                      1. 3

                                                                        That’s the specific context in which this answer was written, but these problems are applicable in a broader context, too.

                                                                      2. 1

                                                                        Does nim have good dwarf debugging information? A lot of the friction you had with debugging assembly could be mitigated if the debugger could display the original source code and variables or could step by line.

                                                                        1. 1

                                                                          That’s an interesting point of view, thank you.

                                                                          On the other hand C isn’t a very bad assembly language, it’s widely understood with many different compilers available for almost every single machine architecture on Earth. And C interoperability is required for every serious programming language in anyway. (IIRC there was an article about that a few weeks ago on lobste.rs)

                                                                          In my opinion, writing a compiler that uses the LLVM backend is not easier. You have to learn their IR language. You have to write boilerplate for C compatibility. You have to add two massive dependencies to your project, LLVM itself and a C++ compiler… so it has serious drawbacks and I totally understand the C choice for Nim and others.

                                                                          (I’m working on a (much simpler) compiler on my spare time and I choose to generate C as well, especially because I really wish to keep it as small and as simple as possible)

                                                                      3. 5

                                                                        Any opinions on Julia?

                                                                        1. 6

                                                                          Its compiler once caused me days of headaches when doing some packaging work for Alpine. I don’t know anything else about it.

                                                                        2. 2

                                                                          D: don’t know much about it but what I do know seems reasonable enough. Not sure it’s different enough from anything else to distinguish itself meaningfully

                                                                          It has two compilers. One compiles fast like Go for rapid iterations. One sends it through LLVM for fastest performance of app. Although, a cleaner C++ that usually compiles fast seems itself worthwhile.

                                                                          1. 3

                                                                            There is also a GCC implementation as well.

                                                                      1. 2

                                                                        @SirCmpwn,

                                                                        I’m very curious, what is the platform you mentioned C has no support on?

                                                                        1. 4

                                                                          I was referring to Windows, which has C support but no sane API/environment to run it in.

                                                                          1. 2

                                                                            You mean it doesn’t support POSIX?

                                                                            1. 1

                                                                              Not if you want luxuries such as being able to open a file with non-ASCII characters, or include any system header that is newer than K&R C.

                                                                              And then there’s MSVC, which appears to be (un)maintained out of spite (Microsoft thinks C is obsolete, and works to make it so).

                                                                        1. 4

                                                                          I was pleased that Clojure escapes the downsides of the Haskell family as described in this post.

                                                                          I don’t know how rust got only one meaningful implementation and python didn’t.

                                                                          Overall I figure this post is correct. Everything is terrible but some things are better than others.

                                                                          1. 2

                                                                            Quote from the Python list of cons:

                                                                            cpython internals being available to programmers has led to an implementation monoculture.

                                                                            1. 1

                                                                              The different phrasing makes it “get away with it”. You are blaming it on programmers not choosing instead of on implementors

                                                                              Which I guess is fair.

                                                                            2. 2

                                                                              Clojure is a different beast. It’s kinda of like that Pyramid that descends on planets from Stargate the movie. An alien syntax to the java or javascript people. With npm in flames and the plebes revolting wanting to run ads, Clojure may need a backup planet soon. I mean runtime. Maybe Go. Maybe Swift.

                                                                            1. 2

                                                                              Kind of unfair on Lua. Outside of pointer arithmetic, what’s “objectively bad” about 1-based indexing? Seems almost entirely a subjective thing.

                                                                              1. 6

                                                                                With zero based indices it’s easy to slice an array in two at index i with

                                                                                first = array[0, i]
                                                                                second = array[i, array.len]
                                                                                

                                                                                With one-based indices you need to resort to inclusive ranges to pick exactly i elements in first array, which then adds a duplicate to second. So you end up with ugly i + 1 indexing everywhere.

                                                                                1. 3

                                                                                  On the other hand, with 0-based indexing the element at position i is the (i+1)-th element. For example, the 5th element is at position 6.

                                                                                2. 8
                                                                                  1. There is no “outside of pointer arithmetic”. The maintenance of your entire system, including the language runtime, is your responsibility, and from thence does complexity flow. Thus I paste into here all the pointer-based arguments for 0-indexing.
                                                                                  2. With unsigned integers and 0-indexed arrays, there is only one contiguous set of representing invalid indicies (>= len(array)), but with 1-indexed arrays zero is also invalid.
                                                                                  3. Lua is embedded, often in other programming languages, and interop with them is made more difficult for this design decision.
                                                                                  4. Least importantly, don’t rock the boat. We decided on 0-based indicies long ago, and it’s not even funny anymore to argue for 1-based indexing.
                                                                                  1. 10

                                                                                    Your list starts with 1.

                                                                                    Seriously though, I’ve been programming in Lua for 10 years now, and the 1-based indexing has never been a problem for me, and I’m saying that as someone who has programmed in C since 1991, and assembly from 1985. There are also other languages that use 1-based indexing (Fortran comes to mind, and I think the APL-like languages are also 1-indexed).

                                                                                    There are some oddities in Lua for sure, but 1-based indexing is not one of them (in my opinion).

                                                                                    1. 1

                                                                                      I think the APL-like languages are also 1-indexed).

                                                                                      I can only speak about APL itself, but actually it’s cooler than being 1 indexed. You can set Quad-IO whenever you like to either zero or one, depending on how you want to index your vectors right then. Hello matrix math without confusing the math people.

                                                                                    2. 3
                                                                                      1. For garbage-collected languages, and languages with substructural type systems, manual pointer arithmetic can be abstracted away.
                                                                                      2. For linked lists, 1-based indexing perfectly corresponds to the structure of the list (for i > 0, a[i] would be the ith element of the list, and a[0] corresponds to the terminator or empty list), and this works very well with pattern-matching clauses for total function definitions (How many bugs are created when programmers fail to consider the case of empty lists?)
                                                                                      3. Fair point
                                                                                      4. Don’t rock the boat means we can never shed outmoded practices. Also, ideas go in and out of fashion, quite often you have to go back to roots and question decisions made long ago, what were the assumptions that no longer hold true in order to go forward.

                                                                                      For many conventions we’re stuck with because they’ve become standardized, we’re paying the price in minor ways. In Physics, we have too many negative signs in equations because we decided electrons were the ones with negative charge. We also have 2 accompanying pi everywhere because the ancient Greeks figured it was easier to measure diameter than it was to measure radius. Other conventions had to change in order to go forward. Business arithmetic was pretty difficult in Roman Numerals in Florence, until Fibonacci brought Hindu-Arabic numerals, negative numbers, and double-entry bookkeeping.

                                                                                    3. 4

                                                                                      TLA+ is 1-indexed, and that’s got two nasty footguns:

                                                                                      1. list[num % Len(list)] is an error if num is a multiple of Len(list)
                                                                                      2. TLA+ starts the natural numbers at zero, so if you try to order Nat, you get list[1] = 0, list[2] = 1, list[3] = 2
                                                                                      1. 4

                                                                                        http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html has some interesting discussion on the topic.

                                                                                      1. 17

                                                                                        In my experience, a mail server is hard to set up but easy to maintain, and well worth the effort once completed.

                                                                                        1. 7

                                                                                          Completely agree. You get improved privacy and the ability to reject emails during the SMTP conversation. (What do you mean I’m subscribed to the Modbus newsletter? plonk) You also easily control your backup MXs for when your primary server goes down.

                                                                                          Trying to get support for your email in the cloud is not so easy either. I have a customer that uses Big Mailer Corp A for their email and found out of that Big Mailer Corp B marks all their emails as spam. They’ve been trying for two years to fix that one.

                                                                                          1. 2

                                                                                            Would you mind sharing what your setup looks like (if you haven’t already)? I suspect you may get a far larger volume of mail (and possibly spam too?) than most folks around here, but mainly I’m just curious what you run on what.

                                                                                            1. 6

                                                                                              I run several mail servers and between them it’s kind of a mishmash. I’ve found postfix, postgrey, and opendkim to be among the most reliable pieces from the bin. For spam I just use postgrey and DNSBLs and a manually-updated blacklist of senders.

                                                                                          1. 71

                                                                                            Here’s a script to migrate your repos to hg.sr.ht:

                                                                                            https://hg.sr.ht/~sircmpwn/invertbucket

                                                                                            1. 4

                                                                                              I like competition in general. Sometime I love watching it happen, though. :)

                                                                                              1. 6

                                                                                                hey @SirCmpwn thanks a ton for that script. Just imported 19 repos (both git and hg) into sr.ht. Some of those repos were 9 years old. : )

                                                                                                1. 3

                                                                                                  Great :)

                                                                                                2. 1

                                                                                                  I went ahead and got a subscription for Source Hut even if I may only use it as a mirror for now.

                                                                                                  I think diversity is good and would like to play more with it in the future :)

                                                                                                  1. 0

                                                                                                    I’m trying to do this migration and i’m gettin some errors related to JQ, “parse error: Invalid string: control characters from U+0000 through U+001F must be escaped at line 2, column 34”

                                                                                                    where the bug track or whatever i can report this to you for? :)

                                                                                                    1. 2

                                                                                                      Can you pull down the latest script and try again? I haven’t set up a bug tracker for this script.

                                                                                                  1. 6

                                                                                                    The number of times I’d wished I had this feature on Travis.

                                                                                                    Instead you just end up blindly pushing changes to the branch in the hope that it works :P

                                                                                                    1. 4
                                                                                                      1. 3

                                                                                                        Only on Travis-ci.com (the paid version), and not Travis-ci.org (the free version).

                                                                                                        1. 4

                                                                                                          sr.ht is also a paid service, right?

                                                                                                          1. 4

                                                                                                            It’s up to you whether to pay or run the exact same free software on your own infra.

                                                                                                            1. 2

                                                                                                              Is it easy to run on your own? That’s kind of cool. I may pay them anyway but still run it myself.

                                                                                                              1. 9

                                                                                                                https://man.sr.ht/installation.md

                                                                                                                Reach out to the mailing list if you run into trouble :)

                                                                                                                1. 1

                                                                                                                  Wow, cool! Thanks :)

                                                                                                              2. 1

                                                                                                                You can also run travis-ci.org on your own infra (I currently do this) but there isn’t a lot of info about it.

                                                                                                            2. 3

                                                                                                              The trick is that for public repos, you have to email support: https://docs.travis-ci.com/user/running-build-in-debug-mode/#enabling-debug-mode

                                                                                                              1. 1

                                                                                                                Weird… I guess that they’re trying to prevent wasted containers by adding manual process in the middle?

                                                                                                                1. 2

                                                                                                                  It’s a security risk, especially for public repos.

                                                                                                                  1. 2

                                                                                                                    Eeeek, that’s rough. builds.sr.ht’s SSH access uses the SSH keys we already have on your account for git authentication et al.

                                                                                                                    1. 1

                                                                                                                      You get that from Github, too. But I also think it doesn’t help, because GH projects are liberal with adding people to orgs/repos and while they cam be grouped, there’s no way to assign structures roles. GH as an identity provider is mediocre at best.

                                                                                                                    2. 1

                                                                                                                      Like, in terms of things which they may do in the shells, DDoSing by creating too many, etc? They use your SSH key from GitHub to prevent others from SSHing in, right?

                                                                                                                      1. 4

                                                                                                                        They use your SSH key from GitHub to prevent others from SSHing in, right?

                                                                                                                        Not AFAIR. It gives a temporary login/password in the build log (which is public). And anyone who logs in can see the unencrypted secrets (e.g. API keys used for pushing to GitHub).

                                                                                                                        1. 1

                                                                                                                          oooooooh… yipes. Super dangerous. CircleCI uses SSH keys to improve on this.

                                                                                                                2. 1

                                                                                                                  Aren’t they doing some funky reorganization to eliminate the split? I haven’t looked closely so I might be wrong.

                                                                                                                3. 2

                                                                                                                  I guess I’ve just been too cheap to pay then ;)

                                                                                                                4. 1

                                                                                                                  This feature is on Travis, but their new configuration API is so excruciatingly painful and lacking of reasonable documentation that it fails to help when it’s really needed.

                                                                                                                  1. 1

                                                                                                                    With Gitlab you can debug CI stages on your machine by starting a local Gitlab Runner.

                                                                                                                  1. 4

                                                                                                                    we keep the VM alive until you log out or until your normal build time limit has elapsed

                                                                                                                    Immediately on logout? There should be like a couple minute window after logout when you can log back in, because connections can drop, accidental Ctrl-D in the wrong window can happen, etc.

                                                                                                                    soon you’ll be just a few keystrokes away from an ARM or PowerPC shell, too

                                                                                                                    Let me guess, EC2 and IntegriCloud? :)

                                                                                                                    1. 16

                                                                                                                      Aye, I’ll improve upon this over time.

                                                                                                                      Regarding EC2 and IntegriCloud, no - sr.ht is run entirely on owned hardware in a private rack in a colocated datacenter. I don’t put your data in the hands of megacorps.

                                                                                                                      1. 2

                                                                                                                        I don’t put your data in the hands of megacorps.

                                                                                                                        I’m impressed.

                                                                                                                      2. 1

                                                                                                                        There should be like a couple minute window after logout when you can log back in, because connections can drop, accidental Ctrl-D in the wrong window can happen, etc.

                                                                                                                        Not just for this exact scenario, but you can use SSH Sockets for this purpose!

                                                                                                                        1. 1

                                                                                                                          I’ve had that enabled for years. Not sure how it would help when the TCP connection gets dropped because of network problems.

                                                                                                                        2. 1

                                                                                                                          accidental Ctrl-D in the wrong window can happen

                                                                                                                          Set IGNOREEOF and you can (mostly) avoid that problem.

                                                                                                                          1. 0

                                                                                                                            You can always rebuild there, yeah?

                                                                                                                          1. 20

                                                                                                                            Other than noting that this is basically just advertising for a new feature of sr.ht, it should probably be tagged release (since it’s a new feature) and not practices or virtualization (since it doesn’t really teach anything about virtualization).

                                                                                                                            1. 5

                                                                                                                              Sorry, I still don’t fully grok the tags on lobsters.

                                                                                                                              1. 2

                                                                                                                                No worries! Practice makes perfect. :)

                                                                                                                            1. 2

                                                                                                                              I really like this, I just can’t go to an email-based workflow. It’s not just that I find it difficult, but I’d never be able to convince everyone I collaborate with to do it. I think Drew said at some point that he would consider web-based code review, any updates on that?

                                                                                                                              1. 3

                                                                                                                                It’s a work in progress, but I still insist that people give it a fair shake, especially after writing resources like git-send-email.io to make it as painless as possible. Lately I also find it prudent to remind people that their development mail client needn’t be their only mail client.

                                                                                                                              1. 3

                                                                                                                                Drew DeVault does your comment from last year that you’re opposed to officially supporting Docker deployment of sourcehut stand? I have a homelab where I like to mess with stuff and sourcehut’s Mercurial support looks really nice, but the install steps are daunting. I assume it wouldn’t actually be too bad, but when compared to something like Gitea’s declarative deployment via Docker which took me 3 seconds to start playing with, I hesitate. Either way thanks for working on sourcehut!

                                                                                                                                p.s. how do you @-mention a user on here?

                                                                                                                                1. 12

                                                                                                                                  Yes, it stands. What also stands is the idea that if someone were to take on the role of building a third-party docker deployment for sourcehut, they would find the task reasonably easy to accomplish and I would be supportive of them, albeit insistent that it remain a third-party solution.

                                                                                                                                  Note, however, that deploying sourcehut on docker is itself not the matter discussed in the linked ticket. As for the subject of the ticket, I still have no desire to address this at this time.

                                                                                                                                  1. 1

                                                                                                                                    Reasonable stance! Perhaps I will attempt to tackle it some time (if no one else beats me to it).

                                                                                                                                    I actually don’t even understand that ticket but it came up in a google search result for “sourcehut docker.” GPU passthrough with Docker? So confused.

                                                                                                                                    1. 3

                                                                                                                                      It’s for the CI service.

                                                                                                                                  2. 4

                                                                                                                                    @altano you just type @ in front of the username and the markdown formatting does the rest

                                                                                                                                    1. 4

                                                                                                                                      how do you @-mention a user on here?

                                                                                                                                      You just prepend @ to the username: @altano

                                                                                                                                    1. 25

                                                                                                                                      With respect to email, don’t forget that pull requests were once intimidating too - as anyone who frequently works with onboarding new developers to its workflow can attest. To help make onboarding users with email easier, I wrote this tutorial:

                                                                                                                                      https://git-send-email.io

                                                                                                                                      I also wrote a rebase guide which applies to both workflows for making your changes more consistent and easier to review:

                                                                                                                                      https://git-rebase.io

                                                                                                                                      1. 26

                                                                                                                                        https://git-send-email.io

                                                                                                                                        That nicely outlines how to send patches, but I think people have far more difficulty receiving patches via email. Not everyone uses mutt, aerc, or runs a patchwork instance. Many mail clients, that people are otherwise generally fairly happy using, are just super not great at handling emailed patches. Emailed patches also generally don’t show a CI status that you can view ahead of time (I have heard of some, but I don’t ever remember seeing it firsthand in the wild).

                                                                                                                                        It’s great that it (an email patch workflow) works well with your workflows and tooling, but for some people it just… doesn’t work as well.

                                                                                                                                        1. 4

                                                                                                                                          I mean, those people who don’t have such a mail client are missing out. It’s like arguing that we should use SVN because not everyone has git installed, in my opinion. And testing your patches against SourceHut CI is pretty easy, before or after it’s sent.

                                                                                                                                          1. 26

                                                                                                                                            I think one issue is that for most of us, sending and receiving patches is a very small part of what we do with email, so choosing a mail client on that basis doesn’t make sense.

                                                                                                                                            1. 1

                                                                                                                                              But we aren’t forced to use only one mail client. I use several depending on context / the task at hand.

                                                                                                                                              1. 1

                                                                                                                                                I am curious about your multiclient workflow. Do you use multiple addresses, or use filters and one shared address? Or just all the mail in all of them?

                                                                                                                                                1. 4

                                                                                                                                                  Whether you use local maildir or imap, mail stores are designed for concurrent access. How many people check email on their phone and not their phone?

                                                                                                                                                  1. 1

                                                                                                                                                    Sure, but my question was specifically about their workflow with it.

                                                                                                                                                  2. 2

                                                                                                                                                    As it happens I do use multiple accounts for multiple “hats”, but that’s slightly orthogonal to multiple clients, which I use even for a single account. My daily driver is mutt; I use thunderbird for rare occasions when I need to see rendered html properly or perform a search (still haven’t got mairix or not much etc set up) and I often use ios mail app but mostly read only.

                                                                                                                                                    At work we use Gmail. I do check that from ios mail app too. I recently started configuring mutt to read my work mail too but it’s a work in progress so I still regularly open the Gmail website.

                                                                                                                                              2. 23

                                                                                                                                                I mean, those people who don’t have such a mail client are missing out. It’s like arguing that we should use SVN because not everyone has git installed, in my opinion.

                                                                                                                                                To me it sounds a bit more like arguing “anyone who doesn’t ride a penny-farthing to work every day is totally missing out”.
                                                                                                                                                Well…maybe.. I do find it unlikely that is going to convince very many people who weren’t already riding them, or weren’t already inclined to do so. Even if it is amazing.

                                                                                                                                                Sidenote1: I may be wrong, but it even appears that Mutt itself uses gitlab instead of email based patches. If true, I find that oddly humorous.

                                                                                                                                                Sidenote2: I have nothing against email based patch flows, and if I am going to contribute to a project, I generally contribute in whatever form a project requires (within reason). But for my own projects, I do not desire an emailed patches based workflow (EPBW), nor do I desire to run/manage/admin/moderate(remove spam) a mailing list. That’s just me though.

                                                                                                                                                1. 7

                                                                                                                                                  To me it sounds a bit more like arguing “anyone who doesn’t ride a penny-farthing to work every day is totally missing out”.

                                                                                                                                                  I don’t really like this take. Having sunk thousands of hours into the GitHub, Gerrit, and email-driven workflows, I can confidently assert that the email-driven workflow, even setting aside the many respects in which it is politically and technically superior, is simply the most efficient for both contributors and maintainers. The penny farthing comparison is unfair.

                                                                                                                                                  Sidenote1: I may be wrong, but it even appears that Mutt itself uses gitlab instead of email based patches. If true, I find the humorous.

                                                                                                                                                  Mutt uses Gitlab and mailing lists and Sourcehut, actually. The dominant avenue of contributions to mutt is through its hosted mailing list. They use Sourcehut CI, however.

                                                                                                                                                  Sidenote2: I have nothing against email based patch flows, and if I am going to contribute to a project, I generally contribute in whatever form a project requires (within reason). But for my own projects, I do not desire an emailed patches based workflow (EPBW), nor do I desire to run/manage/admin/moderate(remove spam) a mailing list. That’s just me though.

                                                                                                                                                  That’s why Sourcehut can do it for you.

                                                                                                                                                  1. 9

                                                                                                                                                    I don’t really like this take. Having sunk thousands of hours into the GitHub, Gerrit, and email-driven workflows, I can confidently assert that the email-driven workflow, even setting aside the many respects in which it is politically and technically superior, is simply the most efficient for both contributors and maintainers. The penny farthing comparison is unfair.

                                                                                                                                                    A bit of an “Ipse dixit”, but I’ll take it at face value anyway. To be clear, my comment was in response to your statement:

                                                                                                                                                    I mean, those people who don’t have such a mail client are missing out.

                                                                                                                                                    Which is what I made the comparison against. You have now pulled in other concerns in your response, and attributed them to the comment I made. I find that a bit uncharitable. I guess at this point we can just agree to disagree.

                                                                                                                                                    Mutt uses Gitlab and mailing lists and Sourcehut, actually. The dominant avenue of contributions to mutt is through its hosted mailing list. They use Sourcehut CI, however.

                                                                                                                                                    That’s odd. I looked through the last 2 months of their mutt-dev mailing list, and saw no mailed patches, but several gitlab PRs. Maybe I saw the wrong mailing list? Maybe I didn’t go back far enough? Overlooked it?
                                                                                                                                                    It doesn’t really matter, and I’ll take your word for it that they predominantly use emailed patches.

                                                                                                                                                    1. 2

                                                                                                                                                      The last 2 months have only seen one patch on Gitlab:

                                                                                                                                                      https://gitlab.com/muttmua/mutt/merge_requests?scope=all&utf8=%E2%9C%93&state=merged

                                                                                                                                                      After reviewing it myself I have to correct myself, I reckon that Gitlab and the mailing lists are at about an even pace these days.

                                                                                                                                                      1. 2

                                                                                                                                                        Do note: that was merged PRs. There were a couple of more (not many though!) in All which is what I looked at.

                                                                                                                                                2. 5

                                                                                                                                                  Not everyone is productive using such mail client. Personally, I just plainly cannot remember more than a few shortcuts, which is already a massive roadblock for effectively using CLI tools as for most of them rely on shortcuts to increase productivity, they also do not provide me with options of what I can do, and I cannot for my life remember what can I do for all the possible contexts, cause of course options on what you can do are dependent on the context which you are currently in. Some people just aren’t productive using CLI tools, and saying that they “are missing out” because they plainly cannot effectively use the tool is simply gatekeeping.

                                                                                                                                                  1. 3

                                                                                                                                                    saying that they “are missing out” because they plainly cannot effectively use the tool is simply gatekeeping.

                                                                                                                                                    This is absurd. If a mechanic decides that he “is not a ratchet person” and will only ever use open-end wrenches, then I will question his professionalism just as I would question a software developer that “is not a CLI person” and will not learn to use a CLI mail client.

                                                                                                                                                    He doesn’t need to use the CLI mail client for his day-to-day email, but he should be capable of learning how to use it to handle the occasional emailed patches.

                                                                                                                                                    1. 5

                                                                                                                                                      Or this person will work with whatever, when paid for (professionals are paid for their work by definition!), but will only work with tools he/she finds enjoyable when doing charity. Thus FLOSS projects forcing inconvenient, last century methods with arrogant communication are missing contribution.

                                                                                                                                                      I thing the FLOSS community should focus on this kind of openness more, instead of CoCs.

                                                                                                                                                      1. 3

                                                                                                                                                        Good point. For work I’ll use whatever tools get the job done, no matter how gruesome. But for FOSS contributions, I agree that if the tool is difficult or simply frustrating to use, then it may as well not exist.

                                                                                                                                                      2. 1

                                                                                                                                                        Wrong assumption. Difference between using GUI and CLI clients is not like between open-end and ratcheted wrenches. Using those wrenches is basically the same. Meanwhile the experience between using CLI and GUI mail client is a lot bigger. I’d compare it to using automatic and manual wood planes. You can work with higher precision and similar speed with manual hand plane, but most carpenters would choose automatic hand plane, as it “just works” and doesn’t require that much skill and learning to do.

                                                                                                                                                        And why should you care what kind of wrench does your car mechanic uses, if he does the job well? This isn’t a problem not using better tools, but a problem of tool abilities. The tools that an average developer uses does not represent the tools that are created for that workflow. And that is a problem.

                                                                                                                                                        1. 2

                                                                                                                                                          I’ll entertain the analogy to a wood plane, though I’m unfamiliar with the devices. You say it yourself: the manual wood plane is useful in certain circumstances but requires skill. So does the CLI mail client. Use the automatic wood plane where it fits, but at least learn the skill to use the manual wood plane where the higher precision is necessary.

                                                                                                                                                          A developer that refuses to acquire a skill is simply not professional.

                                                                                                                                                          1. 1

                                                                                                                                                            It’s not like it requires much skill. It is the basically the same skill. The difference is, you need to move the manual wood plane along the plank 10 times, while with automatic you only need to move it once and the motor does its job. Some people just don’t have the patience and/or physical stamina to use manual wood plane. Manual hand plane is in fact more configurable, and can be used in more specialized scenarios. So enthusiasts use hand planes. Your average carpenter does not.

                                                                                                                                                            1. 2

                                                                                                                                                              The analogy was not mine.

                                                                                                                                                      3. 0

                                                                                                                                                        Consider acme?

                                                                                                                                                        1. 2

                                                                                                                                                          I am unable to find such email client. And the point is, for a workflow to be usable by a wide range of people, it should require as little new tools that do the same as the ones they use. And in case of email clients, most people probably like their current email client, and they do not want to change it. So they, in turn, do not want to switch to this new workflow, which, while potentially increases productivity, requires them to switch to tools they do not like.

                                                                                                                                                          1. 4

                                                                                                                                                            acme is a text editor which can be easily coaxed into being a mail client.

                                                                                                                                                            Consider as well that you needn’t discard your daily mail client in order to adopt another. What difference does it make if some technology is backed by email or by some other protocol? Just because you already have an HTTP client (e.g. your web browser) doesn’t mean another isn’t useful (e.g. curl).

                                                                                                                                                            1. 7

                                                                                                                                                              Acme does not seem like general user friendly. My colleagues all use JetBrains IDE’s and use Thunderbird as their mail client. And acme would be a downgrade for their experience. I might use it, but they wouldn’t. If I cannot offer them a good GUI email interface, there is no way they would switch to email-based workflow.

                                                                                                                                                              1. 0

                                                                                                                                                                I was recommending acme particularly for you, given the following:

                                                                                                                                                                I just plainly cannot remember more than a few shortcuts

                                                                                                                                                                If your colleagues won’t join you I consider your colleagues to be in the wrong, not the software. A bicycle is easier to use than a car but it’s not going to get you to the other end of town in time for the movie.

                                                                                                                                                                1. 14

                                                                                                                                                                  If your colleagues won’t join you I consider your colleagues to be in the wrong, not the software.

                                                                                                                                                                  Don’t you think peace within a team is more important than any particular software or workflow? Or, to put it another way, the feelings of people are more important than any workflow, so if a large group of people reject a workflow, it’s better to conclude that the workflow is wrong for those people than to say that those people are wrong.

                                                                                                                                                                  1. 7

                                                                                                                                                                    My colleagues wouldn’t join me because the workflow is bad, but because there is no tooling suitable for them and the workflow. If tooling for a specific workflow just isn’t comfortable for me, I’m just not going to use it.

                                                                                                                                                                    1. -8

                                                                                                                                                                      Then you ought to be coding in basic. Good things often require effort.

                                                                                                                                                                      Edit: this comment seems to be being misinterpreted, so a clarification: I’m not earnestly suggesting that he should use basic. I’m extending his logic to an incorrect conclusion to demonstrate the flaw in his argument. Most languages are harder than Basic, therefore Basic is more comfortable, therefore why ever learn anything else? Obviously it doesn’t make sense.

                                                                                                                                                                      1. 18

                                                                                                                                                                        You are literally making the exact same argument that @ignaloidas’ colleagues are. The only difference is that the tooling you find suitable and the tooling they find suitable is a null set. They want to be in JetBrains’ IDEs, you want to be in email. You built tooling that demands email-based workflow because it’s what you want and then tell them they have to change; they’ve got tooling that demands GitHub (or a workalike) and then tell their colleagues that they have to change.

                                                                                                                                                                        As an aside, I pay for and generally enjoy using Sourcehut, and I respect your diehard allegiance to email, but you’ve got to quit acting like this in the threads. I get that you love an email-based workflow, and find it superior for your use cases. Having used Git and Mercurial since, what, early 2006 I guess—certainly before GitHub and Bitbucket existed—I disagree (especially when your workflow starts to involve binary assets, so most websites, games, mobile apps, and so on), but I’m also comfy in that workflow, and happy to support an SCM that fully supports that flow. But if you insist that people who do not use your workflow are wrong, and do so in this offensive manner, you’re going to start losing customers.

                                                                                                                                                                        And as an aside to that aside, you need to do what you want with Sourcehut, but the fighting against this on principles to me, as a former SCM lead, looks a bit forced: looking at this whole thread, and thinking back to a very early comment, all you’d have to do to satisfy him is to make temporary branch names that can be pulled in some mechanism based on the patch series. That’s it. It’s not trivial, but it’s also not that difficult, since you’re already doing 90% of that with the patch view. If you don’t want to do it, that’s fine, but it seems like that’d still mandate patch-accessible workflows, while also meeting the PR crowd a bit.

                                                                                                                                                                        1. 2

                                                                                                                                                                          Note about the JetBrains’ IDEs. It’s not like they are incompatible with with email driven workflow, they just have tools that are better suited for pull-request workflow. I gave JetBrains IDEs as an example of what an “average” developer as I know it uses from day to day, as it seems that many bloggers have a distorted view of “average” developer. Average developer actually doesn’t want to fiddle with settings and try 10 different variants before deciding to use one. They want tools that “just work” without massive setup. Average carpenter wants a table saw that simply does the job they want to, they do not fiddle around it to make it the best saw for them.

                                                                                                                                                                        2. 14

                                                                                                                                                                          Hi this is not a very nice tone, please try to argue in good faith.

                                                                                                                                                                          1. 13

                                                                                                                                                                            Is insulting prospective customers really the best way to grow your business?

                                                                                                                                                                            1. 0

                                                                                                                                                                              That was no insult, it was a logical extension of his logic. I didn’t mean it sincerely, I was using it to explain his error.

                                                                                                                                                                            2. 2

                                                                                                                                                                              Ok, in simpler terms. I would probably still use an SUV instead of Smart even if Smart can go through some shorter paths, because I feel cramped when driving it. Same with software. Some software is in fact more useful than other, but is harder/inconvenient to use for some than software which doesn’t have those fancy features.

                                                                                                                                                                              1. -5

                                                                                                                                                                                This isn’t such a case. This is a case where you (or your colleagues, I’m not sure at this point) are refusing to try unfamiliar things and, being ignorant of the experience, asserting it’s worse.

                                                                                                                                                                                1. 3

                                                                                                                                                                                  It is. The thing is, I have tried mutt and aerc, and the problem is that I just plainly am not comfortable using bigger CLI programs, that is, those, whose scope goes out of pipes and command line rguments. About the only programs that of such style that I can use is nano and htop, only because they have a handy shortcut guide in the bottom at all times. Acme is also not the kind of editor I would like to use casually. It is easy to blame the people that don’t use it, without understanding the reasons why they don’t use it.

                                                                                                                                                                                  1. 0

                                                                                                                                                                                    You didn’t know anything of acme not even 2 hours ago. You’ve evaluated it in that time?

                                                                                                                                                                                    Herein lies my point. I have a vision and I must at some point exercise my creative authority over the project to secure that vision. Yes, it’s different from what you’re used to. You can construct reasons to excuse this away, but I fundamentally believe that being unwilling to learn something new is the underlying problem. As evidence, I submit that there’s no way you could have given acme a fair evaluation since my suggestion of it. I don’t consider this sort of behavior acceptable cause for changing my system’s design to accomodate.

                                                                                                                                                                                    1. 12

                                                                                                                                                                                      As someone who used Acme for two years, @ignaloidas does not sound like someone for whom Acme would even be worth trying. It’s great, but incredibly dependent on how you want to use your editor. You can’t disable word wrap, or use any shortcut to move the cursor down a column, for Christ’s sake. It’s really not for everybody (perhaps not even most people).

                                                                                                                                                                    2. 2

                                                                                                                                                                      So they, in turn, do not want to switch to this new workflow, which, while potentially increases productivity, requires them to switch to tools they do not like.

                                                                                                                                                                      What happened to using the right tool for the job?

                                                                                                                                                                      1. 1

                                                                                                                                                                        The question here is not about “the right tool for the job” but about the usability of those tools for the wider audience. Currently I do not see the majority of the developers switching to email-based workflow purely because of the usability of tools. “Rockstar developers” think that CLI’s are very usable and productive, but that is not the case for the average programmer.

                                                                                                                                                                        1. 3

                                                                                                                                                                          “Rockstar developers” think that CLI’s are very usable and productive, but that is not the case for the average programmer.

                                                                                                                                                                          Good to know that we were all rockstars for decades without realizing it!

                                                                                                                                                                          This is probably just an age thing but I don’t know any professional programmers who aren’t comfortable with CLIs.

                                                                                                                                                                          1. 3

                                                                                                                                                                            There is CLI, and there is CLI application. Git is used through CLI. Vim is a CLI application. Surely you know at least one professional programmer that isn’t comfortable with Vim and alike.

                                                                                                                                                                2. 3

                                                                                                                                                                  I am not particularly experienced at using git with email. One problem I have had in the past is when I want to pull in a patchset from a mailinglist archive, where either I am not subscribed to the mailinglist, or wasn’t subscribed at the time when the patches were sent. Can these mail clients help me with this problem? (By contrast, I find it very easy to add a branch / PR as a remote and pull or cherry-pick commits that way)

                                                                                                                                                                  1. 3

                                                                                                                                                                    lists.sr.ht, the sourcehut web archive for mailing lists, has a little copy+paste command line thing you can use to import any patch (or patchset) into your local git repo. Here’s an example:

                                                                                                                                                                    https://lists.sr.ht/~sircmpwn/aerc/patches/7471

                                                                                                                                                                    On the right, expand the “how do I use this” box and a short command is given there.

                                                                                                                                                                    Integration directly with your mail client would require more development but isn’t necessarily out of the question.

                                                                                                                                                                    1. 3

                                                                                                                                                                      That’s good to see, but presumably doesn’t help for non-sourcehut mailinglists?

                                                                                                                                                                      1. 3

                                                                                                                                                                        No, I’m afraid that there are fewer good solutions for non-sourcehut mailing lists. Patchworks has a similar feature, if the list in question has that set up. You could also ask someone else for a copy of the mail. I don’t think this damns the idea, it just shows that we need better software to support the idea - which is what sourcehut tries to be.

                                                                                                                                                              2. 2

                                                                                                                                                                I am still trying to find some time to check out Sourcehut. My only concern is how to configure it to run CI builds on mailing list patches as I couldn’t find it anywhere in the docs.

                                                                                                                                                                1. 1

                                                                                                                                                                  This hasn’t been implemented yet, but it will be soon.

                                                                                                                                                                  1. 1

                                                                                                                                                                    Great. If that happens I will think about migrating some of my personal projects to the Sourcehut as it seems pretty as a pretty nice solution.

                                                                                                                                                              1. 8

                                                                                                                                                                Great ideas, but doomed to suffer forever living in an obscure github project far outside of the mainstream. I wish more people would consider contributing to upstream git - it’s open source!

                                                                                                                                                                1. 22

                                                                                                                                                                  This is called “top posting” and is strongly discouraged.

                                                                                                                                                                  This recommendation should be tempered by the golden rule of email of etiquette, which is pick a format and stick with it. The only style worse than top posting is when half of the people on a list are top posting and the other half are posting inline. This makes finding relevant information a massive pain and can confuse some email clients drastically. If the culture of your email list is to top post, then bite the bullet and do it, because trying to be the renegade will only lead to greater confusion.

                                                                                                                                                                  That being said, if you’re the first to reply or setting a new precedent, then take this as a great and powerful opportunity to make a community of better netizens.

                                                                                                                                                                  1. 3

                                                                                                                                                                    While I agree with what you wrote, I don’t get why bottom posting is encouraged? That ways the receiver first sees the quoted text, and only after scrolling down gets to read the actual content.

                                                                                                                                                                    1. 11

                                                                                                                                                                      Does this answer your question? :)

                                                                                                                                                                      While I agree with what you wrote, I don’t get why bottom posting is encouraged? That ways the receiver first sees the quoted text, and only after scrolling down gets to read the actual content.

                                                                                                                                                                      This recommendation should be tempered by the golden rule of email of etiquette, which is pick a format and stick with it. The only style worse than top posting is when half of the people on a list are top posting and the other half are posting inline. This makes finding relevant information a massive pain and can confuse some email clients drastically. If the culture of your email list is to top post, then bite the bullet and do it, because trying to be the renegade will only lead to greater confusion.

                                                                                                                                                                      That being said, if you’re the first to reply or setting a new precedent, then take this as a great and powerful opportunity to make a community of better netizens.

                                                                                                                                                                      This is called “top posting” and is strongly discouraged.

                                                                                                                                                                      Seriously though, I think it’s odd that people use bottom posting in forums like this one fluently, but find it so difficult in emails. I’m inclined to blame bad default behaviour of certain clients.

                                                                                                                                                                      1. 6

                                                                                                                                                                        Bottom posting isn’t to be used indescriminately. You should delete any text from the original message which isn’t directly relevant to what you have to say, and interleave short quotes with short responses underneath. You can also just remove the original quote entirely if it’s not necessary.

                                                                                                                                                                        1. 4

                                                                                                                                                                          Thing is, it’s just too much of a hassle for most people which is why we ended up with top posting.

                                                                                                                                                                          1. 3

                                                                                                                                                                            OK, that I also agree with. But how is that related to top/bottom posting? Seems like the thing to encourage here is selective quotes, not top/bottom posting.

                                                                                                                                                                            1. 4

                                                                                                                                                                              Bottom posting is not the opposite of top posting, despite what the name implies. The “selective quoting” style is generally known as bottom posting.

                                                                                                                                                                              1. 4

                                                                                                                                                                                Interesting, thanks for clearing that up.

                                                                                                                                                                                Bottom posting is not the opposite of top posting, despite what the name implies.

                                                                                                                                                                                This somehow reminds me of naming things. ¯_(ツ)_/¯

                                                                                                                                                                                1. 4

                                                                                                                                                                                  Here’s your missing arm back: ¯\_(ツ)_/¯

                                                                                                                                                                                  1. 3

                                                                                                                                                                                    Maybe useful: https://shru.gg/r

                                                                                                                                                                                    1. 3

                                                                                                                                                                                      Thanks for the tip! Easy to break though: “¯\_(ツ)/¯ wait, why is this italic? oh, that’s better… but now my other arm is missing :/”

                                                                                                                                                                                      1. 2

                                                                                                                                                                                        Oh hold on, do you mean that paste doesn’t work on Lobsters?

                                                                                                                                                                                        1. 3

                                                                                                                                                                                          No, you just need an extra backslash: ¯\\\_(ツ)\_/¯

                                                                                                                                                                                          1. 3

                                                                                                                                                                                            Aha, okay, I’ll add that in. Thanks! Should be fixed in ~60s.

                                                                                                                                                                                            1. 3

                                                                                                                                                                                              Oh wow! Nice, thanks.

                                                                                                                                                                                2. 3

                                                                                                                                                                                  That’s not my experience. At least in the communities I’ve participated in, bottom-posting describes the practise of not trimming the quoted mail at all, and is frowned upon.

                                                                                                                                                                                  1. 1

                                                                                                                                                                                    Interesting that this understanding varies. Might I ask which communities you’re referring to?

                                                                                                                                                                                    1. 2

                                                                                                                                                                                      In particular I think that’s the excepted interpretation in the Debian community. But from what I remember it was generally so on usenet too.