GitHub goes to school
github.com
github.com
I would encourage other educational institutions to do the same. 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).
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.
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?
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.
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.
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...
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.
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.
- Sent from my iPad
You're welcome to your principles, but they're not always practical.
And Blackboard is anti-educational. Have you ever tried to use it?
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.
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:
[2] Here's the first homework: https://github.com/CS171/HW1
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.
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.
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.
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.
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.
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.
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.
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.
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.
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-...
"Young professionals who want to continue learning" implies the graduate has a job.
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.
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 imagine it is worse for undergrads, where almost all their coursework will be private.
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.)
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 :-(
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...
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.
It's not quite amazing, though.
A quick google appears to back me up to some degree?[1] (See "Student Activity 3")