1.  

    Just makes me wonder how many people use mercurial at there company?

    Edit: from company I mean at work.

    1.  

      Which company? Octobus? As per their website, there are only 2 people, and Pierre-Yves David (“marmoute”) is a well know core Mercurial contributor. The company itself is about providing commercial support for Mercurial, along with other stuff like Python contracting.

      1.  

        I think mercurial definitely has a niche in a corporate space. It’s easier to train new people on than git, scales better for monorepo setups, is more easily extensivle via python, and allows richer customization.

        1.  

          It’s easier to train new people on than git

          I am curious about this – while mercurial definitely has less initial surface area and a far more consistent way of interacting. It also tends to have lots of customizations that add a lot of complexity right back in – and mix and match them in ways that are often unique per mercurial setup.

          Git while far uglier, also has more training resources both professional and free. Additionally, while git is far less consistent in terms of interaction, to a far large degree once you know it – you know it. You are unlikely to go to a site where git has lots of customizations making it behave different than the “git” you used at your last organization.

          1.  

            Well you pretty much summed it up :) Mercurial is nicer/easier to use, but Git has more resources out there. I think at that point one being better than the other for a particular person or team will then depend less on the pros/cons of each tool, and more on the person/team’s mindset/culture/available support/etc.

            I’d add that Git having more resources, while helpful, is as much a proof of its success as a symptom of one of its main problems. Having to look up help pages and other tutorial pages on a regular basis becomes tedious quickly, and they still need to fix the core problem (they can’t quite fix the broken CLI at this point, but I did note several helpful messages being added to the output in the last few versions, so there’s progress).

            Finally, yeah Mercurial has a problem with the amount of customization they force on user because of their very strict backwards compatibility guarantees (resulting in a good portion of new features being turned off by default). This tends to be mitigated by the fact that teams will generally provide a central .hgrc that sets up good defaults for their codebase. Also, Mercurial extensions almost never change Mercurial’s behaviour (evolve is an outlier there but is still considered “experimental”) – they just add to it, so I’ve never come across (so far) any Mercurial resource that was potentially invalidated by an extension (feel free to point to counter-examples!).

            1.  

              I suspect my issue might be more in my head (and my unique experience) than in reality. I have contracted with lots of git shops – and a fair number of mercurial ones. Most of the git shops worked very similarly, they differed in master dev versus feature branch dev, mono-repo or multi-repo – but they all felt similar and I could use very minor changes to my workflow to integrate with them, which is great for contracting.

              Each mercurial shop has been a wild adventure in unique workflow, and brand new extensions I have never seen or used. One used TWO different sub-repo extensions, another one used THREE configuration extensions! On top of that, most of them had annoying/wonky authentication mechanisms (some hand-rolled). The reason I use those examples (which is only a fraction of what I have seen) is that are all basically non-optional. I needed to use them to be able to work on the project… and of course mq versus non-mq. Never used evolve (yet).

              During the “will mercurial or git win?” – I was firmly on the mercurial side because I did work on Windows and git early on was non-function on it. But now when I hear a client is a mercurial shop, I dread it. But, I realize that is probably just my unique experience.

              1.  

                Huh, well it’s very probable I’m just not aware of all the wild things people do out there with Mercurial. I frankly had no idea there were sub-repo extensions (outside of the core subrepo feature), and I don’t know why anybody would do custom authentication when SSH works everywhere (although I understand people might want to setup ActiveDirectory for Windows-only environments instead, but that’s it). What do you mean by “configuration extensions”? As for MQ, I don’t think it matters for the central repo, no? It should only matter for local workflows?

                1.  

                  According to https://www.mercurial-scm.org/wiki/UsingExtensions – there are at least 6 sub-repo extensions. And, yes, ActiveDirectory logins, other SSO variations and then on top of those multiple ACL layers.

                  As for MQ – absolutely you can avoid it with others tools that can produce the same sort of history… rebase, graft, strip, etc. The issue being if all the “how we work” docs are written in MQ style – it is a bit of mental gymnastics to convert over.

                  1.  

                    Ah I see. And yeah I never really scrolled down past the non-core extensions :) (The only non-core extensions I have are a couple I wrote myself…)

                    1.  

                      are a couple I wrote myself…

                      you… you are part of the problem! runs scared hehe

                      1.  

                        Haha but that’s fine, I don’t think anybody besides myself are using them :)

            2.  

              Might it instead be the other way around: that customization-seeking companies are more likely to choose Mercurial? This could be either because adventurousness promotes both non-Git and customization, or because Mercurial has the better architecture when you need to customize. IIRC the latter is true for both Mozilla and Facebook. Anyway, at my second job we used vanilla Mercurial, and we did fine. It was basically the same as any Git workflow, for that matter.

              1.  

                Absolutely. Additionally, Mercurial is just more accessible in terms of customization. On top of that more than a handful of these shops had heavy Python contingents internally.

                1.  

                  Haha, yes, knowing the language certainly makes it easier to stray off the common path and into the woods of in-shop customization :-D

        2.  

          I use Mercurial at work. My company uses Git, but I use Mercurial and clone, push, and pull transparently thanks to hg-git. I’ve noticed I am generally more aware than my Git-using colleagues of recent changes to the repo, because I’ve got a pre-pull hook set up to run hg incoming (with a tweak to avoid double network talk).

        1. 1

          Interesting that he’s concerned people will attack or some how create trouble for Mastadon. Without giving up enough info to enable this of be curious as to what kind of trouble he’s worried about.

          1.  

            I would assume he’s talking about the kind of abuse you see often on Twitter (anything from randos to sockpuppets to bots to whatever). The original idea was that we’re limited to whatever moderation (or lack thereof) the Twitter HQ decides to do on their network, and on the other hand, various admins of Fediverse instances can do various amounts of moderation, so finding a “good” instance would in theory protect you better from harassment than Twitter. But the reality is that blocking/muting people might be harder on the Fediverse, where it’s harder to track the people behind the accounts, and given that instance admins have little credentials to show for, you could potentially get your data (PMs, etc.) stolen more easily than on Twitter.

          1. 1

            Sounds like a good time to finally set up my bouncer. If only there were one that had good Emacs compatibility.

            1. 4

              I just run weechat on a server and connect to the weechat relay with weechat.el. There’s a few bugs in weechat.el (e.g. nicks go out of sync) and some things missing (e.g. nick list), but that’s a small price to pay for replacing another standalone app with emacs :)

              1.  

                I did this at the beginning but quickly switched over to ZNC because of bugs like that, the inability to have per-client history rollback, and other little details… I still use Weechat half the time on the client side though :) (I also use Textual on macOS, and Palaver on iOS).

              2. 1

                Znc is what I use with erc

                1. 1

                  I’ve been trying to set this configuration up for half a year now, but I never get anything I’m satisfied with. The ZNC documentation is quite bad and confused, imo. And when I manage to set it up, even using ZNC.el it won’t work with IRCnet. Switching between multiple servers is another annoyance.

                  But maybe I’ve just messed up somewhere.

                2.  

                  I used to use znc, seemed to work just fine with ERC.

                  Now I use weechat (a bit more features, nice Android app), again with ERC. There is weechat.el, but I prefer ERC (connecting to what weechat calls an “irc relay”, instead of using the weechat protocol). I use https://gist.github.com/unhammer/dc7d31a51dc1782fd1f5f93da12484fb as helpers to connect to multiple servers.

                  1. 1

                    Ive used znc with Circe, works great

                    1. 1

                      What did you find in Circe that made it better than ERC or Rcirc?

                      1. 2

                        In case it’s useful - I used to use ERC, and I switched to Circe long enough ago that I can’t exactly remember, but I think the issue was that I wanted to connect to both freenode and an internal IRC server at the same time, and ERC made that awkward or impossible to do. It may well have improved in the last 5 years though.

                        1. 2

                          It was easy for me to setup and use so I stick with it. Never tried those other two

                    1. 3

                      IRC is great. It’s easy to implement a client for, simple enough to understand, and used pretty widely. It’s still the main protocol I use to keep in touch with people.

                      The only thing I wish that it would get is server side history, so I could scroll back in a channel without idling or setting up a bouncer.

                      1. 2

                        Early this year I finally broke down and subscribed to IRCCloud. They handle all the details of staying connected so you have access to channel history. Admittedly it works out to about 14 cents per day. Well worth it, in my opinion.

                        1.  

                          I’ve been keeping an eye on IRCCloud – I currently keep a ZNC server running… playing with it has been quite fun and instructive so far, but I would be OK paying 5$/month for someone taking care of it all. I’m waiting for them to open up a bouncer service so we can connect with other clients than their official IRCCloud client… apparently it’s on their roadmap (see bottom).

                        2. 2

                          There are people working on a revised spec called ircv3, that aims to address those issues. I haven’t been in touch with that group, so I can’t speak to their progress or success.

                          1. 2

                            I’m aware of ircv3, but I’m not aware of any proposal to add server side history to it – at least not one that’s gone anywhere. I’m sure someone cares about the other features, but they don’t really make a difference for me.

                            Edit: And I found one: https://github.com/ircv3/ircv3-specifications/pull/292

                            1. 1

                              Uh, that is interesting. Thanks for sharing! I wonder if there are already any clients and servers out there.

                              Also see this story: https://lobste.rs/s/zdkuil

                              1. 2

                                the rust irc crate aims for ircv3 support ;) (I’m trying to contribute to it (but outside of the v3 things))

                                1. 1

                                  You mean this crate? https://crates.io/crates/irc

                                  1. 1

                                    Yup.

                          1. 3

                            These days I post about IndieWeb tech, game development, static websites and other hobby web projects, and random miscellaneous stuff (since my blog also includes my microblogging). It’s here: https://ludovic.chabant.com/devblog/

                              1. 3

                                Ah nice way to apply the UNIX philosophy :) But yeah, I needed something more complicated to do stuff like uploading images, change title formatting, support filtering/tags/whatever.

                              1. 3

                                Wonder what he thinks of fossil and mercurial. The fossil author deliberately disallowed rewriting history; he makes a good case for it. At one time, Mercurial history was immutable too, but I believe this has changed.

                                I guess my point is that there are DVCS out there that satisfy his criteria; they’re just not git.

                                1. 5

                                  History can never be truly immutable so long as the data is stored on mutable media like a hard disk. Refusing to package tools that do it just makes people who need the feature find/build 3rd party tools

                                  1. 4

                                    Do you see people doing that? I mostly see people just accepting the limitations and dealing with it.

                                  2. 1

                                    The site seems down now :(

                                    About Mercurial, I believe it has always allowed rewriting history, but not by default — you have to change your configuration files to opt-in to all the “dangerous/advanced” features.

                                  1. 2

                                    You can think of the phases as totally ordered (secret → draft → public) and a commit’s phase can only move in that direction. That is, a secret commit can become either a draft or a public commit, a draft commit can become a public commit, and a public commit is “stuck” being public. (Obviously, Mercurial allows you to force a commit to any phase as well.)

                                    I hate when people say “obvious” or “obviously”. From that description it is not at all obvious to me why Mercurial allows you to force a commit to any phase. My first impression from that is, well then, that’s not much a feature if I can disregard it at any time.

                                    “Obvious” is so insulting. At best, you get some people nodding along and then a bunch of people also going “well, not sure what is obvious about that”.

                                    1. 4

                                      I personally read that more in the customer-service tone of “of course if you really want to do [X] we’re not going to stop you, so you can always force to override this” rather than in the mathematical “of course, [corollary] follows” tone, but I can see how it can be read differently.

                                      1. 1

                                        And it looks like the author changed “obviously” to “of course” now :)

                                        1. 1

                                          Having any statement like that is useless. “Of course” would make as much sense if Mercurial forbade forcing.

                                          It’s hard to stick just to the facts because interesting documentation often feels prosaic, though simply stating the way of things leads to less misunderstanding and head-scratching like “why is this of course?”

                                      2. 1

                                        That seems like a deep read with a strong reaction into one word, I think it probably says more about you than the author.

                                        1. 1

                                          I think you are being very dismissive.

                                          “Obvious”, “obviously”, and “clearly” are all problematic when writing or speaking.

                                          Best case scenario:

                                          Someone shares the same background as you do and it is obvious to them. In which case, you’ve gained nothing from the use of the word.

                                          Likely scenario:

                                          Someone doesn’t share the same background as you and it isn’t clear. For example, in this article, it is not all clear to me why you would design a system that would allow you to violate a state machine. At best here, the author did a poor job of explaining. “Obviously” here is standing in for a poor job of explaining a feature and its tradeoffs.

                                          Worst case scenario:

                                          Someone who is new to whatever the particular area is ends up feeling frustrated and gives up because they think it really should be obvious. If your goal as a writer is to teach people, you want to avoid this.


                                          Anytime I find myself reaching for “obvious” as a term I stop and think, “why do I think that is obvious” and then explain it, because, invariably it is never obvious to all the members of the audience I am trying to reach.

                                          1. 1

                                            I think your critique of the word as a poor way to explain something is good and I think I agree with and I would have upvoted you if you just tried to offer a gentle suggestion on how to communicate better. I think it’s too far to say it’s “insulting” though. Someone is just trying to explain something and they used one word you have a problem with and now it’s insulting. Just because it triggered doesn’t don’t mean the author was anything other than just not realizing they used a word that didn’t help their explanation.

                                            1. 3

                                              I read what I wrote previously and it was overly short, poorly written and assumed too much about the audience. I was committing the same sin that I was complaining about in a different fashion.

                                              1. 2

                                                Thank you for being humble and thoughtful, I wish more internet discussions could be like this.

                                      1. 2

                                        Wait until I add a signature that shows my uptime.

                                        Also, it frankly took me a minute before realizing Lobsters didn’t have a PhpBB forum. I guess I’m really old.

                                        1. 2

                                          I started with a MediaWiki instance years ago but I had 2 problems: the fact that I started wanting simpler, text-file based storage (it doesn’t scale, but it’s nicer and good enough for personal content), and the fact that I wanted support for “metadata”… stuff like “tag my ‘project’ pages and then write a query that lists those pages in an index page”, which led me to SemanticMediaWiki and a bunch of other plugins.

                                          Eventually, I started writing my own wiki engine (don’t we all?), based on text files (Markdown + some templating/front-matter/etc.), Mercurial or Git storage for revision control, some basic user permission support, etc. Similar to a bunch of other similar things, basically, but with just a few different or additional things that make it work for me. The nice thing with SCM-backed wikis is you can edit locally in your favourite editor and push to the remote repo instead of using the Web UI. Mobile editing isn’t solved though – the Web UI is responsive but it would probably be better with a dedicated app (there’s a REST API for that if I ever want to go there). Anyway, it’s called “Wikked”, see here: https://bolt80.com/wikked/

                                          One nice thing is that it’s using an SQLite cache to not work things out of the file-system all the time, which makes it scale better than I expected. See some performance tests here: https://ludovic.chabant.com/devblog/2014/04/13/wikked-performance/

                                          I don’t work on it very often because it works fine on my server, but it may require a bit of bug fixing for anybody else. For instance, I use it with a Mercurial repository, so the Git backend is probably not totally functional out of the box… ping me in this case, I’ll be glad to help!

                                          1. 1

                                            Checking back on TiddlyWiki it looks like they added a bunch of stuff like search and semantic queries, which was one of a big reasons I started writing my own engine. That’s pretty awesome!

                                          1. 9

                                            Nice. I have been thinking about this for some time now and I really think, that there should be law to make things repairable. The amount of shit that is thrown away each year is really embarrassing. It would make much more ecological sense than ban on light bulbs.

                                            1. 4

                                              Is it being thrown out that you think is a problem or some sort of environmental or economic issue? I’m not sure things being repairable is a good idea for the sake of being repairable. But I think if things are not repairable then they need to prove some minimal environmental impact. My laptop, for example, is a highly coupled piece of technology. I’m not sure making it repairable is something that I, as a consumer, want.

                                              1. 9

                                                I do. My Macbook Pro is going to be 9 years old in a couple months, and I can still use it fine (at least for web development type stuff). The reason it’s lasted that long, besides 2008 Apple building awesome laptops, is also that I was able to upgrade it (RAM upgrades and HD->SSD replacement) and “repair” it (replacing the battery a couple times, of course, but also replacing a couple cables internally that started failing). Without this, I would have maybe been able to bring it to an AppleStore a few times but the cost would have forced me to throw it away much quicker.

                                                Now if I was to look for a new laptop, I would definitely look for one that has the same level of “repairability”, which means leaving the Apple nest.

                                                1. 2

                                                  In my opinion post 2008 a lot if not most of the hardware (in particular laptops) and other kinds of consumer devices have become stripped of a lot of great things. I have a Toshiba from that year that packs everything. 5ghz wifi, bluetooth, firewire, 4xusb, hdmi, vga, serial, pcmcia, dvdrw, physical rfkill switch, webcam, esata, multimedia keys, Harman/Kardon speakers (the best ever), great quality (but low res) screen, and the type of plastic used for the case is high quality.

                                                  Nowadays it’s nothing like back then. You get a fraction of the features for twice the price, in thin plastic. Sure, more memory, better cpu and more storage but that’s aboit it. I suspect the 2008 financial crisis set things in motion - to me, that’s the year when quality dropped.

                                                  1. 2

                                                    A major reason Apple is able to make their new laptops so lightweight and portable while maintaining long battery life is the space-saving afforded by integrated components. Repairability takes space (removable panels vs structural panels, sockets vs soldering, shielded vs unshielded batteries, etc.). Most people care more about portability than repairability. Even though I place a heavier emphasis on repairability, it would be wrong to force an inferior laptop experience on everyone for the sake of a few power users.

                                                    1. 1

                                                      I’m ok with that, as long as the costs of responsible disposal are factored in, i.e. price in how much it’ll cost to disassemble and properly recycle a glued-together single-piece laptop. There is a movement in that direction, but very inconsistent at the moment, in the U.S. varying state-to-state (e.g. California and New York have stricter e-waste laws than most states, requiring up-front payment of lifecycle costs). Implementation varies even more, currently with a lot of fraud where stuff doesn’t necessarily actually get recycled, or is exported with questionable post-export controls.

                                                    2. 1

                                                      I want that, but I also like how thin/light my MBP is. Similarly I wouldn’t expect to be able to swap out the CPU for my Game Boy very easily. I imagine having a way to do that would add quite a bit of weight if you look at all the componenets

                                                      Maybe I’ve just been brainwashed, but my impression is that this is mostly an either/or situation, moreso than a smooth gradient.

                                                  2. 1

                                                    I agree, but laws are hard to get right. In eg. video panels, planned obsilescence helps fund the development. Regulating that out may give us robust black-and-whie CRTs.

                                                    Of course most crap is along the lines of kitchen appliances that are cheaper to replace than repair, in which case recycling sounds better than throwing out.

                                                    The last case is eg. not having built-in batteries, here at the fringe, where you can put your money into a Fairphone instead of an iPhone.