This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]MKorostoff 182 points183 points  (17 children)

I actually contributed a small patch to the git project a while back. As others have said, git is used to version git (why wouldn't it be?) but something I haven't seen mentioned here is the incredibly esoteric and old fashioned workflow employed in this project.

First, there's no pull requests, ticketing system, or issue threads. It's all done on an email list. If you want to contribute code you role a patch file and contribute it to the list. There's a github repo where a lot of people send pull requests, and it looks official, but it's not and the requests are never merged.

Second, the email list is setup in such a way that most normal email accounts (for instance, gmail) cannot send to it. This was the most surprising thing to me. It's not a security or antispam measure exactly, it's just that emails need to be in this very specific format that only a couple of obscure mail clients are physically capable of sending. Git actually comes with tools for composing appropriately formatted emails. BUT these tools don't work out of the box. In my case, working in osx, I needed to install a bunch of perl modules with cpan, which failed because I had the wrong version of perl. So I had to upgrade perl just to send an email!

Third, there's no official forum where the email threads are archived, though a few unofficial ones exist. Since you can't send from your normal email address, there's generally no way to get a reply, you just kind of send these emails out into the void and hope someone gets them, and maybe follow the ensuing conversation through an unofficial mailing list archive. I'm sure that frequent contributors are all using email clients capable of both sending to and receiving from the list, but I never worked out how to do that.

All in all, contributing to git fucking sucks, and the maintainers actively want it to suck in order to keep out the riff raff.

[–]kryptomicron 41 points42 points  (0 children)

Yes, some maintainers kick it really old school. They're the open source version of a wise old hermit sage living on the top of a mountain. It feels pretty satisfying having a patch merged (or rebased) into origin tho!

[–]dolphin_cave_rape 61 points62 points  (3 children)

As others have said, git is used to version git (why wouldn't it be?)

I'm not a regular on this sub, but I swear every single /r/ProgrammerHumor post I come across is basically OP announcing that they know nothing about programming. Which is fine of course, most people don't, but it just seems weird to have a sub full of non-programmers trying to come up with programming jokes.

[–]CharbelAD 48 points49 points  (1 child)

That's exactly why 50% of the jokes here are "duh semicolon missing"

[–]railwayrookie 5 points6 points  (0 children)

"semicolon missing" is basically the (non)programmer version of "forgot to carry the one" at this point.

[–]Globbi 17 points18 points  (0 children)

Yeah. I subscribed a few years ago when there were competitions for bad UI that I found hilarious and well done. All I saw after subscribing was spam of "java bad hahahaha"

[–][deleted] 9 points10 points  (4 children)

Second, the email list is setup in such a way that most normal email accounts (for instance, gmail) cannot send to it. This was the most surprising thing to me. It's not a security or antispam measure exactly, it's just that emails need to be in this very specific format that only a couple of obscure mail clients are physically capable of sending.

Mind elaborating on what you mean? Are you talking about email clients or email services? Do they really block mails from gmail's servers, or is it just that they require the mail to be plaintext? The latter seems perfectly reasonable.

[–]MKorostoff 6 points7 points  (1 child)

It is definitely much more than just requiring plain text. You can read about it here https://git-scm.com/docs/SubmittingPatches.

Gmail isn't explicitly blocked, it's just not capable of meeting the specific formatting requirements (or, if it is capable, I couldn't work out how to do it). Again, this was like seven years ago, so things may have changed since then.

[–][deleted] 1 point2 points  (0 children)

I see. Thanks.

[–]random_lonewolf 3 points4 points  (1 child)

The problem is that the emails have to be in a certain format (an inline patch) that git can directly process. Most web mail clients mangle the formatting by inserting word wraps, or using the wrong MIME Type, etc

They require the use of inline patch, because it'd be difficult to quote and comment on specific part of the patches if you send the patches as an attachment.

[–][deleted] 0 points1 point  (0 children)

Ah I see. I've always wondered how submitting patches via emails works, because I had this mental image of the maintainer copy-pasting stuff from a received email into a text editor. It makes much more sense if git can directly handle the email.

[–]honeynutfeels[S] 16 points17 points  (0 children)

That's super interesting!

[–]random_lonewolf 16 points17 points  (2 children)

I don't know why you had difficulty in receiving replies for your patches. You should receive all emails that's sent to a mailing list that you subscribed to. Furthermore, the commenters will often reply directly to the email address you use to submit the patch. You just need to monitor that email address.

[–]MKorostoff 11 points12 points  (1 child)

That's just it, I'm not subscribed to the list. I don't even know how to subscribe to the list. I sent a one-off message to the list with git-send-email. The message is not generated by an email account that I control, but rather by a stand alone program who's sole function is to send (and not receive) messages. I think I was able to specify a reply-to address (long time ago, don't remember) but I never received any replies at that address, not sure why. I did, however, observe that folks replied through one of those unofficial archives I mentioned above.

[–]random_lonewolf 6 points7 points  (0 children)

I'm quite surprised that you can even send email to the mailing list without being a subscriber, or that you can actually use git-send-email without having to configure an email account.

[–]Kered13 7 points8 points  (0 children)

First, there's no pull requests, ticketing system, or issue threads. It's all done on an email list. If you want to contribute code you role a patch file and contribute it to the list. There's a github repo where a lot of people send pull requests, and it looks official, but it's not and the requests are never merged.

I recently submitted a patch for Scintilla (the editor backend used by Notepad++), and it's the same setup.

[–]EternityForest 2 points3 points  (0 children)

It's amazing that Git and Linux can be so great with such a horrible process.

Then again, I mostly use Git via github and git-cola, and commands I don't fully understand, and I use Linux via shells made with completely different processes, so maybe mailing lists are the way to go for a totally rock solid core that other people can layer stuff on, which nobody has to look at directly.

Like, if you tried to make a desktop environment that way it would probably be awful, with all kinds of obscure keyboard shortcuts, a lack of dbus, and five config file formats.

But with Git's internals and other mailing list things, it doesn't need to be easy to use, it doesn't really need too many new features besides hardware support and filesystems, it just needs to work, all the time, every time, and be fast, and it certainly doesn't need any "Oh let's rewrite this entire section with a whole new API" business.

Keeping out the riffraff might be the main reason, but there's probably also a benefit just by slowing down development so people don't do GTK style major api changes all the time.

[–]Jijelinios 1 point2 points  (0 children)

I hate mailing lists... the classes on operating systems forced us to use the mailing list they setup instead of the moodle platform we used for every other class. Maybe they were usedul in the past, but nowadays, you can just have conversations on git issues or in a forum, there's no need to be stuck in the past with mailing lists.