mdlbear: (technonerdmonster)

If you develop software and haven't just returned from the moon, you've undoubtedly heard that GitHub is being acquired by Microsoft. Depending on your affiliations you might be spelling "being acquired by" as "selling out to". The rest of you are probably wondering what on Earth a GitHub is, and why Microsoft would want one. Let me explain.

Please note: this post isn't about my opinion of today's news. It's really too early to tell, though I may get into that a little toward the end. Instead, I'm going to explain what GitHub is, and why it matters. But first I have to explain Git.

Git is a version-control system. (Version-control systems are sometimes called "source code management" (SCM) systems. If you look closely you might even have spotted "scm" in git's URL up there at the end of the last paragraph.) Basically, a version-control system lets you record the complete history of a project, with what changes were made, who made the each change, when they changed it, and their notes about what they did and why. It doesn't have to be a software project, either. It can be recipes, photographs, books, the papers you're writing for school, or even blog entries. (Yes, I do.)

Before git, most version-control systems kept track of changes in text files (which of course is what all source code is) by recording which lines are different from the previous version. (It's usually done by a program called diff.) This was very compact, but it could also be very slow if you had to undo all the changes between two versions in order to see what the older one looked like.

Git, on the other hand, is blindingly fast in part because it works in the stupidest way possible (which is why it's called "git"). It simply takes the new version of each file that changed since the last version, zips it up, and stuffs it whole into its repository. So it takes git about the same amount of time to roll a file back two versions or two hundred.

The other thing that makes git fast is where it keeps all of its version information. Before git, most version-control systems used a centralized repository on a server somewhere. (Subversion, one of the best of these, even lets you browse the repository with a web browser.) That means that all the change information is going over a network. Git keeps its repository (these days everyone shortens that to "repo") on your local disk, right next to your working copy, in a hidden subdirectory called ".git".

Because its repo is local, and contains the entire history of your project, you don't need a network connection to use git. On the beach, in an airplane, on a boat, with a goat, it doesn't matter to git. It's de-centralized. It gets a little more complicated when more than one developer is working on a project.

Bob's been in the office all week working on a project. When his boss, Alice, comes back from the open source conference she's been at all week, all she has to do is tell git to fetch all the changes that Bob made while she was away. Git gets them directly from Bob's repo. If Alice didn't make any changes, that's called a "fast-forward" merge -- git just takes the changes that Bob made, copies those files into Alice's repo, updates her working tree, and it's done.

It's a little trickier if Alice had time to make some changes, too. Now Alice has to merge the two sets of changes, and then let Bob pull the merged files onto his computer. By the way, a "pull" is just a fetch followed by a merge, but it's so common that git has a shorthand way of doing it. (I'm oversimplifying here, but this isn't the time to go into the difference between merge and rebase. It's also not a good time to talk about branches -- maybe some other week.) As you can imagine, this gets out of hand pretty quickly, and it's even worse if there's a whole team working on the project.

The obvious thing to do is for the group to have one repo on a server somewhere that has what everyone agrees is the definitive set of files on it. Bob pushes his changes to the server, and when Alice tries to push her changes, git balks and gives her an error message. Now it's Alice's responsibility to make any necessary fixes and push them to the server. Actually, in a real team, Alice would send her proposed changes around by making a diff and sending email to the other team members to review, and not actually push her changes until someone approves them.

In a large team, this is kind of a hub-and-spokes arrangement. You can see where this is going, right?

GitHub is a company that provides a place for people and projects to put shared git repositories where other people can see them, clone them, and contribute to them. GitHub has become wildly popular, because it's a great place to share software. If you have an open-source software project, putting a public repo on GitHub is the most effective way to reach developers. It's so popular that Google and Microsoft shut down their own code-hosting sites (Google Code and CodePlex respectively) and moved to GitHub. Microsoft, it turns out, is GitHub's biggest contributor.

Putting a public repository on GitHub is free. If you want to set up private repositories, GitHub will charge you for it, and if your company wants to put a clone of GitHub on its own private servers they can buy GitHub Enterprise, but if your software is free, so's your space on GitHub.

That's a bit of a problem, because the software that runs GitHub is not free. That means that they need a steady stream of income to pay their in-house developers, because they're not going to get any help from the open-source developer community. GitHub lost $66 million in 2016, and doesn't really have a sustainable business model that would make them attractive to investors. They needed to get acquired, or they had a real risk of going under. And when a service based on proprietary software goes under, all of their customers have a big problem. But their users? Heh.

Everybody knows the old adage, "if you're getting a service for free you're not the customer, you're the product." That's especially true for companies like Google and Facebook, which sell their users' eyeballs to advertisers. It's a lot less true for a company whose users can leave any time they want, painlessly, taking all their data and their readers with them. I'm sure most of my readers here on Dreamwidth remember what happened to Livejournal when they got bought by the Russians. Well, GitHub is being bought by Microsoft. It's not entirely clear which is worse.

GitHub has an even worse problem than Livejournal did, because "cross-posting" is basically the way git works. There's a company called GitLab that looks a lot like GitHub, except that their core software -- the stuff that wraps a slick web interface around a git repository -- is open source. (They do sell extensions, but most projects aren't going to need them.) If you want to set up your own private GitLab site, it's free, and you can do it in ten minutes with a one-line command. If you find bugs, you can fix them yourself. You'll find a couple of great quotes from their blog at the end of the notes, but the bottom line is that 100,000 repositories have moved from GitHub to GitLab in the last 24 hours.

And once you've moved a project to GitLab, you don't have to worry about what happens to it, because the open-source core of it will continue to be maintained by its community. That's what happened when a company called Netscape went belly-up: Mozilla Firefox is still around and doing fine. And if the fact that GitLab is for profit is a problem for you, there's Apache Allura, gitolite3, gitbucket, and gitweb (to name a few). Go for it!

 

This so wasn't what I was planning to write today.

Notes:
  @ Microsoft Reportedly Acquires GitHub | Linux Journal
    The article ends with a list of alternatives:
    Gitea
    Apache Allura
    GitBucket: A Git platform
    GitLab
  @ Microsoft acquires GitHub for $7.5 billion - TFiR
    " According to reports, GitHub lost over $66 millions in 2016. At the same time
      GitLab, a fully open source and decentralized service is gaining momentum, giving
      users a fully open source alternative. "
  @ Microsoft to acquire GitHub for $7.5 billion | Stories official press release
  @ Microsoft + GitHub = Empowering Developers - The Official Microsoft Blog
  @ A bright future for GitHub | The GitHub Blog
  @ Congratulations GitHub on the acquisition by Microsoft | GitLab
    " While we admire what's been done, our strategy differs in two key areas. First,
      instead of integrating multiple tools together, we believe a single application,
      built from the ground up to support the entire DevOps lifecycle is a better
      experience leading to a faster cycle time. Second, it’s important to us that the
      core of our product always remain open source itself as well. "
  @ GitLab Ultimate and Gold now free for education and open source | GitLab 
    " It has been a crazy 24 hours for GitLab. More than 2,000 people tweeted about
      #movingtogitlab. We imported over 100,000 repositories, and we've seen a 7x increase
      in orders. We went live on Bloomberg TV. And on top of that, Apple announced an
      Xcode integration with GitLab. "

Another fine post from The Computer Curmudgeon.

mdlbear: blue fractal bear with text "since 2002" (Default)

This post covers most of my week-long vacation, so while it's not quite time for a wrap-up of my goals, I can say that I met about half of them. Which was about what I expected.

The big accomplishment for the week, without a doubt, was posting my one-line Linux setup/configuration package up on GitHub. (I then spent much of the rest of the week debugging and tweaking, but that's also to be expected.) It's called Honu, after the Hawaiian name for the green sea turtle, because a turtle carries its home around with it. The README starts off with this quote from my song, Windward, because I just couldn't resist:

Where the wind takes us next year no turtle can tell
But we'll still be at home, come high water or hell,
Because home is wherever you carry your shell.

The implied puns on $HOME and sh(1) are, of course, entirely intentional.

Honu is meant to be fairly general; it's expected that any user -- including me! -- is going to want to customize the heck out of it. To that end, there's a sample customization package, also on GitHub, called Myrtle. Of course. (My own customization package, which you will not find on GitHub, is called Mathilda, after LookingGlass Folk's name for the narrator of "Windward".)

It hasn't been all roses and rainbows, however. I've spent an inordinate amount of time coping with the bindweed (morning glory's evil twin) that has overgrown the walkway along the south side of the house, sorting a year or two's worth of mail, and recovering from last week's disk crash on the server. I've been doing quite a lot of writing, though a lot of that has been on Quora, so I'm not sure whether that counts toward my daily writing goal, or away from it.

I'll say one thing for Quora, though -- it makes me appreciate my own knowledge and social skills. Being able to answer questions is a real boost to my self-confidence in both those areas. Who knew?

Psychologically, well, ... mixed. I've definitely been less stressed out the last two days of the week than the first two -- I was able to handle a trip downtown that turned out to be a total write-off, due to things being closed/not where I expected, quite calmly and even with a little wry humor. The check from last week's stock sale arrived on Tuesday, which helped. On the other hand, it still apparently doesn't take much frustration to put me back over the edge.

I was a total wreck on Sunday. I seem to handle stress a lot better when I'm by myself. With Colleen around, especially, I get into a horrible feedback loop. By the time I got home I could probably have used an Ativan, but my prescription on those has long since expired. I settled for reading and gin. Low blood sugar may have contributed; I'm not sure I can tell the difference between anxiety and hunger. Alexithymia in action.

I am not ready to go back to work tomorrow. I may never be ready. I'll do it, but it won't be pretty. Notes & links, as usual )

mdlbear: (tsunami)

If yesterday is going to be typical of this vacation (I'm taking all of the coming week off), I'm going to need a month or two of work to recover from it. Not fun.

Friday Nova, my main server, developed a corrupted root partition. I've been keeping an eye on that drive for a while, and had a replacement on hand, so I set up a transfer of the home and data partitions and went to bed. So far, so good.

Yesterday was another matter entirely. Installing a new copy of Debian should only have taken an hour or so. Hah! Instead, I was plagued by a long series of problems, which took me pretty much the entire day to finally analyze. These included:

  1. A corrupted download of the Debian installer. It appeared to work ok, but the keys on the right-hand side of the keyboard kept generating the wrong characters! WTF?
  2. Apparently the idiot Intel motherboard I used for my server won't let you change the boot order of your hard disks (despite having a BIOS option that claims to do exactly that), and it considers a USB key to be a hard disk. So if you have a hard drive that doesn't already have a bootable OS on it, it will keep the damned thing from booting.
  3. Snowflake, the box I've been using for a desktop apparently has a similar problem.

I eventually ended up using the only other working spare system, Trantor, to install Ubuntu. I then swapped the disk into the former Snowflake, which is significantly faster and quieter than either Trantor or the Atom board I'd been using for Nova, so that's a win. I also decided, since I now had Ubuntu on Nova, and it was the fastest machine I had, that I would use it as my desktop as well as my fileserver. There are some potential problems with that, but I have to admit that it's convenient.

It will probably take me a while to get everything on (Novo) Nova configured -- I still need to start doing backups, for example, and don't have a web server up yet -- but at least I have DNS and my main file store up and running. But there was a lot of frustration involved.

The frustration made me more susceptible to other sources of stress, so sure enough, that happened too. Kat and Rabbit are in the process of moving out into their own apartment (finally!), so they brought movers in to handle the bed, the futon, and some other large furniture. Which meant taking the seats off the stairlifts.

And, of course, Colleen woke up and walked down the first flight of stairs before calling for help. I hastily put the seat back on the lower lift, and told Colleen (not exactly calmly -- I was pretty stressed at that point) that she should have gone back to the room, sat down, and called for help.

Then the lower lift wouldn't go back up to its charging position. It was already pretty badly damaged from previous moving attempts; it turned out that the limit switch that detects whether the seat is turned properly had finally broken to the point of unusability. Its little cam follower had been crumpled up from previous clumsy seat replacements. There ensued a frantic search for my multimeter (and a hasty battery replacement) so that I could identify the normally-closed contacts on the switch and move the connectors to them.

At that point I went back to my struggles with the computers. Just as I was getting things pretty stable there, Colleen went up to bed. Or tried to: the bottom lift didn't want to go up. Again. More swearing. More switches to reconnect. A quick trip to Google to look up error code E6, which turned out to be the bottom limit switch. Which hadn't given us any trouble up to that point.

... by that time I was a complete wreck. My stress level was not helped by being worried sick -- literally, by that point -- about the fact that the check from my stock sale still hasn't showed up. And berating myself about not being persistent enough to figure out from Morgan Stanley's miserable website how to do a direct transfer.

The one good thing about all this is that I tend to wake up around 4:30 when I'm stressed. When I feel as though I don't have enough time to get everything done, it helps.

It's been a long month. September is fired. Notes & links, as usual )

mdlbear: blue fractal bear with text "since 2002" (Default)

Moderately productive. Two "publishing events".

  1. Sex and the Single Link is up on my "formal" website, Stephen.Savitzky.net. This is, despite the clickbait title, an article about the joy of singly-linked lists.
  2. MakeStuff is up on GitHub. This the first of several projects I intend to put up there; it's the collection of makefiles and scripts that powers all my websites. You can see it in action here.

Apart from that, and a bunch of Quora answers, not a whole lot going on. One my Quora answers led to a good discussion on the comment thread. Fairly prodctive at work, though as usual not quite as much as I wanted to be.

One particularly interesting article for the programmers in the audience, Developer Differences: Makers vs Menders, which seems to describe me fairly well.

Also of note, the first episode of the Lesbian Historic Motif Project Podcast: Ordinary Women by Heather Rose Jones ([livejournal.com profile] hrj on LJ) is up.

Notes & links, as usual )

Most Popular Tags

Syndicate

RSS Atom

Style Credit

Page generated 2025-06-07 07:48 pm
Powered by Dreamwidth Studios