Diving into open source communities: Students' need to knows


Image by opensource.com
submit to reddit
 
(4 votes)

One of the talks at POSSCON's education track was John "maddog" Hall's presentation titled "FOSS Teaches You Twice or Three Times." A 42-year veteran of the computer industry, maddog has seen it all. He's since turned his attention to the field of education and the work of creating a nation of thinkers and self-directed lifelong learners.

I'll jump ahead to my favorite part of the talk: if we want students to be able to learn "the open source way" and participate in FOSS communities, what skills do we need to teach them? Here's maddog's list of the how-to's they need to know:

  • Do distributed development
  • License software
  • Develop formal standards
  • Write code to standards
  • Motivate software developers
  • Locate and engage the community of users and developers
  • Innovate everywhere, always
  • Evaluate and size customer needs
  • Compare multiple programs that perform the same function
  • Share

All right. Rewind a bit. Where does this list comes from?

It started many years ago, when maddog himself was a teenager in college. All software was what we'd call "open source" today--the code was passed around from developer to developer in a friendly atmosphere where tinkering and modification was encouraged. Many of the developers maddog worked with were amateurs--they didn't write software for a living, or at least didn't start out that way. And they could be, because the culture of sharing meant that amateurs had access to the same resources professionals did, so amateurs could therefore easily match or even surpass professionals in learning and skill.

This is a stark contrast to the world of software development students today are faced with. Most of their information is locked up in proprietary textbooks. They're trained to use proprietary software that takes a lot of money, a professor with industry connections, or access to an underground student pirating network. (This is nothing new; in 1976, when AT&T blocked a professor named John Lions from the University of New South Wales from publishing his annotations on the UNIX source code, amateurs did it themselves, passing photocopies of photocopies of photocopies of the pirated book from one hand to the other.) They're asked to create programs from scratch for many individual assignments, but it's hard to create interesting software on your own. Most software projects nowadays are complex creatures, shepherded through their evolution by large teams over long periods of time. That's the world students graduate into--but they're not prepared for it after four years of "throwaway" projects.

Companies know this, and the smart ones find ways other than resumes and grades to screen new hires. Maddog recounted the story of Mark Shuttleworth's first round of Canonical hires. Rather than screening resumes, Shuttleworth sat down with the Debian mailing list archives, analyzing conversations to determine which developers he wanted to hire. Shuttleworth ended up hiring developers from all over the world. This makes sense; why should good software development be the exclusive province of a few countries? Instead of using their ingenuity and talent to pirate American software, shouldn't students all over the world be creating programs of their own to address local needs?

That's where the list comes in. Clearly, learning specific algorithms, languages, and tools aren't enough; instead of simply being trained as technicians, students need to be educated as service providers who solve the problems of their community by working on living projects, just as surgeons learn how to work their art of healing on living bodies.

Once students know these basic skills, it's possible for them to take advantage of a multitude of living examples for any topic they encounter in class. Kernels and operating systems, multithreading, concurrency, or programming languages? There are multiple thriving open source projects used in production for each of these. Doing a special topics course on telephony? Check out VoIP, Asterisk, and Android. Studying electrical engineering? There's SPICE, the Arduino, and a host of circuit simulators and board layout tools. Law, English, Philosophy? Check out Creative Commons and Project Gutenberg.

Of course, this doesn't tell us how we can teach these skills, or how to develop programs to teach and assess them consistently--but that's a topic for another article.

""
Creative Commons License

9 Comments

LeoSolaris's picture
Newbie

It was great to have met you at POSSCON, Mel.

Interesting article, and now I wish I had managed to make it to that talk. Maddog always gives interesting lectures.

A good project to look into for a slightly different application of open source in education is Flat World Knowledge. The idea of teaching FOSS methodology dovetails rather nicely with creative commons text books. Students could write up improvements to their text books as a collaborative group project.

izno's picture

"They're asked to create programs from scratch for many individual assignments, but it's hard to create interesting software on your own. Most software projects nowadays are complex creatures, shepherded through their evolution by large teams over long periods of time. That's the world students graduate into--but they're not prepared for it after four years of "throwaway" projects."

I think this is a problem of the education system, rather than being able to be laid solely at the hands of industry. The reason I say this is because the same problems can be found in engineering as well.

Alexandro Colorado's picture

I had a similar talk about this topic, is interesting how some of the things you point out I had it on mine. However things that are often discussed is how to change teachers way of thinking to adopt this new paradigms.
My solution is to rebel and do this outside of classes and in clubs. And ask for help on the internet.

James122's picture

Interesting article, but I'd suggest holding off on the full jump into open source until later. The reason being is to get the kids thinking first. The last thing we need is a bunch of graduates only knowing how to cut and paste from the open sources out there. Basically stealing other peoples ideas without knowing what or how they work.
Just my 2 cents.

Alexandro Colorado's picture

@James this is not stealling and that is the big difference. Another difference is how much do you need to think how the inner working of a motor vehiecle to buy or drive a car.

On the flip side, I think that FLOSS is about contributing back and the actual challenge is how can we further the standard of knowledge given already as open source. That way you are not just taking but sharing.

I wonder how well can you do a calculus derivative right now from your calculus days in high school. Or how well can you perform on a 100 meters race vs the kids from the neighbor school.

Is not about how much can you copy paste open source, but how many new lines can you generate.

James122's picture

I wasn't worried too much about the steeling, just the not thinking part. True, I'm older but I've been around the block for a while and know every bump and stumbling block.
I'm all for sharing; however, most students are mainly interested in other things and don't care about the same things. Most have ideas of sharing as what can I get from you.
But, the person that knows how the car works is better at getting a program written to drive a car than just someone who wants to drive a car and doesn't know the first thing about a car.

Alexandro Colorado's picture

Ok I understand the student mentality and that si why Open source can help change that. In a non-open source world. EVERYONE is having the ideas of what can I get from you not only students.

But that is exactly why open source in education is more important. Because we need to edcuate the value of sharing and contributing. At least is easier to educate a student than educate a lawyer per-say.

James122's picture

Yes, but overwelming them with complex projects could scare away many. Education on sharing is good, however one must be aware there are those that don't contribute but seem to always take. These are the ones we need to weed out of the framework since they don't belong.
Then there are the ones that don't get it and insist that everything needs to be done their way. ... well, I'm not that kind... in fact I believe strongly there is more than one way to do something and they may both be correct. Not talking simple math here.
The simple "hello world!" example has been played to death in my opinion; however, it can show someone that it does work and can be simple and shows the real power of programming. From there the imagination is the limit. There really isn't anything you can't do with a computer in terms of programming. But, you have to know the hardware and what the software is doing for you weather you wrote the program or not.
Programmers aren't "a dime a dozen" or a "simply replacable commodity". OpenSource is a great thing and we do need to teach more sharing and cooperation; however, we also need inovative thinkers and not "smoochers".

Alexandro Colorado's picture

Two things here, a project doesn't need to be complex or huge to be an open source project. That said, big open source projects are actually easier to contribute. Because there is already a standarized process of contribution, well documented and things belong to place.

The other thing is the dynamics of team collaboration which sometimes are just not enforced. Many schools just horde students together and say... do a project/paper. But very rarely they are taught how to really do teamwork.

Also by just taking, you could also innovate. If this was literature, you will need to 'take' a lot, to be able to produce. That means you will need to read a lot of books from different writers to come up with your own. Sure there is a difference between copy and reading. But unless everything is perfect, once you start debugging your software, you will be forced to read what you just pasted.