GitHub goes to school
Yesterday, GitHub announced a new initiative to help students, teachers and schools use GitHub for collaboration and sharing to provide a better learning experience for all: GitHub Education.
If you don’t already know, GitHub is a software projects hosting service – it’s a kind of social networking site for code projects. You use version control software Git on your own computer, and push your code to a repository in your account on GitHub, where it is viewed on the web and can be shared with others. If you’ve worked on a code project beyond single scripts before, you’ve probably thought about taking precautions against losing work, breaking features and maybe even encountered problems with working on a project with a friend. Git allows you to track changes in your codebase and revert back to previous states. GitHub gives you a nice clean interface in the web to help manage these changes.
The real power of GitHub lies in the ability to collaborate on projects with people around the world – and in how people can take existing code written for one purpose and take it in another direction to suit their own project.
GitHub lies at the centre of many operations at Raspberry Pi – our version of the Linux kernel, our userland and firmware source code, as well as NOOBS and raspi-config – and soon, our documentation, learning resources and more. Our version of the Linux kernel is a fork of the main Linux kernel. While diverging from the upstream for our special case additions (we make changes to suit the Raspberry Pi’s hardware), we keep in track with additions that land in the main version, and the enhancements are sent back upstream – to the original Linux kernel where they’re merged in. Imagine trying to manage this without software!
Open Source also helps our community grow stronger. It’s far from uncommon to see the makers behind Raspberry Pi projects putting their code on GitHub and sharing how they built that touchscreen timelapse controller, cat laser toy or universal translator – with accompanying documentation and instructions. Also the various general purpose libraries that get written – they’re shared, then they’re improved and expanded by others and help way more people than originally intended, such as Jason’s Piglow module, Will’s gamepad library and Dave’s picamera module. Isn’t it amazing that you can look at the code behind how these things work? You can even fix bugs or add features yourself!
As Gordon mentioned in the video interview we posted at the weekend, some USB bugs in Raspberry Pi were fixed by a keen and talented member of the community, which were sent over via Pull Requests and merged in to the main repository – he (Jonathan) was then hired to work on the engineering team at Pi Towers. This sort of important contribution, and the ability for it to take place, is invaluable in the tech community.
There’s more to open source than simply making your code public – there’s plenty to learn about communication and collaboration. Big projects like Linux and Python require people to talk to each other, work out where things are going and someone has to manage people and make decisions. There’s usually someone in charge – often referred to as the B.D.F.L. (Benevolent Dictator For Life – Linus for Linux and Guido for Python). Using GitHub in a small team on a school project will shed light on the kinds of problems that come up: you want to prevent two people doing the same work twice; your code needs to be able to interact with other people’s code; you might have different opinions on code styles or ways of solving problems; and there are various workflows people might be used to. It’s a skill to be able to communicate with others, in technology like in any other area – and technology has the advantage of awesome tools that make this more manageable.
One of my favourite tools at the moment is Waffle.io – it gives you Trello-style columns for your GitHub issues. I use it to visualise the workflow of features I intend to write, bugs I need to fix and other things I need to consider. You even have a comment thread attached to each issue, so you can discuss options (your conversations and decisions are open too). Even if I’m the only one working on a project I still use Git, GitHub and Waffle because it helps me manage myself. GitHub can be used for much more than just code; people use it for managing changes in written work such as documentation, blogs and even legal documents. One guy even used GitHub issues to manage the “bugs” (work needed doing) on his house.
Git was created by Linus Torvalds to manage changes in the Linux kernel because at the time no existing version control software worked the way he wanted. GitHub was set up in 2008 by developers in San Francisco and currently hosts more than 10 million repositories. See some organisations on GitHub: NASA, BBC TV, BBC News, The Guardian, Microsoft, GOV.UK, The White House (see Issue #3) … and GitHub.
If you want to learn how to use Git – GitHub provides a great online tool for getting started: Try Git. Git is very powerful, and has advanced features, but can be used at a basic level with very little experience. Be sure to check out GitHub Pages which is great for making a webpage for your project. Note that at present, GitHub users must be aged 13 or older.
If you’re a teacher or student, head over to education.github.com to find out more about classroom organisations, free accounts and other discounts.
We’d love to see examples of young coders and makers putting their projects on GitHub – especially its use in education. Please post links in the comments.
Good post Ben, though in the interests of vendor neutrality, I’m going to publicly note that bitbucket offers free private repos for everyone and also has an education plan https://bitbucket.org/plans. Bitbucket are awesome too!
Ben Nuttall — post author
Yeah BitBucket’s great too :)
Yup we use BitBucket for private repos (the cost of githubs no longer made sense) and it’s been great. The only big flaw it has is that you cant search through code like you can with github. Cant complain when it’s free though! :)
The “free private repos” are why I use BitBucket rather than GitHub.
Ben Nuttall — post author
Why are you using private repos?? :P
Alex Eames (RasPi.TV)
I guess if you’re writing a twitter app or something with api keys in, you might need to keep those private and make sure you only push the ‘cleaned up’ version to your public repo. :)
Either that or just be really careful not to sync the wrong files ;)
I use github for my raspicamcorder scripts, but I think I’m going to push my Pi twitter app stuff over there too.
For my non-open-source commercial work, of course!
Bharath Bhushan Lohray
The free private repos + unlimited team colaboration if you sign up with a .edu, ac.in etc type email address makes it far more school friendly than github (which is charging money). And they support Hg in addition to git.
But GitHub has done more to popularize itself. I saw this post by git on facebook. There is no bitbucket page on facebook.
I hate git.
That is all.
(YMMV, Other SCCS are available)
(Although, GitHub does work well)
Ben Nuttall — post author
Haha but git is awesome! I’ll never understand you anti-git people :P
SVN is far inferior and Mercurial is on par but doesn’t make as much sense :P
Why does mercurial not make as much sense? Just interested as I love mercurial.
Github does actually support SVN as an access method, if that floats your boat: https://help.github.com/articles/support-for-subversion-clients
Wow James, we’re starting to agree on so many things I’m beginning to wonder if maybe someone (Liz) has put something (Mooncake’s catnip) in our tea, or whatever your beverage of choice may be.
From The Other James – at least legally, but I only get called that when I’m in trouble, ever since my Mom first uttered it in a loud voice when I was a young tyke, long before I found out I could get in even more trouble in virtual space, too. Hey, I didn’t design the end of the Slinky coil to fit so nicely into the matching vertical slot in an electrical outlet, so don’t blame me! :lol:
So, Jim . . . You successfully earthed (sorry, grounded) your slinky! ;) Otherwise, must be one of those strange American socket things. We really must get our friends across the Pond onto proper BS1363 sockets! Much safer for them!
While today’s (NEMA?) three-prong sockets have a vertical semicircular/rectangular ground/earth connection and a larger vertical rectangular neutral connection (on the left, when looking into the socket with the ground connection oriented downward), the hot/deadly connection is a slightly smaller, but still quite large enough open rectangular connection to stick all manner of things into that can make really impressive sparks and muscle-spasming current draw upwards of 15 ~ 20 amps without tripping a breaker (don’t ask me how I know about the spasming part – my brother is still quivering five decades later). However, five decades ago, all we had in our walls were those two-pronged gaping maws of death, the connections in either one of which (and possibly both, due to lax electrical codes and inspections in a post-WW-II building boom period) could allow one to create a very nice, complete path between the power source, ground/Earth … and the Moon, at least in terms of the Slinky operator! :D
Most people coming from CSV or SVN hate git the first time they use it. I sure did.
It’s not until you actually start working with it on projects with multiple people that you see why it makes SVN look like it’s the MS Paint to Photoshop.
Give it a try, a real try and you’ll see why everyone is using it. Tinkering with it really wont give you any idea why it’s so great though.
I looked at Microsoft and this is what it said
Microsoft – This organization has no public repositories
How am I not surprised?
Ben Nuttall — post author
That was intentional :)
Actually I used that in a talk I gave on free software culture last year – at the time the link pointed at a 404: https://docs.google.com/presentation/d/17eVj5WJ9ox5bd-I6-kjI5jx3de1mRk0aJWlWDdAWVYQ/present#slide=id.gdbe92a71_3168
Someone must have set up the organisation account in the mean time but they’re only using it privately.
Credit to Microsoft where it is due: https://github.com/msopentech
There’s also a great (imo) freely downloadable book (in pdf, mobi and epub) by Scott Chacon that takes you through much of the basics of git, available here
William H. Bell
All the source files for the MagPi are in github. To work around git a bit, we have some handy LINUX scripts.
Ben Nuttall — post author
Oh wow, very cool!
Yup Will’s made me into a GitHub convert. I was happy in a land that comprised of a mix of Subversion and Dropbox (and we did use Dropbox to manage The MagPi files for a while) and wasn’t madly keen on all this new fangled git stuff. But now: blimey I don’t see how we would synchronise all of our work without it!
Give you an example: as we’re based around the globe there have been several times when a deadline has been approaching and I’ve been finishing off a page or two and run out of time (watch says ZZZzzzz O’clock). I’ve checked in and then someone in North America, where it’s still day(ish)time has updated with my changes and finished off what I was working on.
GitHub and git work so well.
I’m interested in parallel processing using GPU as in most current mobile phones. This includes openGL and openCL.
My introductory tutorials:
I was introduced to DAP by Stewart Reddaway at ICL ~1980±5 and would like to see kids naturalised to this guff?
well an easier learning curve at least….
neither I nor the rktrlng, who added a further tutorial, understand git well enough to confidently pull his fork.
ie we have different approaches, and I don’t want my code compromised.
Well I’m no longer a “young” coder, but there’s some code up on https://github.com/mikerr/biped for a pi based walking robot
and https://github.com/mikerr/pivision for some motion tracking python/opencv stuff