Slashdot Mirror


What Makes an OSS Class Work?

AnimalCoward writes "I teach a Continuing Education courses in OO programming at our local state university. An email was just sent out from the program director asking if any instructors were interested in developing, and teaching, a course in OSS. My question to the slashdot crowd is: What would you want to see in an OSS class? What should be included? Should I bring up all the discussions about liability and multiple OSS licenses? The request didn't state it, but from experience I believe the students would have a programming background ranging from only mainframes to C++ to those with some Java experience."

16 of 246 comments (clear)

  1. License and patent issues by Frogbert · · Score: 3, Interesting

    Well you could go over the differences in GPL and BSD as opposed to other licenses and have them find out what effects patents have on software.

  2. IT Law by daveed · · Score: 5, Interesting

    OSS isn't strictly an IT issue. It's a rights issue. Who owns software? software design? concepts? ideas? thoughts? This sounds like what I should have been taught in our semester of IT Law (As apposed to the far too specific individual legal cases to do with Data Protection Act (still very interesting though)). If you were to take this class. A major part of the course would have to be the GPL. This has to be the most clear cut academic outline of OSS. In short... Very good idea :)

  3. Is this for Continuing Education? by PDXNerd · · Score: 4, Interesting

    You said "Continuing Education" which I translate as "Not-for-credit", or in other words, a class one takes in ones own time which does not count towards anything other than personal satisfaction or career enrichment.

    Look at your target audience: beginning to mid-level programmers with no real-world experience. Adults, probably older than college-age, who have families and careers (or not) and are looking to learn. If they take an OSS course, they are interested.

    Don't scare them off by jumping straight into philosophy and legalities - explain the history of OSS by exploring what is GNU, why they existed, talk about the split between ATT UNIX/BSD/etc. Introduce Linux. Introduce the wide-range of programming tools available. THEN, and ONLY THEN talk about the details. If you don't pique their interest right off, you are liable to scare them off. Most programmers I know aren't too keen on using their free time to discuss legalities and philosophies. (I know you exist out there, but you are not the majority.)

    1. Re:Is this for Continuing Education? by stuffduff · · Score: 2, Interesting

      Personal Satisfaction - That would make a good way of looking at a continuing ed course. As for how to teach it, I have a three pronged approach to suggest. "I know why things are this way." One branch is simply the history of what happened, so that we can see how personalities and philosophies were cross-pollinated by different hardware and software that was available at the time. Consider the birth of Unix as one example, Microsoft as another and Linux third. "I know how to how to do it." Another would be the practical aspect of it. Make up some teams, give each the chance to scrounge around for some freebies, older computers (not necessairly pc's) and see what they can find that will run on the hardware. How to select an operating system, how to download, install and configure it. "I know how to give and get support." Now that there is a working system, give them the challenge of making it do something useful. Web server, mail server, end user workstation, whatever. Have them choose the software components and glue them together with a scripting language. Help them to learn how to use the web and newsgroups to ask and answer questions. I think that this, along with the ability to select a possible replacement for any given strategy, hardware, software, design would be the way to go. The key is to equip the students with a rudamentary skillset to make decisions about OSS, when its use is or is not appropriate, etc.

      --
      "Can there be a Klein bottle that is an efficient and effective beer pitcher?"
  4. Re:Fundementals by sameb · · Score: 4, Interesting

    Indeed. A class on OSS is a business, legal or philosophy class, not a programming class. That doesn't mean CS students shouldn't have an OSS class, but if they do it certainly wouldn't be a programming one.

    If you want to do a programming class, use whatever code makes sense in teaching kids how to program. If you want to teach about how to use existing libraries while programming, make that an assignment -- ie, have an assignment that requires building a servlet, or making an http connection, or using various collection utilities.

    One problem with many college CS classes is that they ignore existing libraries. Yes, students need to learn how to do a bubble sort and build a linked list and prevent collisions in hash maps... but, students should realize and understand that it is often counter-productive to build these utilities themselves, especially when the existing ones are so widely used (meaning they're heavily documented and debugged).

  5. Get inside the code by N1AK · · Score: 2, Interesting

    Obviously the other posters are correct about the OSS mentality being a major, if not the major area.

    However, I think perhaps if you were to take a look at some interesting open source applications, and come up with some changes you could implement (or even ask the class to implement). Showing them that with OSS they have the power (and right) to go in and change everything from an OSS, to a egg timing widget, might demonstrate the control and empowerment use of OSS can give.

  6. Re:Be sure to include..... by Anonymous Coward · · Score: 1, Interesting

    We have a dedicated Software Engineering degree (not a single course) where marketing is one of the courses (1 semester only, though).

    Not that there is much to be expected from it; it's the same senseless unrealistic bullshit that is common for all courses I visited so far.

  7. One-time seminar by compupc1 · · Score: 2, Interesting

    Well I would tend to say this would be a topic best suited for a one-time seminar, or as one topic within a larger class. You should cover the legal, ethical, and business aspects of OSS, as well as maybe an introduction to some popular project, common tools, etc. HOWEVER, you as an instructor have a duty to present an unbiased view. To offer a class specifically about OSS is the same as offering a class on say .NET programming or on Oracle. This is a biased view of the world. Ultimately, the programming concepts should be the same, regardless of whether your source is closed. You still need a methodology, you still need well written code, you still need efficient algorithms, you still need design patterns, etc. That doesn't change. In reality, OSS is more of a business model than a particularly technical topic. Don't offer an "OSS programming class" -- that's just "programming class" with an OSS bias. Rather, discussed as a one-time topic, just to get students aware of what OSS means and how it might impact them. The programming concepts should remain independent of the business model.

    --
    -James
  8. Topics by Anonymous Coward · · Score: 2, Interesting
    Here's a list of topics, in no particular order:
    • OSS history. Include usual suspects: RMS, Linus. Compare with proprietary software.
    • OSS licenses: GPL, LGPL, BSD / Apache / MIT
    • Installing OSS software: configure, rpm, deb.
    • OSS libraries: gettext, readline, etc.
    • OSS toolchain: make, autoconf, m4, cvs, etc.
    • Languages used in OSS development: C, Java, Perl

    Each of these topics could form the basis for a semester-level class by itself. I'd do one lecture on each of the first five topics, then pick a language and toolchain and do the rest of the course in that language. Call the course "Developing OSS in C"
  9. OSS (Operational Support Systems) by tyagiUK · · Score: 2, Interesting

    Are you sure he wasn't proposing a course on Operational Support Systems (OSS)? http://en.wikipedia.org/wiki/Operational_Support_S ystems.

    I'm not an OSS guy, but coupled with some sort of "management of IT systems" and a more IT-oriented course, an OSS element would probably be really useful.

    --
    Contribute to the online videogame encyclopedia: GamerWiki
  10. Re:Fundementals by greginnj · · Score: 5, Interesting


    What else you ask?
    Uhhh, I just thought of an important one. What about "how to make money?"


    On this point, I think the example of Zope is illustrative. Investor Hadar Pedhazur was willing to pony up venture capital to fund Zope Corporation, on the condition that they open-source Zope. I'm not really a Zope fan, but the idea of an investor requiring a company to open-source their principal asset struck me as a hard-dollar vote for the value of OSS.

    See this for refs:

    http://www.faqs.org/docs/ZopeBook/IntroducingZope. html ("Zope History" section)

    More detail:

    http://washington.bizjournals.com/washington/stori es/1999/05/24/focus4.html

    --
    Read the best of all of Slash: seenonslash.com
  11. Missed one by RingDev · · Score: 2, Interesting

    Lesson 13: How to make OSS profitable.

    -Rick

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
  12. From the class I'm teaching right now... by sailracer6 · · Score: 2, Interesting

    Here's an overview of the topics I'm covering this semester in an OSS course I'm co-teaching. The audience is undergrads at a major university...

    Note that we were also trying to improve the general technical literacy of some of the CS students.

    1) Open-source Projects -- History, Present, and Future
    2) Unix Philosophy -- ESR's "Art of Unix Programming" was incredibly useful here
    3) Using the Unix Toolchain
    4) Using the classic text editors (Vim/Emacs)
    5) Learning Python / Programmatically Manipulating Text
    6) Source Control Management Systems
    7) Bug-tracking
    8) Open-source team communication
    9) Licensing your OSS (the intention is to have a working project completed by the class in Python by this point)

    Right now we've just passed #4 and have settled on a simple project (a Web app) that the class can work together on in Python. That way, we can use it to demonstrate how to use the tools we talk about in topics 5-9.

  13. Re:Get Involved by kbielefe · · Score: 3, Interesting
    I would take this idea even further. If it is a semester-long class, I would make the term project be to get a patch accepted in an open source project. You learn a lot in the process of getting a patch accepted, most of which is not related to coding at all. You learn how to gain rapport with a community, how to find and fill a need in a way that is acceptable by all members of the community, and how to follow through. These are the aspects that are really different from closed source programming.

    The patches don't have to be huge leaps in usability in order to be useful. There is a lot of stuff to do if a reasonable effort is made to look. Some suggestions:

    • Pick a bug from the bug database. There are some bugs that get ignored because the main developers can't reproduce them.
    • Update a plugin or theme that broke when the parent package was upgraded.
    • Ask on the mailing list what needs work and would be good for a newbie to tackle. I almost guarantee they will have a list they haven't gotten around to.
    • Try out a lot of different open source applications in different ways. I once found a one-line bug in an app because I was trying to import a unique file. I was only evaluating the app for a few hours, and I decided not to use it, but my tiny fix is still in the code base.

    This might even work for classes with non-coders. Updated documentation is sorely needed for many projects and the process of getting it accepted is similar. Submitting a unique and useful bug report might be another acceptable project for non-coders. Correctly answering 10 questions in a support forum might be another.

    --
    This space intentionally left blank.
  14. Re:Fundementals by Anonymous Coward · · Score: 1, Interesting
    Topics to cover:
    1. why oss (for users, developers)
    2. licenses (GPL, LGPL, BSD, definition of Open Source)
    3. philosophy (vendor lock-in, naturally forming monopolies, free market, freedom to research, freedom in general)
    4. how model compares to closed source
    5. myth of security
    6. copyrights (contributory infringement ala Battle.Net, Morpheous)
    7. patents (development of PNG, Ogg Vorbis, Ogg Theora)
    8. Jurisdiction issues (why some projects, such as mplayer are only hosted outside the US)
    9. how laws such as the anti-circumvention provision of the DMCA affect OSS OSS history
    10. OSS (Eric S. Raymond) vs. Free Software (Richard Stallman)
    11. Open source vs. open standards
    12. liability
    13. OSS successes/strengths (the Internet, BSD Unix, Linux, KDE, Gnome, enourmous resources, doesn't have to be profitable, software isn't out to nickel-and-dime users)
    14. OSS failures/weaknesses (XFree86, usability, poorly planned, lack of polish, lack of resources in some fields)
    15. Threats to OSS (Digital Rights Management, patents, DMCA)
    16. How OSS threatens others (Microsoft, Bitkeeper, SCO)
    17. Members of the OSS community (hobbyists, volunteers, students, paid professionals)
    18. History of UNIX
  15. Teach them bug tracking by cerberusss · · Score: 2, Interesting
    I had some irritations in using OpenOffice, logged a bug and waited two-and-a-half year before it was fixed. I wondered, why the flying fuck did it take so long? Because it's all open source, I could dive into OO.org's issuezilla and discovered it's not always plain and easy. I was amazed by the complexity.

    My advice: ask your students to look at one of the big OSS project its bugzilla. They all have a few bugs which have a history of YEARS. Tell them to pick such one out, and comment on its history (why, how, who, where, when).

    They'll get a feeling for the complexity of software projects. As a side dish, let them fix the bug.

    --
    8 of 13 people found this answer helpful. Did you?