GitHub and my open source life
medium.com
medium.com
However, I cannot work on Github. In my opinion, the Pull-Request mechanism is weak because it fails to address a major point: It's highly improbable that I accept the PR on the first try. There's going to be a lot of back and forth discussion, reviews, remarks, etc.
Standard PRs I deal with on Github usually end up with several redundant commits. When I ask people politely to rebase all the commits they're sending into one, most don't know how to do it. (It's okay not to know. It's weird when someone with several contributions per day never had to do it before). If I `git commit --amend`, my PR is actually overwritten and I lose the history of the first patch I've sent.
I started disliking working with Github ever since I started working on OpenStack. The process to send a patch there might seem a bit daunting at first, but it's really not that complicated. Using Gerrit (https://code.google.com/p/gerrit/) for code review has many advantage, like limiting your patch to one commit, keeping a detailed log history of successive patch sets, and generally making reviewing more inviting. On top of that, the whole suite of tests is ran against each submitted patch in a virtually never resting CI server.
And finally, I don't find Github's Pull Request that "easy, simple and fast". My workflow with OpenStack is a lot faster. 1 command:
$ git review
A colleague of mine says it a lot better than I do: http://julien.danjou.info/blog/2013/rant-about-github-pull-r...If I recall correctly, Linus Torvalds went on a highly publicized rant against Github PRs not that long ago.
I'm not arguing that every Open Source project should have a complete QA infrastructure, and Github is a great place to deal with your first Pull Requests. However, I do argue that you can very quickly reach the limit of what Github can give to you in terms of collaborative tools.
My rule of thumb: If you have more than 10 contributors, at least 4 of which are active daily, it may be worth it to invest in some real infrastructure.
The value of PRs and other models is that they degrade more gracefully to lack of experience/discipline, and (perhaps) to casual involvement (subscribing to mailing lists with delivery turned off is fine as long as there is a convention to Cc people that are likely interested in a specific change; not many people know about subscribe-without-delivery).
PRs are also issues, and I vastly prefer GitHub issues to mailing lists (to each his own, I guess).
Later, how well does search find the 100-message design discussion starting on a commit in a PR that was later amended and then rejected? And what if you move the repository elsewhere?
> $ git review
I actually wrote a bash script with the same name and a few other shortcuts before my company started working on OpenStack. I was quite pleased with the workflow I provided the team I was on.
$ git start <new-branch> <branch-from>
$ <do work as normal>
$ git review
$ git finish # removes the branch
These three commands along with the git-flow branching model[1] (but not the tool itself), leads to clean, sensible history in my opinion.I respect that Github tries to maintain a low-barrier of entry to increase use and ease, but I believe there's a way to maintain it while still having a great patch-review model.
0: http://jenkins-ci.org/ 1: http://nvie.com/posts/a-successful-git-branching-model/
That said, I do like pull requests: you might lose the history locally, but the PR contains a 'see outdated diff' that shows what it used to look like.
In the end, what I've ended up doing is using Travis CI with its GitHub hook, which gives the whole suite of tests against each and every patch, as well as using external code review (mostly using Critic (https://github.com/jensl/critic), which supports explicitly rebasing branches, collapsing reviews into all pending commits, and so on, all gracefully — unlike GitHub's code review).
While I'd like something better, the issues it throws up (not using the default code review system most obviously) as well as — as you say — the complexity of submitting a PR, are, in my opinion, outweighed by the extra contributions that are got by using something other developers are already comfortable with.
Very easy solution to this problem. 1) Make note of it in CONTRIBUTING.md. 2) Do it for them. Check out their branch, rebase/squash/fix whitespace/etc and merge.
I have mixed feelings about the idea that all contributions should be squashed. I see the attempt at fastidiousness, but I also think that git makes it very easy and reasonable to keep multi-change history while linking it to only one commit in the eventual target repository.
I do wish it was easier to rebase a branch such that backmerges were pulled out where possible, cleaning up the graph at least, but I tend to look at my soup branch (master, usually) with git log --first-parent most of the time anyways and that's not much different from if they'd been squashed.
Disclaimer: I'm the creator of GitSense. We are working on a solution to make GitHub pull requests enterprise ready.
I do agree that GitHub's pull request model is not quite enterprise ready, but they have a solid foundation that you can build on top of. With their API, were able to build a solution that I believe will address most of its short comings.
For example, my first concern with GitHub's pull request system, is it is at the repository level. With Gerrit, you can see requests at the branch level. With our enhancements you'll be able to track pull requests from different repositories at the branch level:
http://screenshots.gitsense.com/enterprising-github-pulls.ht...
We are also able to address the concern of dealing with new commits. With our Smart Attributes technology, it is very easy to flag what commits you have reviewed.
http://screenshots.gitsense.com/enterprising-github-pulls.ht...
And then refine the list so you'll only have to deal with the newer commits.
http://screenshots.gitsense.com/enterprising-github-pulls.ht...
We also take care of the problem of not having a side by side diff. With our solution, you'll be able to use side by side diffs to review pull requests.
http://screenshots.gitsense.com/enterprising-github-pulls.ht...
One of the cool things is that deploying code on Github forces you to make at least some sort of effort of documenting it (a README, generally) and cleaning it up a bit to be reusable. It has helped me reuse my own code, because of that.
It improves code quality, makes friends, helps people and drives work. Sharing is a worthwhile business activity.
It would be amazing to see a site that pairs experienced
developers (especially women developers) with less-
experienced women to sherpa them into contributing to
open source.
Is there really a need to give women special treatment or help when it comes to open source development? Wouldn't that reinforce the (unbased) idea that there's a disparity between genders in tech? Or is there?But let me speak more generally.
Sometimes it seems like some people have a very "logical" way of looking at ideas. It's like every idea is interpreted according to some metaphysical schema and judged by whether or not it's conceptually harmonious and untainted.
In this case, the schema is "equality," which ironically means that any concrete idea that addresses disparity is prematurely judged as faulty or tainted.
It's stunningly obvious that the open source community is dominated by males, even if it's not more so than the programming community at large. This is a matter of statistics, it's not complicated. This paper http://jitm.ubalt.edu/XXI-4/article3.pdf cites a figure of 1.5% OSS developers being women, which doesn't seem entirely implausible.
This simple statistical fact should mean that some women who do want to pursue an interest or career doing open source work might indeed have use for the kind of thing we're discussing. So why not?
There IS a disparity between genders in tech. This is so obvious. Why on earth would you call this an unbased idea?
That there is a disparity doesn't mean that there is an "essential" or "necessary" disparity. It just means that at this point in human history, women are extremely underrepresented in this particular section. In that situation, it seems more than appropriate to set up various measures to support diverse engagement.
There are plenty of people in the world (not all of them men) who think that women should not be in education, should only be child carers, should not talk over men, etc, so if you just take the approach that you personally will be completely unbiased, then while you are not adding to that problem, you are also not doing much to assuage it.
Neutrality is all very well, but it often takes a lot more than neutrality to get somewhere if a lot of society is pushing back the other way from where you would like to get to.
If they want more women in order to get more diversity in the field, why are they so deeply entrenched in and identify so strongly with a specific subculture? Is the goal really to have a diverse array of people in the field? Or is it to get yet another "I'm such a nerd!", only with different genitals?
Where do I do that?
>There are valid justifications for both
I didn't mean to imply that there wasn't.
It's just the smug business-only outlook from some developers I find weird.
Not everyone has to adhere to your philosophy. You license your code for me to use, that's your prerogative. Don't complain when people don't give anything back.
Most don't; let's face it, Open Source does not lead to a strong business. Proprietary software makes money hand over fist in comparison.
This is what they want you to believe.
Darwin 1.4.1 is the UNIX-based, open-source foundation of Mac OS X. It is based on FreeBSD and Mach 3.0 technologies and provides protected memory and pre-emptive multitasking. This release corresponds to the release of Mac OS X 10.1."
Except if her creativity and ingenuity are expressed in her writing style. Otherwise, it's just used as a buzzword.
Which would also mean that the term "hacking text" in this context is itself a bit of a hack.
...
edit - I went for a look at old uses of the word hack as it pertains to writing and found that there is another variation in meaning, that of "hack words".
Here it is in use from the 1858 periodical, "The Ladies' Companion", in a passage that as chance would have it is discussing the creative usage of words -
"Of the influence which German literature Jean Paul and others has had on Carlyle enough has been said elsewhere. This influence certainly shows itself markedly in his style though by no means detracting from its originality.
It has given to him a somewhat burdensome richness of compound words and a few unfamiliar derivations. He is fond of seizing upon the primary meaning of a word and bringing out that meaning forcibly by contrast and repetition. He introduces innovations of foreign words to a great extent and not unfrequently uses simple ones in an obsolete or new sense.
These may be looked upon as faults but it will be found that his foreign introductions are mostly from languages which form the basis of English having an affinity to accepted English words and that they invariably have a peculiar significance which could not have been given by more common expressions. His obsolete or new senses too show generally an evident reason for their adoption.
He is fond of hack words - a kind of slang of the day; for instance, "sham", "jargon", "gigmanity". He uses such words as watchwords of the time wherein he writes, as bearing in them a nineteenth century view of things."
from here - http://books.google.co.uk/books?id=gLIRAAAAYAAJ&dq=%22hack%2...