I'm increasingly thinking that the biggest competitor we have isn't other forum software (who aren't innovating), but Github.
Our startup ( http://microco.sm/ ) is working on improving communities, which most people read as vBulletin, phpBB, Discourse... but my view is simply that if you have a group of people together around some interest (topic, locality, project) that they want to communicate, share, transact at every level.
And that, the fragmented experience of going to Google Maps, Facebook Events or Eventbrite, Wikipedia, review sites, eBay, etc... just to bring the last 5% into a community... well that's frustrating and a poor user experience.
Instead the first 60-80% of the functionality elsewhere should just be in the tool. Where the community already is.
And we're starting with forums and going outward, in every direction (it feels). And here is github, starting with the code, and also heading outward, in every direction.
I've a great deal of love for Github (as a dev, how could I not)... so I wish them well. They're solving things from a dev/work perspective, and we're aiming at consumers/users/hobbies/interests... but still, I've no doubt that we've a lot to learn from them, and when we're up to speed perhaps we can teach them a thing or two.
People forget this, but even though git was developed for programming version control, there isn't a lot that makes it useful strictly for programming only.
Git is a powerful version control and collaboration system for any plain text (or maybe even binary) files.
There's nothing special about programmers that makes it so they are the only ones that can learn about these tools and use them. With something like TortoiseGit (or Github's app) I can totally see people you would never expect start taking advantage of this.
Authors, mathematicians, research agents, cartographers, government agents (all those legal documents need version control badly), lawyers, etc.
As the world trusts computers with more and more of their files, they might start picking up the tools that programmers have held so dear.
Torvalds, in classic Unix hacker fashion, designed git to be so stupid it doesn't care what it's being used for, which goes quite a long way to making it all things to all people.
Similar is how the Linux filesystem code flatly refuses to care about what encoding scheme filenames use as long as the byte 0x2F (ASCII '/') is only used to separate pathname components, the byte sequences 0x2E (".") and 0x2E 0x2E ("..") appearing alone in a component are special, and the byte 0x00 (ASCII nul) is only used to terminate the entire pathname. The kernel is so stupid it only sees byte sequences and only cares about those specific values and sequences; as a direct result, users can use any character encoding which guarantees those values will only be used for their respective purposes, and rely on easily-configurable applications to sort it out.
Here's Torvalds, Viro, and Ts'o chewing out someone who thought the kernel should enforce UTF-8 file and directory names:
I thought ".." was a hardlink to the parent directory created when a directory was created? Hence the kernel doesn't actually have to treat ".." as anything special, since, due to hardlinks, "it'll all work out"?
I think the point is that the character encoding scheme can't use "." or ".." for its own purposes because they already have meaning due to filesystem conventions.
I suggested the City of Chicago use Github because it is the only place to put open data that both (a) allows contributions back to the dataset (pull requests) and (b) allows for community feedback (issues and comments).
It's by no means ideal (the building footprints dataset is hidden behind a 2GB compressed JSON blob) but it's still useful and a step in the right direction.
It's still aimed squarely at developers using the data, though. Asking a "normal citizen" to submit a pull request is still a pretty big ask.
However it seems the UI has changed, and the only way I could find to use it was to manually construct the URL.
I'd love for someone to show me some obvious UI I've missed. Diffing is really fundamental for a VCS. I'd much rather Github cleaned up the UI for existing features than added these little flourishes that I can't imagine even 1% of users use.
The main way to get to the compare view is from the branches page:
1. View the branches page: https://github.com/github/markup/branches
2. Click the "Compare" button next to a branch.
3. On the following page there’s a control at the top where you can change the comparison range to compare any branch, tag, or SHA with any other.
that illustrates where side by side becomes a requirement for me. Yeah I can make sense of things with a unified view but the side by side really makes things more obvious.
Unfortunately I don't show you how to switch to the side by side view. To do this, you just click on the view toggle button at the top left corner of the diff window.
Github lets you see the diff for a single commit on their site. This makes sense, because you can use this information to take action on their site, by either approving or denying the pull request.
The only use case for commit-commit diffs that I can think of, though, is if you plan on manually merging them and resolving conflicts, which you cannot do on Github (to my knowledge). There exist many graphical and command-line utilities that you can run on your machine, the same place you will be making those changes.
To me, Github's two jobs are to host reposiitories, and to make it easy to find and view the repositories of others. They do both of these jobs very well, and this map plugin makes Github better at the second in at least some cases. Once it comes time to actually start changing things, though, I get off of Github, and work on the local copy I have with the tools on my machine. Replicating this functionality isn't, to me, what Github is for.
As an aside, if there is a way to manually construct a url, there's a shortcut to getting Github to add it to the UI. A few months ago, someone made a JavaScript bookmarklet to add a search bar to any repository, since the UI for this functionality was so clunky. Because of its popularity, Github added a proper repository-specific search bar.
My site (an AGPL project) tracks a history of versions it has been built with (commit hash plus diff against that commit). "What changed between this version and the last" is the link I want in that feed.
I am curious if anyone has any insight as to what GitHub's strategy is with this move?
It seems that they are steadily tracking towards a browser-based cloud IDE. GitHub also seems to be a popular choice for devs hosting their blogs. I wonder if they're hoping to be a more all-round app hosting service?
The recent Inc. article [1] about GitHub isn't really deep but the end has some insights:
a shift is taking place: "Now we are finding that it's not just about the code; it's about, 'Hey, I want to work on this with you.' That's really eye-opening to us and gets everyone here superexcited. Working with someone else is just an awesome part of being alive. Creating art, creating tools, creating documents, doing homework, anything--it's not limited to programming. I don't see why musicians wouldn't want to work this way, for example."
Take that, and now consider how much a forward-thinking city could do with its data as GitHub adds features like this. I don't think it's about being just an IDE/app hosting service ... it's (eventually) about collaboration/control/revisioning beyond purely software projects.
This reminds me of trying to determine the scope of your company.
I remember reading somewhere (probably here) that part of the reason the railroads failed to adapt to cars was because they thought of themselves as railroad companies instead of transportation companies. Maybe github is thinking of themselves as a collaborative work company rather than a collaborative coding company and trying to adapt to that.
I know you're just trying to make a metaphorical comparison with railroads, but the story isn't that simple.
In the U.S., intercity railroads found they could make more money by focusing on freight and leaving passengers to poor Amtrak. If Warren Buffet's acquisition of BNSF is any indication, the private railroads are quite profitable.
The decline of intracity passenger rail in the U.S. has many causes (massive public investment in the Interstate highway system for one). Still, it's worth remembering that auto companies played an active role in acquiring and disassembling streetcar lines: http://en.wikipedia.org/wiki/General_Motors_streetcar_conspi...
And your comment reminded of something similar with Coke. At some point they decided that they weren't competing with other soda manufacturers but for "share of stomach" and started going in that direction by going on an acquisition spree.
Github doesn't have any central direction at all (people are more or less allowed to work on whatever they like), and this is a side-effect: the boring stuff doesn't get worked on, and the fun stuff (like, say, rendering 3d models, or a CLI in the header) gets lots of attention.
I think Github is probably vulnerable to a team that stays focused on the bread-and-butter tools that are actually important to developers.
Can this be a vision that is totally disruptive, not now but but 5 (or 10) years in the future?
It looks like GitHub is looking at allowing collaborations between knowledge domains. Within their blog post, it said "People are already using GitHub to store everything from Chicago zipcodes to community radio stations to historic hurricane paths, and we can't wait to see what the community will begin to collaborate on next."
So I am guessing that GitHub is putting a few small services that folks could use with the collaborations. Mapping services is one of them, another could be public transport information services. I think it all depends on what kind of data are being held in GitHub.
Now, if this collaboration idea is spun off to someone like to DropBox where there are truck loads of data in there, we could see some interesting things.
I second the call for supporting books. There are already quite a few books being published on GitHub and it seems like an almost natural way to collaboratively write a book that could forever kept up to date. Not sure if anything has been done specifically to support writing a book on GitHub.
I'm a grad student who writes lots of papers in LaTeX with collaborators. We use git most of the time, but git works most painlessly when you tweak it to ignore whitespace and to use word diffs. For example, let's say that my collaborator says "oh, I pushed a new diff" and now I'm curious what he added. Running:
git pull && git log -p -w --color-words
lets me see exactly which words he added/removed/changed ignoring the fact that he changed all my tabs to spaces in that commit.
Also, if I have a conflict, it's also nicer to use a specialized tool to merge than relying on git's linewise merges.
I imagine github could incorporate some of these tools too.
> I imagine github could incorporate some of these tools too.
GitHub allows you to ignore whitespace in diffs by appending _?w=1_ to the URL [1]. They should make this more obvious with a button in the diff interface.
Thanks for the tip. I'm working on a short non-technical book so I'm hoping to do it in Markdown following the format of The Little MongoDb Book. That book is hosted on GitHub with the Markdown text output to PDF, mobi and ePub. Seems like the simplest way to get to a pretty nice looking book in the major formats.
I think its really expanding its collaborative focus as it moves from purely coding to "Projects with code". Code itself is (or should be) inherently readable. A great deal of data that code deals with, like GIS data, isn't.
I'd love to know where these ideas come from. All the way from the top? Product? Developers with a 20% time window? They've always been innovative and despite size/growth/scale seem to be able to keep that up.
We like to call it 100% time. Work on what you're interested in.
In this case, Ben — who handles a lot of our outreach to government agencies — knew that GeoJSON is something that could be a big deal for open data in government, so he built the feature. There's not much more to it than that.
GeoJSON is an entirely different type of data. "columns" and "rows" aren't a useful way to think about it; you have to talk about points and closed polygons and their associated metadata instead.
It's more organic than you think. Employees want to see something, so they sell others on and work on it themselves if they can. If they can sell others to help, eventually it can ship. If not, then it atrophies and gets killed before it makes it out to the public.
The downside of this seems to be that it discourages users from using the superior format TopoJSON by Mike Bostock, as it outputs in plain .json: https://github.com/mbostock/topojson.
Since GitHub is starting to feel Emacs-like, why not go fully in this direction? Add a "dotfile" repository for everyone to manage their own client-side JavaScript extensions for Github that would be loaded by default. And then let people collaborate, share and create extensions and "configurations". Want a better map? Fork the official one and modify it. And then let others fork from you.
This would make scripting attacks really hard to defend against. They could use something along the lines of Caja, but it's a really hard problem in general (and one they're worrying about, given the gh-pages move to a separate domain)
One could question, who would want maps on github? Sometimes one cannot know what something can be used to until being able to actually use it, that should be the whole point on technology.
A lot of folks from the GIS community. As mentioned in the blog post, people will already storing this data on GitHub, now it's simply presented in a nicer fashion :)
And as you mentioned, sometimes just providing the tools empowers the community to do to do amazing things.
Well they have a file system(git), now they add ways to interact with data, up until they create a fullblown operating system. Something that Google is already onto with ChromeOS.
Cool stuff - had not heard about the 3D rendering linked in the article either. These are not trivial features to implement or maintain and seem to have a somewhat narrow audience. GitHub has such an amazing team and the core functionality seems pretty complete. I wonder if the "ship code" ethic and loose management structure (both of which I think are great) will inevitably lead to a bloated, feature overloaded product eventually. This has happened so very often in the past to others. So far they have been pretty good at closing down unused features.
This is really cool! However, I would be remiss to not mention that I would love for Github to focus more on Git. I have been using git for about two years, but I am far, far, far from being a git ninja. I suspect that I am not alone based on what I see at stackoverflow with questions tagged "git."
What if they spent their time improving:
1. Github Pulls - Have you seen the hoops one needs to jump through to submit a single-commit pull request? One needs to be extra careful about the workflow.
2. Let me determine the Project/Repo language - How many repos do you have that are labeled Javascript when its really a Python, Ruby or something else Project? Not critical, but seems really silly that I have to wade into the src to determine something like base lang.
3. Make git, itself, more intuitive - Surely if they can add the crazy cool features they've added, making the management of git repos DEAD simple should be a priority. Look at the questions tagged with "git" on stackoverflow and see how many you could devine an answer from using github.
4. Git fast forward - Could github provide an way to see what is going to happen to a repo when issuing git commands? All these cool visualizations online and we have to experiment with git locally seems a bit odd.
Free idea; Gitfiddle. See what your crazy ass commands will do to your repo before you spend the next 4 hours figuring out why you didn't want to do that.
Ie. Find the merge base between your branch and master: ‘git merge-base master yourbranch’
Assuming you’ve already committed your changes, rebased your commit onto the merge base, then create a new branch:
git rebase –onto <basecommit> HEAD~1 HEAD
git checkout -b my-new-branch
Checkout your ruggedisation branch, and remove the commit you just rebased: ‘git reset –hard HEAD~1′
Merge your new branch back into ruggedisation: ‘git merge my-new-branch’
Checkout master (‘git checkout master’), merge your new branch in (‘git merge my-new-branch’), and check it works when merged, then remove the merge (‘git reset –hard HEAD~1′).
Push your new branch (‘git push origin my-new-branch’) and log a pull request.
> Free idea; Gitfiddle. See what your crazy ass commands will do to your repo before you spend the next 4 hours figuring out why you didn't want to do that.
It's really hard to screw things up that badly with git, you can nearly always go back using $ git reflog and $ git reset --hard .
The truth; Git is hard. My opinion, I want to write code and keep it somewhere. I'm not a professional developer and I want to contribute to open source in my free time. That means git || hub, generally. It would be awesome for Github to make git exploration from the browser easier. Yes, I pay github every month and I am happy to do it.
Agree that the git command-line API is harder than it ought to be. My comment was meant to help git beginners that are afraid of exploring for fear of wasting many hours fixing their mistakes; you should consider learning the commands to undo your mistakes before learning other crazy commands.
How do you learn to fix a mistake before you make one? You may have a weak notion of what you need to do... but you don't know until it happens and have a need to git dirty. Further, In my opinion of course, these features are great... but someone is going to make git easy while retaining its power. Git is a nacent technology and while Github is dominating now... there is always room for disruption. They, the people who make git easy, will be the winners. Don't make me think.
How about; they add a text field, I add the project lang and they can run the machine learning against my (human) input? That would solve my problem and make the classifier better, no? When every file in the main dir of the project is *.py and the repo says JavaScript... something is wrong. Further, you may have a JS heavy application that is powered by Python|Ruby... should that project be called JavaScript? It certainly would not run without Python|Ruby on its own.
Yeah, esp. #2 bugs me SO much. I wish if in a multi-language project, JS would at least be "only 0.1 priority" or something for GitHub when guessing languages.
Even cooler would be if they showed the 2-4 top languages in a repo (depending on screen space), but again preferably with JS/CSS only counting at 10% or something..
Hmm, on Firefox 23.0a2 I just see a white box with nothing there. Usually this means an addon is interfering somehow. But I turned off AdBlock, Ghostery, HTTPS Everywhere, Flashblock and Greasemonkey, which is basically everything, and reloaded, and still nothing. Anyone else?
A little UI feedback if anybody from GitHub is listening:
When you click and hold to move the map, and you scroll the mouse all the way off the map, the map acts like you are continuing to hold the mouse button down, even if you let go of the mouse button. When you return the mouse to the map, it acts like the button is still pressed and the map sticks to the pointer...for which you have to click again to get out.
This is unexpected behavior, especially if you are trying to scroll through more than one screen with repetitive mouse drags. The map scrolling should maintain the same behavior of the mouse button hold even if you scroll off the map.
I look forward to the day when git is the defacto way to collaborate, and I'm so happy to see that GitHub is leading the way forward. This kind of stuff is great!
Our startup ( http://microco.sm/ ) is working on improving communities, which most people read as vBulletin, phpBB, Discourse... but my view is simply that if you have a group of people together around some interest (topic, locality, project) that they want to communicate, share, transact at every level.
And that, the fragmented experience of going to Google Maps, Facebook Events or Eventbrite, Wikipedia, review sites, eBay, etc... just to bring the last 5% into a community... well that's frustrating and a poor user experience.
Instead the first 60-80% of the functionality elsewhere should just be in the tool. Where the community already is.
And we're starting with forums and going outward, in every direction (it feels). And here is github, starting with the code, and also heading outward, in every direction.
I've a great deal of love for Github (as a dev, how could I not)... so I wish them well. They're solving things from a dev/work perspective, and we're aiming at consumers/users/hobbies/interests... but still, I've no doubt that we've a lot to learn from them, and when we're up to speed perhaps we can teach them a thing or two.