Introducing Students To the World of Open Source
paulproteus writes "Most computer science students never see a bug tracker, and very few learn about version control. Classes often don't teach the skills needed for participation. So I organized a weekend workshop at the University of Pennsylvania. Total newbies enthusiastically spent the day on IRC, learned git, built a project from source, and read bugs in real projects. I learned that there's no shortage of students that want to get involved."
Most computer science students don't know how to write code. So it doesn't matter at all.
Thanks for the blog post, random guy.
Please come to my university (University of Wisconsin Madison). I would love to participate in this. I have learned simplistic elements of open source on my own, but would love to see a "get involved in open source fundamentals" at my university
I've been a professional software developer for over 20 years and this is one area that I really think would benefit the REAL world so much.
I would also love to see a 2 semester class where 1 semester is where they learn how to write software specifications for fictitious business software package.
Then the 2nd semester is where it has to be implemented by a different group of students.
UPS Sucks
to anyone with a project: go talk to your local college or university cs department, they most probably have some kind of project course and they are always happy to received interesting real world realistic project proposition. Student cost less than outsourcing (only your time) and the quality can be quite good if you mentor them correctly.
Jehovah be praised, Oracle was not selected
What blows my mind is the complete lack of teaching any sort of version control software in most CS programs, which is usually going to be the first thing you'll have to use when working with software at your first job. Seems to me that the CS professors should be using something like subversion to have their students check-out files being provided for a project, then have them submit all their work by checking into their assigned repository. Not only would students get experience working with version control software, but it would be really easy for professors to lock checking into their repo after the due date.
What you have is great but you should check out: http://ucosp.ca/ and participate if you can.
I am mentor with the program and work with a small group of students on a project. The student get to work for an entire semester on an open source project producing or contributing things of real value. On top of that they learn how to work in a distributed environment, which is essential these days. Really it is just amazing for the students.
I'm 17 years old and I even know what IRC is, SVN, Git, and CVS... I've used bug trackers before, filed bug reports and I've compiled (and even cross-compiled...) projects from source... oh and I read slashdot.
"To prevent this day from getting any worse, I'll just read ERROR as GOOD THING" 1GJU8xLuDKDxEs4KLf8fAGyptoDsqvEsBT
Not so enthusiastically anymore now are you?
As an open-source software developer, let me say: FUCK YOU BUDDY.
The last thing most projects need is a bunch of clueless n00bs filling up the mailing list with "OMG how do I run make", and I see no evidence that your "training" will produce anything else.
Seriously: none of these tools are a secret, and any software the students are USING has a pretty clear process for contributing. The only way they can be this clueless is if they're totally unprepared to actually contribute.
I attended a college where the most popular professor of CS there taught part time and ran his own software business on the side. Of course, it helped that he taught some of the advance courses and was able to cherry pick the better students for part time positions. As a result, his classes and teaching style was real world oriented in terms of producing quality code, but the soft skills of a) delving into an existing code base b) using a SCCS (source code control system) or c) bug tracking systems were completely lacking in all my time spent doing CS.
I ended up learning the topics in this article on the job, and various companies are going to approach these systems differently. How an organization deals with some of these issues can reveal what the mindset and culture are handled in a company. While I think the lessons here are valuable, as far as the "practical student" goes, the vast majority of assignments are one-time throw-away. So it is no surprise to me that while interesting, the skills learned may be quickly lost as the day to day college student doing CS work will write one program for one assignment before moving on to write another program for a completely different assignment.
What needs to happen for this type of material to start getting rolled into real, for credit, coursework, in your opinion?
(And as an aside, it would be nice to see technical writing classes where one of the assignments is to critique and improve a wikipedia page.)
Someone had to do it.
Computer science students who want to learn how to be programmers? Has the world gone mad??? No, it seems you have discovered what every computer science student wants: To become actual programmers. If only more CS professors possessed such insight.
If by "world" you mean "religion", then okay.
There is nothing wrong with open source, but the dogma turns a lot of people off, including myself.
Gone!
Hey is this the individual who had the talk at the google summer of code summit? Did you put your talk online yet? Don't forget to send an email to the list on it...
I would LOVE to attend something like this - so if it's held again, please post the invitation on Slashdot. I'd travel the 300 miles to attend. (Better yet, make videos and post them!)
Bug trackers and version control are really orthogonal to FLOSS. Yes, it's true that most of the most popular VC systems and several popular bug trackers are OSS, but that's more by-the-way. These are all things that students of computer programming should have exposure to, yes, but mixing them all up as if they were the same thing may not be the most productive way to suggest that.
The first thing that struck me, both from the summary and the article itself, is that none of these are really open-source specific.
To reiterate, the four they listed in the article are:
OK, well, you could argue command-line Linux skills are open-source, but that's not guaranteed.
If anything, these are skills that all businesses who have programmers would want them to understand.
Heck, even my current project, an internal project that I swear I could submit things to The Daily WTF every weekday for the next year on, has version control and bug tracking software!
GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
Now that I think about it, they should probably have a section on dealing with assholes on the internet, but that is probably a basic life skill now days.
The last thing most projects need is a bunch of clueless n00bs filling up the mailing list with "OMG how do I run make", and I see no evidence that your "training" will produce anything else.
...teaching people how to use make will cause more people to go "OMG how do I run make?".
"I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
I'm disappointed that such an arrogant and ignorant post got modded up after I gave up my downmod to post elsewhere.
Not to diminish the complexity of version control or anything, but I'd rather have a programmer that knows how to design an algorithm and needs help getting it checked in than a lousy programmer who knows his way around SVN well enough to check in his crap code.
Of course there are people with CS degrees that can't design an algorithm and vice-versa, but they are really trying to teach the more important part of the equation. If you can figure out the core theory behind computer, I'm confident that you'll be able to eventually navigate the software development process; I'm not sure the reverse is always true.
And introduction to "how to live under a bridge" or "how to ask for money in the street"
US CS should spend more time learning to describe project requirements in e-mails, and learn multiple languages. That way the real programmers in China and India will be able to complete the project quicker.
Comment removed based on user account deletion
It already is, 3erd semester, running and growing...
I'd say if you're studying Computer Science you should be a big enough nerd to have already encountered those things, no?
Hey all! I'm going to be working on organizing more, similar events going forward.
If you want to stay on top of that, or try to organize an event near you, join the mailing list for OpenHatch events: http://lists.openhatch.org/mailman/listinfo/events
This is part of the OpenHatch project, an ongoing effort to help new contributors get involved in open source. If you want to stay in touch with OpenHatch, join us on #openhatch on irc.freenode.net or follow the links on our "About" page, http://openhatch.org/about/.
|/usr/games/fortune
In my late-night Slashdot writing, I forgot to mention this the summary: Yuvi Masory and Felice Ford played a huge role in organizing the workshop. Yuvi and Felice handled all the logistics, getting all the details down to a T -- that included asking Github for sponsorship, staying up late the night before to organize the students into groups, reserving rooms, and earning the support of Penn computer science.
The workshop was just a pipe dream until Yuri and Felice nailed down all the pieces. My hat's off to them!
Further thanks go out to John Stumpo, Jonathan Simpson, and Zach Goldberg, who all came in from out-of-down to help these students get their feet wet in open source.
|/usr/games/fortune
Most computer science students don't know how to write code. So it doesn't matter at all.
Many working programmers (and ./ posters) are unable to write/spell in English!
Yes it is true. A personal experience below.
Using real open source projects in the context of a University course can be a quite successful experience. Both from the didactic point of view and from a software production perspective.
Five years ago I decided to involve my students of the advanced computer graphics course at the Pisa University in the collective writing of an extensible mesh processing system that we called MeshLab with a plugin based architecture that allowed a easy to be managed compartmental development. Students get very involved and, beside the computer graphics hard core topics of the course, they learned a lot in term of collaborative development, ethics of sw development, open source licenses. At the end of that course a working system was successfully distributed under a GPL.
Since then, every year, I have repeated this approach extending it, and with the helps of tens and tens of willing students the system evolved into a serious complex mesh processing system, GPL'd, multiplatform, included in ubuntu and that is used worldwide by ten of thousands of users in academic and commercial environments.
I found that the knowledge of participating to the development of a **real** system gives the students a really strong motivation to give their best. The fact that their contribs will be released publicly with their name linked to the commits and listed in the official developer page was a strong incentive to do not cheat. For most of them it was the first time that they were making something real (not only exercises) something with a purpose that was quite different from the standard "get the score" approach. Many of the students continued to maintain their portion of code well beyond the course terms (some even after graduating).
I cannot but thanks my students for the dedication that they have shown in the projects.
Just google for MeshLab for more details of it.
P.
Would seen to be the assumed and inherent responsibility with regards to the use of open source (FOSS). Contribution (Not specifically money, but it helps) to the open source community as a whole, by users just want free with no strings and full (What do ya mean support is only email and you will get back to me when you can! I wont be bothered to read anything and can't figure out how to do something simple). Adding bugs that are found to trackers, maybe even fixing the code if you can do it. Helping in forums with the knowledge that you have. Promoting the use of open source and the responsibility that follows. It would seem that "most" want everything for free and on a platter waiting for them without the contribution part. I have been there in the past and I can see the error of my ways. Sometimes the contribution can be in the most unlikely ways.
An author I have followed (All of his books are released in digital form for free under CC) is self publishing a book (Dead tree, limited edition) that is a collection of past works and includes all the digital files for the works. E books, audio books, whatever is avaiable for the contents, all licensed under CC. He was looking for some cheap hardware to clone the SD cards that are included in (Yes attached in the cover) and I wound up recomending some hardware and writing the software to perform the cloning. The code is being wrapped up, along with the program and install instructions, for all to take for free later this month once the website is updated for my FOSS contributions, as small and somewhat insignifiant as they are. We are only as free as we help with the free.
You should consider a workshop on the wonderful of Continuous Integration.
We use this a lot for our Agile projects so that we can automate our build and test when a team member checks in new code to our source control.
I teach for a BS degree in Web Design & Development. If you look at our courses, you'll see that we have a number that are very Open Source friendly. Sure, we partner with Adobe and Apple and have a huge focus on the Adobe CS apps (Flash, Photoshop/Illustrator, Flex, ColdFusion), but we also have entire courses on PHP, jQuery, mySQL, and Red5. And those are just the apps for which we spend an entire course. We also work in Git, CouchDB, Audacity, Eclipse, and many more common OSS apps and platforms. It's an open secret that we're working to launch a BS degree in Mobile Development that will have a very large Android curriculum.
Higher education doesn't have to be all boring theory and no practical application. Anyone who tells you that the university system can't keep up with rapidly-changing technology is sorely misinformed.
I was a CS major and after I got my first job someone showed me a surce control system and took 30 minutes to go over the basics and branching/merging. Done. I didn't need a 3 month class to teach me how.
Across the street at Drexel University almost all computer science classes require that class assignments run on the universities Ubuntu tux cluster, and comes with make files. Many are now requiring some using version control so instead of "handing in" an assignment we just e-mail the teacher a link to a git or svn repository that they can access. Most students run or at least have in a VM or separate partition Linux running and know how to install and maintain it.
I don't mean to boast about Drexel but are you seriously telling me few students are UPenn can even run make?
SCM, bug trackers are just little details. You can always explain them to students in a traditional lecture.
The real difference between open source and traditional education is the motivation. The usual college class pits you against a number of classmates - if you made a mistake in an exam, you're less likely to get the A+. Unless you're one of the lucky few who can easily breeze through exams and tests, it's a negative reinforcement cycle.
Nobody gives you a grade in open source software development. You make something, or help making something, and people use it. You feel happier and you're naturally motivated by your users to improve your coding skills to make your next release better. That's a positive reinforcement cycle (usually), and I think it's much easier to get people to become good at coding and project management like that.
Canada has been doing this for years with a full curriculum.
They even have a one week crash course.
Oh look, here's a map of schools around the world doing this right now
Any of those workshops around here I'd sign up!