Educating the Next Generation of FOSS Developers (OSCON 2010)
At the upcoming O’Reilly Open Source Convention (OSCON 2010) we will present the following talk:
“Educating the Next Generation of FOSS Developers”
http://www.oscon.com/oscon2010/public/schedule/detail/13635
“The engineers that you will be hiring in 2015 are now sitting in college classrooms all across the country. Many are now being trained in the exclusive use of proprietary products, plagued with restrictive licenses. They often don’t know what a command line is, much less what ssh or netstat are. Most of them will never see a piece of code longer than 500 lines during their entire college education. Most of them have never read a software license. Many of them still wonder if Free and Open Source Software is used in real-life applications. Most of them are puzzled by the idea that a business model may be based on giving away something for free. We have been collectively raising an entire generation of engineers who are ignorant of the essential inner-workings of hardware and software due to the widespread use of proprietary products in college campuses which has prevented them from learning how things really work.”
In this OSCON talk we will be sharing our experiences (successes and failures) from three years of teaching the Open Source Software Practices course:
http://public.kitware.com/OpenSourceSoftwarePractice/index.php/Main_Page
The topics covered in the course include:
- Laws and software,
- Economics and collaborative means of production
- Social implications, and
- Software engineering practices
The course covers, in depth, topics on copyright, patents, trademarks, collaboration platforms, business models, social freedom, and community participation. Students get practical experience in practices of test-driven development, agile development, and participation in distributed teams.
As part of the course, students are required to participate in and contribute to an open source project. They have the option of starting a project from scratch or joining an existing project. The guiding principle of the course is to empower students to find their own way in the prolific environment of open source communities, by giving them a background that will allow them to make educated decisions along the way.
This relates to the second talk in which we will participate at OSCON:
“Opportunities for Students to Contribute to FOSS Projects”
http://www.oscon.com/oscon2010/public/schedule/detail/13701
and to a topic on which we have blogged recently:
“Opening Open Source”
http://www.kitware.com/blog/home/post/13
where we examined the lack of easy entry-level assignments that many open source projects have when it comes to facilitating the involvement of new members from the community.
Personally, I find the arguments for Open Source Software to be ill-founded.
At NeXT Computer, we took the GNU tools — which weren’t very good at that time — and made them work. Paid for by Steve Job’s proprietary software.
At Oracle, we took Linux — which most Enterprise sites were restricting to use for print servers (especially since it lacked much of the POSIX functionality) — and added kernel code to make it useful for real development. Most of that work was done by Oracle, Sun, and Red Hat/IBM engineers on-site at Oracle. Paid for by proprietary software from the respective companies (for strategic competitive purposes.)
I think we make a mistake by limiting our vision to a “proprietary” and “open source” dichotomy. Can’t our society think of better ways to improve resource/software distribution?
Tony,
What specific arguments do you find ill-founded ?
You are actually pointing out the well-known fact that commercial entities contribute to Free and Open Source projects. You mentioned how Oracle benefited from FOSS, and how FOSS benefited from Oracle’s investment.
There is no surprise there.
We can go on adding more and more companies to the list: Apple, HP, Volkswagen, Amazon, Google, Nokia, Disney, Pixar, TomTom…
This is indeed widely accepted as an evidence of the success of FOSS. Commercial companies benefit from using FOSS software, and many of them understand that it is in their own benefit to contribute back to those projects.
The Economy is not a zero-sum game. There are many situations in which collective wealth can be generated without impoverishing anybody. A classical example, is the production of non-rival and non-scarce goods, such as information and knowledge (of which software is a particular case).
You certainly have a point in that there are still many people who get too confused with the economics of FOSS projects and have trouble understanding how is that contributing to a common pool of resources is good for everybody.
Part of narrow view is the result of Garrett Hardin’s characterization of the “Tragedy of the Commons” (1968), which have lead many people to incorrectly generalize the idea that Common resources can only be managed by central organizations (Government or Private entities). This view is now outdated, particularly in the context of the Information Age, and have been replaced by a modern understanding of the effect that information, communications, and distributed coordination play in self-regulating common resources. Note, for example, that the Nobel Prize in Economics on 2009 was awarded to Elinor Ostrom “for her analysis of economic governance, especially the commons”
http://nobelprize.org/nobel_prizes/economics/laureates/2009/ostrom.html
She “Challenged the conventional wisdom by demonstrating how local property can be successfully managed by local commons without any regulation by central authorities or privatization.”
She particularly studied fisheries and forest management, but her findings apply nicely to “Information Commons” such as FOSS and the Wikipedia.
Yochai Benkler (now at Harvard) has also described in detail the Economical principles of commons-based peer production. Particularly in “The Wealth of Networks” and in “Coase’s Penguin”.
—
The central point of my post is that when it comes to educating engineers and computer scientist, FOSS software is a *much better* fit than proprietary software, since it offers students the opportunity:
* To see how the software works
* To modify and experiment with it
* To share their findings with others
Any curious mind who has ever opened an electric appliance with a screwdriver can testify that the possibility of opening an object and seeing how it internal mechanisms work result in deep understanding.
Proprietary software, when used in education, deprives students from such opportunities, particularly when its EULA imposes the shameful prohibitions against “Reverse Engineering”. Despite the fact that “Reverse Engineering” is a right that US courts have repeatedly defended, given that it is simply equivalent to the “right to learn and understand how things work”.
My main concerns here are:
A) Developers who have been trained mainly with proprietary tools have a poor understanding of the inner-workings of computer systems and have an impoverished culture. In particular: a Visual Studio developer doesn’t know how a compiler works internally. Her only option to learn such things, is to look at GCC (or any other compiler whose source code is available for inspection).
B) In order to propagate a technological culture we must educate engineers and computer scientist with systems that they can open, inspects, modify, tinker with, and talk about with their peers, without being subject to criminal prosecution for doing so.
>> You mentioned how Oracle benefited from FOSS, and how FOSS benefited from
>> Oracle’s investment.
More than that. In both the cases that I mentioned the Open Source versions were widespread but in very limited use — they were not really “production” ready. I can think of many similar Open Source projects that died due to lack of investment.
I would suggest that Open Source Projects might be viewed as occurring along a distribution of “investment needed”. Similarly, those projects might be viewed as existing along a distribution of “revenue potential” and another of “interest generated”. Some set of projects would fall into the category of requiring high investment while having low interest generated — yet those same projects may be more important to our society as a whole.
In the cases that I mentioned the huge engineering investment actually came from proprietary software.
So Open Source changes the model. I’m not so sure this is really the model we want.
>> The Economy is not a zero-sum game. There are many situations in which collective
>> wealth can be generated without impoverishing anybody.
Sure. And sometimes it is a zero-sum game. We could argue “asymmetric information” and “tragedy of the commons” and the boundary conditions of Ricardo’s theories all day. But I don’t think we need to go there.
I view “proprietary is better” to be just as incorrect as “open source is better”. Both have strengths and weaknesses. I feel that we are like we are plumbers arguing about who pays the bill – rather than the strategic implications of the projects chosen and the trade-offs of the project for society as a whole. Open Source vs. Proprietary is just the wrong conversation.
>> FOSS software is a *much better* fit than proprietary software
As a technical person, I can easily find specific cases where proprietary is better for education — or find cases where Open Source is better. But again, that argument changes the focus to the wrong thing. How about each being used for it’s strength?
>> Developers who have been trained mainly with proprietary tools have a poor
>> understanding of the inner-workings of computer systems and have an impoverished
>> culture. In particular: a Visual Studio developer doesn’t know how a compiler
>> works internally. Her only option to learn such things, is to look at GCC
>>(or any other compiler whose source code is available for inspection).
I don’t see how exposure to 100,000 lines of compiler source is the solution. I mostly instruct these days, and the instructor has to provide a path through the appropriate knowledge. So while Open Source can be a good aid for instruction, I don’t find that a compelling case for society overall.
>> In order to propagate a technological culture we must educate engineers and
>> computer scientist with systems that they can open, inspects, modify, tinker
>> with, and talk about with their peers, without being subject to criminal
>> prosecution for doing so.
Again, we are looking at a dichotomy of proprietary vs. open source. What if Software had “fair use” source laws that included source? What if software pricing took into account benefit to society? What if Software funding took into account our best guess about benefits to society? Why are we limiting our view to only two scenarios? Can we get the benefits of both Open Source and Proprietary Software without the drawbacks?
Tony,
Let me clarify that the strict distinction between “proprietary” and “open source” software is not how they are financed, but how they are distributed.
Both proprietary and open source software are copyrighted, and both of them require significant investments to be developed.
Curiously, most people get confused with the economic aspects of open source and miss the fact that it is the open and collaborative aspect of open source what is essential to it.
The strict difference between the two is that “proprietary” software is distributed under abusive licenses (e.g. ones that deprive you, among other things, from your right to “learn how things work” = “reverse engineering”) while “open source” is distributed under permissive licenses, that impose only minimal requirements.
You are right in that in many cases, open source projects benefit from investments and contributions from companies whose main business is to develop proprietary software (e.g. Apple, Oracle, Sun). But, please note that they also get contributions from companies whose main business is to sell cell phones (Nokia), or selling Main Frames (IBM), or selling airplanes (Boeing), selling cars (Volkswagen), selling medical devices (SIEMENS, GE), selling appliances (Tivo), selling books (Amazon), providing financial services (Bank of America), and the list goes on and on…
My point here is that, your implication that proprietary software “pays” for the development and improvement of open source projects, is biased and incomplete. The reality is that “many” endeavors pay for the improvement of open source software, and that are motivated to pay for it, because open source is non-rival good, and everybody benefits from improving it.
—
I fully agree with your proposal that Copyright laws should be modified to make the distribution of source code a requirement under a “Fair Use” clause. I agree as well, with your proposal that the government-awarded monopolies, that are copyrights, should take into account the benefit to society.
I can’t recommend enough the book “The Public Domain”: http://www.thepublicdomain.org/download/. It provides a great refreshing view on how copyright and patent laws should be re-evaluated in the light of the the real benefit that they provide to society, versus the cost they impose by creating monopolies.
—
Coming back to Education:
I insist in that students who are educated with only proprietary tools are under-educated. You just pointed out, for example, the fact that without exposure to open source, students will never see a project with 100,000 lines of code (by the way, GCC is actually, about 8 Million lines of code: (http://www.ohloh.net/p/gcc/analyses/latest). These students have only been exposed to homework projects of ~1000 lines of code. Therefore they do not appreciate the importance of:
a) Version control (CVS/SVN/Git)
b) Bug tracking
c) Quality control dashboards
d) Testing
e) Project coordination
f) Release cycles
g) Documentation
Such students have only been exposed to a “toy” version of the software development word.
Exposing them to the source code of GCC, provide real insight on how things work. The student on our class at RPI patched GCC in a two-hours session,(http://public.kitware.com/OpenSourceSoftwarePractice/index.php/Fall2009/GCC_Hacking_Exercise_) and learned how the parser classifies expressions.
No Visual Studio developer understand a compiler to that level. Their proprietary garden keeps them happily ignorant and prone to the superstitions that something “magical” happens down in the compiler, and that only mythical beings inside a large corporation in the west coast will be able to understand. These engineers grow weak, and they grow vulnerable.
Do you want those to be the engineers who design and implement the software that runs in your car ?
Do you want to retire in a world that is run with software developed by a generation of under-educated engineers ?
The urgency and importance of using Open Source software in Education is simply a no-brainer.
Luis,
>> your implication that proprietary software “pays” for the development and improvement of open source projects, is biased and incomplete.
Yes, but we agree that there is a wide range of funding and licensing. It isn’t a simple dichotomy.
>> I insist in that students who are educated with only proprietary tools are under-educated.
While I’m not particularly attached to proprietary software, I find it difficult to blame proprietary software for poor education. I worry that viewing “open source” as a solution to education issues will obscure the more difficult education problems that must be addressed.
>> a) Version control (CVS/SVN/Git)
>> b) Bug tracking
>> c) Quality control dashboards
>> d) Testing
>> e) Project coordination
>> f) Release cycles
>> g) Documentation
And you believe that these topics should only be taught with an 8 million line source tree??
>> No Visual Studio developer understands a compiler to that level.
In the world of lawyers, there are an assortment of specialties. There is a base level of knowledge and then depth in a specialty. That means that a real estate attorney does not need to become an expert in mergers and acquisitions — unless he wants to.
When I look at most CS students today, they have areas that interest them — and very few of them are aspiring to work on the source to an 8 million line compiler.
So while I agree that a large source tree may have specific benefits for specific topics, I am again very hesitant to declare it as a good general solution to software developer education.
>> The urgency and importance of using Open Source software in Education is simply a no-brainer.
It worries me that you would see Open Source as the solution to poor education in Engineering. I’ve sat in on several classes, and Open Source would be pretty near the bottom of the list of fixes. First would be teaching teachers to teach with a better curriculum. That curriculum may or may not involve Open Source — as appropriate to the topic and to the students.