Hacker News new | past | comments | ask | show | jobs | submit login
GitHub goes to school (github.com/blog)
163 points by bencevans on Feb 10, 2014 | hide | past | favorite | 64 comments



I was happy to see that my university decided to self-host a Gitlab server for CS students instead of using proprietary options like GitHub or Bitbucket. The students that set up the server learned from the experience, the instructors got around the problems they were having with Bitbucket's account limitations, and the new undergrads have a great platform on which to learn Git.

I would encourage other educational institutions to do the same. Proprietary software like GitHub is anti-educational.


GitHub is just as anti-educational as proprietary textbooks, proprietary class management software like Blackboard, proprietary hardware like Macs or Dells, and proprietary software like Windows and OSX.

You're welcome to your principles, but they're not always practical.


I think all of that stuff is easily replaceable, in the context of a CS curriculum at the very least, if only other people cared a bit. I took one class that required use of a proprietary circuit modeling program that I ran via Wine, but other than that I did not have to use any proprietary software to complete my CS coursework.


The difficulty with replacing proprietary hardware is that, in some cases, the companies donate it. So you'll have a "dell lab" sponsored by Dell, and it's hard to convince a school to say no to the free equipment and go with another solution


Well, proprietary textbooks about ancient math is kind of silly.

And Blackboard is anti-educational. Have you ever tried to use it?


If it's not anti-educational, it's an affront to education.

Online education is an actually interesting problem space in the world and Blackboard, Desire 2 Learn and some horseshit software from Oracle is like the best stuff out there. It's terrible.


Proprietary software like GitHub is anti-educational.

I have nothing against GitHub, and I use it myself, though I resent its becoming of an official requirement and be-all-end-all holy grail among hipster circles. However, he's right. Proprietary software and education simply do not mix, they're antithetical.

Not to mention GitHub doesn't expose the entire Git functionality (such as options like reflog, the lack of which in client side led to the whole Jenkins gaffe).


What is 'anti-educational' about proprietary software?

At the very least, one can't expect CS students to have an education which is valid for the workforce without any exposure to proprietary software at all.


>What is 'anti-educational' about proprietary software?

Proprietary software doesn't give you the freedom to read and modify the source code. The software license forbids learning about it.

>one can't expect CS students to have an education which is valid for the workforce without any exposure to proprietary software at all

There's a lot more to CS than learning to be a code monkey.


>Proprietary software doesn't give you the freedom to read and modify the source code. The software license forbids learning about it.

This is true. However, it is still possible to be taught to code on a Windows machine in Visual Studio, or in Java for Android, etc. Your point of view has merit but it also has a limited context. The tools do matter and some of those tools are closed-source.

>There's a lot more to CS than learning to be a code monkey.

And yet, sooner or later everyone has to eat.


Yes, we know what "proprietary software" means. We're looking for clarification on how using a proprietary tool that allows students to better share source code and collaborate with each other and the society at large counts as "anti-educational".


What is 'anti-educational' about proprietary software?

It doesn't allow users/students to analyse, or learn about, its inner-workings. I don't know how important that is but with git being so easy to deploy, why not use something students can maintain?


Isn't that going a bit overboard in an educational setting, though? Seems to me like it'd be like showing up for a drivers ed class and spending the first semester learning about the history of internal combustion engines.

Sometimes it's best to start with something that transparently "just works", make the students aware of other options like gitlab, and let them explore those if they wish.


Depends on what the end goal of the education system is: to make you a driver/chauffeur or to make you someone who is going to design the car of the future.

How to stage and sequence the exposure to the details is indeed important. I am not advocating exposure to the details right away, but the option has to be available at a reasonable price (be it in money, or in time).

There is also the "teach a person to fish" thing, rather than handing him/her a fish. Although many are in the business of handing out fishes, stale ones too.


That assumes that everyone who was using GitHub for hosting their classwork is engineer capable of hosting their own Git server. What if they are working on frontend HTML/CSS things? or just learning Python? There are lots of valid uses for version control that don't mean you already have the ability to even try to host your own VCS.

No one argues that you need to have people host their own web server to start learning how to write Javascript. In fact, most would argue against hosting your own that early on. It's not beneficial, and more likely to end up tangential annoyances than solving the problems that matter for the person's skill level.

Just because someone teaches you a different part of the stack first doesn't mean they are handing out fish...


Students can maintain a local git repo and just push their results to github. In fact, they must, that's how Git works!


Conveniently written from your MacBook Pro, right?


The difference is students are not forced to use MacBooks when completing coursework.


Oh, you.

- Sent from my iPad


This begs the question of what you're looking to get out of a git/VCS setup. Unless you're forcing everyone to setup their own Gitlab instance, is your CS department looking to offer a handful of students limited experience with a single task? Or are you looking to use VCS to benefit all of your students during the entirety of their time in your program?

The entire idea behind using VCS in education is to enable better/deeper learning. Github lets students jump right into versioning their work and collaborating with classmates/instructors with minimal fuss and zero overhead. Not to mention that exploring Github can help introduce them to the open source community. Plus, they don't have to deal with IT department BS, worrying about when their old work will be deleted, or the myriad of other factors that can impact how students integrate git into their work.

From a departmental perspective, where time and resources are always stretched it's a no-brainer. Besides, at least Github isn't Blackboard. :shudders:


BitBucket's account limitations? If you sign up with an .edu email address you get unlimited everything for free (including teams). You can even permission repositories with groups from another team account. Overall, I'm pretty impressed with their .edu offering.


Honestly, how is GitHub anti-educational once you get past the fact that several students set up a Gitlab server and learned from it. That's a one time benefit.


We use GitHub to teach Harvard's CS171 [1]. Couldn't recommend it more — we use it for the course website and for managing homework [2] (great for pushing out homework updates). Students publish their work on GitHub and we have a script that downloads all the student repos at the deadline.

[1] http://cs171.org/

[2] Here's the first homework: https://github.com/CS171/HW1


Wow, I would do that homework even if it wasn't required. (can't believe I just said that)


Consider getting involved in some of the edX courses.

CS169.1 and CS169.2 draw from UC Berkeley's CS169 - Software Engineering and present a course in SaaS. They extensively use Github as the code repository and are really cool assignments to boot.

CS188.1x covers the first half of an AI subject and whilst not using github, certianly was really enjoyable from solving machine learning puzzles. It's in fact probably one of my favourite courses I've done.

It's a great way to stretch your brain by either learning new skills or revisiting old, possibly rusty ones. I try to keep doing 1 or 2 at a time.


Apart from proprietary software being antithetical to education - I think that schools never ever should teach a product. It's not necessarily wrong to use products in order to teach something, but it is bad to teach a product. Like, using a book that you have to buy in order to learn algebra is fine (though cheaper/more easily available education is better, of course). But teaching MathCorp[tm] Algebra[tm] (patented by MathCorp[tm]) is not. Any knowledge that requires you to buy a particular product from a particular vendor to make use of is not appropriate for being taught in the classroom/for being a requirement for a passing grade. The school has particular power to force you to learn stuff, and that power should never be used to the advantage of a particular private entity, especially so when that private entity bribes the school by providing the product for free.


From my viewpoint, I went to college in order to prepare me for my future. If my future likely includes the use of a proprietary product, then I think it is in the best interest of both the students and the school to teach that proprietary product.

I wouldn't go to a design school that didn't teach photoshop. These days I don't think many programmers will leave college and not use git or github at least once in their career, so I don't see a school using it as such a travesty.


I guess the important part is that it should not be a requirement. Offering optional courses on products, maybe, but don't give any credits towards a degree.

After all, why do you expect to be taught photoshop? Because it's a de-facto monopoly! What is one of the reasons for it being a de-facto monopoly? Because it's being taught (as a requirement) in schools! That's positive feedback supporting that de-facto monopoly, and that's bad, as it presents a barrier to entry of new market participants. And it's highly questionable that it is good for the students that they get to depend on a de-facto monopoly for their work, as that, for example, probably makes it more expensive for them to work in the field.

For github, it's similar. Teaching git is perfectly fine, obviously, as that is free software, so the knowledge that you gain there you can use without any restrictions, teaching github is not, as that makes it easier for github to gain customers, at the expense of its competitors, and makes it more expensive for the student to become a customer at a competitor.


I work at a development house at the University of Alabama, and we have found that our free GitHub micro account has been a wonderful gateway drug of sorts for learning git. But, having just moved over from an SVN set up to an in-house git system (RhodeCode), I would echo the others who have said that other git tools are better for us than GitHub for teaching git.

Without a doubt, GitHub's educational accounts have been great for our undergraduate students because they have exposed them to great open source code and a community that is excited about development. In short, we have found that the intangible gains have far outweighed the tangible gains of a few private repos. Kudos to the GitHub staff for continuing I make development and collaboration fun and easy.


Many here seem to share the sentiment that universities should host their own solution and not use something like this. Perhaps I can provide a different viewpoint, as a student that recently got hired in IT support at my university.

Our current repository server is a thrown together solution that covers git/svn/hg. It's extremely ugly, has no features besides creating and deleting a repository and generally isn't very user friendly.

I immediately started thinking about how I could improve this area, and looked around for various things. As probably most here, open-source and self hosting came to mind as the first thing to look for.

I found GitLab and Gitolite and started reading a bit up on those and the pros and cons of using each, and both compared to GitHub.

What I found out

While self-hosting provides the ultimate control, there is one thing you're entirely forgetting; maintenance. This doesn't come by itself and requires both man hours and also the know-how to do this. The case as often is, it will be underprioritized, you will be left with an outdated version, and that will mean annoyances, bugs and possible new features you're missing will stack up. And that's just the case of nothing going wrong on the server you're hosting it in. There could potentially be data loss, server downtime, server interruption etc.

So what should we do then?

Let someone else take care of it. Throwing all these responsibilities over to someone like GitHub, whose sole function is to drive this service allows freeing up a lot of potentially wasted time, and also allows for the students to be using the newest and best tool for the job.

And for the case of something like GitHub specifically, I really think it's ridiculous to complain about it being proprietary, since it is besides the point entirely. You're teaching the students to use git and to collaborate together on projects. You're making the administrative task much easier with the workflow they provide.

You aren't teaching your students solely to use GitHub, it just removes a lot of extra cruft and allows the students to focus on the actual subjects of the course they are in, instead of having to wrestle with the tools they have to use.


There's a legal issue with universities though. While the research being done may be public, they could also involve private corporate entities, restricted data, or patentable information. A lot of people forget that, while universities are oftentimes public institutions, they're also very large bureaucracies. Most of them are very sensitive to how data is handled and published, as incorrect findings, proprietary code, and other leaks can be very costly.


I think some of that can be solved with https://enterprise.github.com (which has an academic discount and offers an "unlimited campus-wide student license").

I can't clearly see how much maintenance you have to deal with though, so that might not be a viable suggestion without disregarding my original complaint.


That's a good point, there are enterprise hosted offerings. I'm just pointing out that the sell to higher level university officials to switch off of internal infrastructure to "cloud" offerings (yes, yes, I realize that word is overused) can be rather difficult.


If you don't need specific features of Github but want a fantastic place to keep Git stuff, Bitbucket is brilliant. Unlimited free private repositories for up to 5 collaborators, and add+confirm any educational email address to make that unlimited collaborators. http://blog.bitbucket.org/2012/08/20/bitbucket-academic/


Fantastic seeing this initiative by GitHub. Though I'd prefer an open source solution that they could host themselves, this is a good step in the right direction.

I also don't believe Git is the right tool for this problem. Educators need something tailored much more specifically, and one that reduces the complexity of branching and merging along the way. There's a space here.


"Though I'd prefer an open source solution that they could host themselves"

This is not the only time that this has come up, and somehow I doubt most educators share HN's open-source zeal - most of them I've worked with want to GET TO WORK, not spend hours doodling with "self-hosted" software.


I'm pretty sure this initiative is geared towards CS students/teachers looking to host their class projects, not humanities teachers looking to host their coursework. In that light, there is no need to reduce the complexity of branching and merging because those are real-world skills that CS students need to learn.

As for a VCS that helps non-technical teachers manage their content, I absolutely agree that there is still a need for that but that's a completely different problem space.


There is a vast gulf between "CS students/teachers" and "humanities teachers looking to host their coursework". Like, the entire landscape of computational science, statistics, anything with "quantitative" in front of its name...


Nothing new with trying to get people hooked early so they'll use your products (and hopefully pay for them) once they get out into the real world. Microsoft academic licenses are dirt cheap, for example.


Tech companies that offer discounts usually cater to college students. What about young professionals who want to continue learning?

Most students receive financial support from their parents and have ample disposable income for products like GitHub [0,1,2]. Recent grads who want to keep learning about technology are more in need of discounts.

I'm not discrediting GitHub's campaign — I'm happy that the company is reaching out to students. It's just that the trend toward offering students discounts is somewhat misguided and shortsighted.

[0] http://news.byu.edu/archive12-apr-payingforcollege.aspx [1] http://www.nytimes.com/2013/01/15/education/parents-financia... [2] http://www.usatodayeducate.com/staging/index.php/choice/who-...


That's an incredibly classist point of view. I have plenty of friends at a top institution that can barely afford rent and to eat after their 2 hour commute. If they had to, sure, they'd find a way to sacrifice something to pay for github, but it surely isn't "ample disposable income." Please look outside your bubble.


I think you might have misunderstood my comment. Consider where your friends will be after they graduate.

If they're having financial trouble now, those trouble will likely be exacerbated when they first try to enter the workforce.

I'm advocating that companies not only extend financial support to students, but offer ongoing assistance to those students as they try to start their careers.

I think your friends - and all young professionals - could benefit from those incentives.


What kind of discount are you thinking of? It's already free for as many public repos as you want.

"Young professionals who want to continue learning" implies the graduate has a job.


+1 everyone should just be more comfortable open-sourcing in-progress work anyways.


Github, I use you for all my \LaTeX papers, programming assignments, masters projects, whatever else. It is really helpful.

But I don't like that I can only have 5 private repos. Making my work public could be an honor-code violation and a violation of the professors trust, that I won't make solutions available to their projects. On top of that, I'm usually working on more than 5 projects at any given time.

Now that I'm finishing graduate school, this pressure is especially high. If I work on something in github, the other grad students will undoubtedly see it, since we are all gitbuddies. Does github have any talk of raising the private repo ceiling on education accounts from 5 to >5, or should I just remove my work while it's done?


I just use Bitbucket—unlimited private repos with caps on how many users are allowed to use each one. For one-person projects it's ideal. Github's main value proposition over Bitbucket is its community...but that's a moot point for private repos.


You know, it is possible to run your own centralized git repository ...


You can put your projects INA shared repo "school"

Also, your schoolsw honor code is rather antiquated, and presumably it is used because your grades are based on copy-paste carbon-copy homework assignments :-(


Pretty much all CS departments don't want solutions for most assignments (open-ended final projects excepted) on GitHub for a simple reason: they reuse assignments term to term because it is incredibly difficult and work-intensive to develop an excellent CS assignment.

While it might be possible in some courses, in many, it would be impossible to develop new assignments every term at the quality that they currently use now.

While most schools do employ quite good plagiarism detection technology (eg. MOSS) that will catch if someone turns in an assignment done by a previous student, they'd rather not have to report multiple students every term to judicial affairs, and they can't catch smaller academic dishonesty like looking at others' code to get ideas for design decisions.

For example, the Operating Systems assignments I did in university[1] are spectacular. The starter code is great, they're intense, they don't make you waste time on stuff that's not too educational. I learned a ton from them. They've been in use for years, done by probably thousands of students, and there would be no easy way to seriously change them yearly. I'm very glad my professors were able to invest in developing a great assignment set once and then reuse it year to year.

1: http://www.stanford.edu/class/cs140/projects/pintos/pintos_1...


Yeah, and grading homework is stupid and counterproductive and should be left behind in high school. College students can do better. They get $15-30/hr internships and then go back to school to do copy-pasta homework problems instead of meaningful projects, all because the schools are obsessed with "ranking" students to feed into the global elite.


You can have a private repo called writing with a folder for each project. Not elegant but it works...


Yeah that does work. It is only frustrating when I have a lot of big projects at the same time. Sometime they can be public, but othertimes they cant.

I imagine it is worse for undergrads, where almost all their coursework will be private.


This too. I have an "Archive" folder, and before that one called "Dissertation" which was in reality like, 8 different projects.


This is a good solution. Have a archive private repo that everything I'm done with goes in. Perfect.


I just git clone old projects into a Dropbox private folder. I can easily keep the whole repo history even if there are multiple branches, but it doesn't take up GitHub usage at all. Of course, if you had Issues or the like, none of these solutions really work.

I do wish GitHub had a way to deactivate projects to save money. Maybe put it in a read-only state, still count it against your disk quota, but you'd have to make it active to actively work on it and update it. I feel like a lot of systems do similar things (eg. charge per user but allow deactivating users in case they go on leave or quit but may return--pause paying for that user without losing the data in case you want to reinstate.)


Suggestion: If you're part of a professor's group, a lab, etc. they also have group pages. This is what I used to boost the private repos for "All the work in Professor Y's lab".


You know you can pay for more repos right?


Side note:

When you have 15 links in one sentence where every word is a link to somewhere and the word actually has no meaning, then I think it's time for a bullet list. It might just make people actually click a link. But all those links in one sentence are of little help IMO.


This is an annoying meme I've seen before, but I don't know what it's called.


Overlinking in Wikipedia parlance.


Completely off topic: The GitHub Education page shows a blackboard with a picture of a chemistry set up. Did anyone here on HN, ever, do a school project that involved a setup that looked like that? I was always jealous of that stuff, it looks so awesome! With tubes and big spherical bowls and steam and fire and bubbles, wow! Can I send my kids to a school that has that?


It's been a long long time, but I'm pretty sure that looks like the set up used for alcohol titration ... which at least at my school we did in teams for 4 or so. Did you not do this? If I did it, I'd assume that it's a standard part of the UK Curriculum (though again, that was some time ago).

A quick google appears to back me up to some degree?[1] (See "Student Activity 3")

[1]: http://www.scienceinschool.org/2012/issue24/wine


I did a bit, in (UK) A level chemistry, distilling something or other. If I remember correctly, the experiment finished when I mixed up the beakers of clear liquid and ended up throwing away the product we had distilled. Regardless, I was proud of our vial of water.


Where are you from? I live in a poor country and we used to have such setups (high school). In some classes each student can have his own setup and play with it.

It's not quite amazing, though.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: