Learning from source code

PeterFRobinson's picture

While there are many arguments in favour of Open Source Software is there not a danger of over-egging the case? For example I have in front of me a document called 'Why Open Source Solutions are more suitable for Edu? which states that 'One of the main characteristics of FOSS is that the source code is available for users to examine and modify. This gives students the opportunity to learn from studying high-quality real-life programmes. In contrast, proprietary software in normally provided in binary form and the source code is seldom released for users to study.'

It would be very interesting to hear of examples of students contributing to OSS projects.

However I have heard the coding argument repeated a number of times, and while I agree that there is a case for looking at the insides, to see how the program is constructed, most users do not most want to start playing around with coding. They haven't got the time or the interest. Just as when I turn on the lights I don't really want to know how electricity works.

So I am suggesting that we need to remember that most people are not attracted to the notion of going in and tweaking programmes. The fact there is a community out there doing so is another, even wonderful, matter.

Tagged:  
John Hammond's picture

That's a fair point Peter, but I don't think anyone suggests the main benefit of OSS is that students can study the code, or even that ordinary users have access to the source code. The vast majority of us are content just to use the software to help us get on with the ICT aspects of our lives.

It is surely the culture behind OSS that is important? The fact that matters is that there is a community of experts out there who are able to review, develop and improve the software and to share those advances with the rest of us. That is why the open source point is important: it provides us all with protection against the vagaries of the commercial suppliers and ensures our investment of learning time will not be wasted.

Other benefits flow from the OSS culture. For example, we are part of a community whose whole basis is founded on collaboration, so help for the full range from inexperienced beginners getting started through to the technically intricate enquiry will usually be found and offered willingly.

But to return to the point you are worried about, it is a particular benefit of OSS. If I were teaching A level ICT, for example, I would find access to the real source code for software the students have been using for everyday tasks extremely valuable. It brings a new notion of reality and relevance to the study of programming and software engineering. So let's not knock that benefit, even if it is only significant for the small proportion of specialists. It does no harm to the rest of us.

The fact that users can and are encouraged to contribute to Free Software projects is surely a positive thing.  The contributions can be in many areas - from bug reporting through to contributing to the code, from graphic design to commenting on what features would be useful.

It may be that when advocating for FOSS then all of these areas should be promoted, but ultimately the project will not work if the code is not there. 

Back in the days of the ZX81 and the BBC B there were programmers in every school.  Kids and teachers were able to write little (and not so little) programs - from games to utilities.  Is the suggestion that our teachers and learners have got less able since then?  My feeling is that they have been told that they cannot code - that it is something best left to the experts.  Well without thousands of people trying to code we will have no experts.

dhicks's picture

[quote=Peter Robinson]This gives students the opportunity to learn from studying high-quality real-life programmes. [/quote]

And even more opportunities to see some good examples of just how many things can go wrong when you have a globally distributed, ever-changing development team with widely differing skillsets and levels of experience. Just [i]thinking[/i] about the Moodle source code still gives me the heebejeebies. Most open source applications don't have any sort of system design documentation, decent database schema or anyone thinking about the user interface properly.

This is irrelevent anyway, as A-level ICT students have no need to go wading through the source code for anything. They're school pupils, they aren't professional software developers or looking to become them, so it would be more appropriate to perhapse look at some good case-studies of open source projects - the Apache server, Mozilla, the Linux kernel - and look at how those are designed and organised.

RE:

Just [i]thinking[/i] about the Moodle source code still gives me the heebejeebies. Most open source applications don't have any sort of system design documentation, decent database schema or anyone thinking about the user interface properly.

That's a rather broad generalization that isn't borne out by the facts.

The world of open source extends well past Moodle; to use it as the defining example places an artificial constraint on the conversation.

Although, Moodle source code also gives me the heebie-jeebies.

Cheers, Bill

--

FunnyMonkey -- Tools for Teachers
http://funnymonkey.com

dhicks's picture

> The world of open source extends well past Moodle; to use it as the defining example places an artificial constraint on

> the conversation.

Okay, fair enough, so can anyone recommend any open source projects that might be suitible for pupils to look at as case studies? From a systems design point of view, and for examaning how people can work collaberativly around the globe, the Linux kernel strikes me as being worth a look. The community-driven aspect of Moodle's development could make an interesting study for an ICT student. For a pupil actually looking at chunks of source code, though, I have a feeling that smaller projects would be more suitible - the sort of applications written by single developers, that have pretty much one function. Places like SourceForge are littered with projects posted up in a flurry of activity, without much by way of documentation or commenting. If anyone can recommend particular projects suitible for a Computing student to take a look at then we might be able to help a few teachers out here.

Firstly, I think that we need to start learning well before anyone gets anywhere near any source code. The FOSS community is a rich educational resource simply because of the way collaborative development can take place. Take Wikipedia. You need to know nothing about code to contribute to Wikipedia but Wikipedia has developed from FOSS methods and values. Teaching young children about co-operative community development provides the basis for progression to contributing to Open Source projects. That is what I designed the INGOTs to do.  They provide QCA/Ofqual accredited qualifications that support progression through the national qualifications frame work from Entry 1 to Level 2 (We will be producing a Level 3 qual for September). This then fits all the national strategies as well as bringing IT learning in line with the biggest change taking place in the software industry since the 1980s.  Here is a list of suggested projects for learners doing unit 2 of the Level 1 qualification (Mostly in KS3). This is from the hand book at

http://www.theingots.org/community/handbook/silver

SchoolforgeUK = Project to share knowledge and information about free and open resources useful to to schools.

Openstreetmap.org = Project to provide a streetmap of the world through contributions by ordinary people

The OpenScienceProject = Project to promote open resources for learning about science

Lilypond = Music project for typesetting music (also Mutopia)

Audacity = Project to provide digital sound recording software

NVU = Project to develop software for web site development

Moodle = Virtual learning environment project

OpenCascade= Open Source 3D CAD project

GIMP = GNU Image manipulation project. Graphics application similar to Adobe Photoshop.

Mozilla = Web browser project similar to Internet Explorer but with some more advanced features.

OpenOffice.org = Office software suite similar to Microsoft Office

OpenOffice Authors = Project to provide free manuals for the OpenOffice.org software

OpenDocumentFellowship = Project to promote the ISO26300 open document format

OpenClipArt = Project to develop a free and open clipart library

Wikipedia = Project to develop a free encyclopedia

Yellowikis = Free Yellow pages service for advertising businesses

The Level 2 Gold INGOT progresses from this to requiring learners to create a digital resource or service for the community and make it available under a Creative Commons Share-alike license.

The Level 3 INGOT will introduce programming - probably in Python. It will be where learners first get to grips with coding - Inkscape, for example, is written in Python and there are many tutorials freely available on the net.

INGOTs also provide Diploma Units under additional and specialist learning. We have many primary school children doing the Entry level qualifications providing progression from KS2 to KS3. With Diploma units available in KS3 for essentially doing the National Curriculum with an emphasis on open systems. There is no need to change any technologies, just to learn about some of the issues. Quite a lot get the Level 2 by the end of KS3 so they can do the Level 3 in KS4. We therefore have progression routes for the full attainment range from special needs to G&T. No doubt some G&T individuals can get to grips with source code earlier.

http://www.youtube.com/watch?v=8mwKq7_JlS8
12 year old Drupal Developer giving a Google Tech talk  :-)

With universities now offering degreesin Open Source and MScs and PhDs, when we get the Level 3 done we have progression from compete beginner to doctorate. Learners going through these pathways will be far better placed to make objective decisions about the tech tools they use rather than simply defaulting to the brand with the biggest marketing budget. They will also be empowered to learn through community participation and perhaps contribute useful resources to the community as part of their learning. Well that is the strategy, it will just take a bit of time to get there :-)

 

 

 

 

 

 

 

 

dhicks's picture

Okay, but can anyone name an open source project that they can particularly recommend as being suitible for the average A-level Computing student to look through as a good example of how to write code?

Alan Bell's picture

http://gnome-sudoku.sourceforge.net/ nice little game, everyone can understand it and have fun playing it. The code is easy to understand, it is a python application with user interface definitions in glade files. Not too complex, reasonably well comented code. I think an A level student could have fun learning about this one. There are fairly obvious projects you could do with this as a start point by changing the board layouts and rules slightly.

Alan Bell's picture

to take another angle, rather than looking for full applications, look at Firefox extensions or OpenOffice.org plugins or anything with a plugin API. These allow a useful function to be performed with not a scary quantity of code.

dhicks's picture

[quote=Ingotian]The Level 3 INGOT will introduce programming - probably in Python.[/quote]

I think there should be a clear seperation between "programming" - the thinking-skill that every pupil should have that lets them go tell a computer how to carry out repetative instructions - and "software development", the art / craft / profession of churning out source code for a living. Python sounds perfect to teach pupils computer programming, but we shouldn't assume that just because a child shows a particular talent for programming that they will wind up working as a software developer for a living. A-level computing should be the first point at which a pupil might encounter real-life working source code in the form of code that someone else has written, as an example of what software engineering is all about, prior to that they should be learning more general, non-profession-specific subjects.

There's a danger that we, the community of open-source schools advocates, tending to be the kind of people who learnt to program in our early teens, might forget that the average user has no interest in the details of how a particular application might work, or how software in general turns up in front of them. Going back to what I think was the original poster's point here - listing "you can examine and change the source code" as a major selling point of open source software isn't going to impress most end-users.

[quote]With universities now offering degrees in Open Source[/quote]

Seriously? How do you do a degree in Open Source? Can't universities just teach people how to develope software and leave the licensing details up to them?

Alan Bell's picture

[quote=dhicks]

There's a danger that we, the community of open-source schools advocates, tending to be the kind of people who learnt to program in our early teens, might forget that the average user has no interest in the details of how a particular application might work, or how software in general turns up in front of them. 

[/quote]

There is a danger that the community of maths teachers might forget that the average person has no interest in the details of how a particular answer turns up on the screen of a calculator.

That doesn't sound right does it! Or rather it does sound true, but it doesn't sound like education. I think all software in schools should provide the students (and staff) with the freedom to study it. Whether or not that freedom is always exercised in the full isn't the point.

Real life doesn't have clear bifurcation. Just because a child shows a particular talent at English doesn't mean they will end up as a journalist yet we still use practical contexts for learing in most lessons eg a newspaper day in English lessons. Why? Because it brings menaing and motivation to what they are learning.  I certainly didn't learn to program in my teens. Most of it was because it was practically useful to me in a job at the time so there was a practical reason to do it. Context is important in learning and if we try and separate it from process and content we end up with a one or two legged stool. It falls over. It's interesting that we say end users are not interested in the source code - I agree most are not but then most end-users of mathematics are not interested in how to factorise equations yet we still teach it. Large chunks of the statutory curriculum have no great interest or use to the general public. Why make a special case of technology?

Why all these restrictions on what children should or should not do at a particular age? Personalised learning is about transcending such restrictions and letting them do things wen they as individuals are ready.  The technology enables that as never before.

"With universities now offering degrees in Open Source"

"Seriously? How do you do a degree in Open Source?

You learn about community development - hopefully through participation - you learn about how to work collaboratively with other volunteers around the world and perhaps how economically viable business can be built without having to sell software licenses. Maybe you also learn about the range of free code that is out there so you and your future employers can benefit from it. Since you can do a degree in applied sociology I could see a case for a degree in Open Source purely from the community aspects.

Can't universities just teach people how to develope software and leave the licensing details up to them?

The entire approach and method of developing Open Source software is different. It's not simply closed source methods issued under a different license.

 

 

dhicks's picture

[quote=Ingotian]It's interesting that we say end users are not interested in the source code - I agree most are not but then most end-users of mathematics are not interested in how to factorise equations yet we still teach it. Large chunks of the statutory curriculum have no great interest or use to the general public. Why make a special case of technology?[/quote]

Oh, indeed - every child should be taught programming, at as young an age as possible - it's a great tool for them to have avilable to them, to be able to go and tell a computer how to work on a problem for them. Certainly, children who show an interest shouldn't be discouraged from investigating further. Still, none of this is "software development" - plonking some poor child in front of a lump of code (unless it's a partiulary well-chosen chunk, suitible as a good example of coding form) is just going to scare / bore / confuse them.

[quote]The entire approach and method of developing Open Source software is different. It's not simply closed source methods issued under a different license.[/quote]

Okay, so open source projects in general maybe involve more distributed teams (with corresponingly better use of source code control, hopefully), and maybe there's more one-person open source development projects around, but ultimatly computer programming is the same the world over. You average closed source project probably gets to use fancy SCRUM / XP / pair programming / etc techniques more, if only because of physical proximity, but it'd be a pretty crummy degree that didn't simply whizz all of those, plus more, past you so you got the idea of what was out there. Otherwise it'd be like doing a whole degree and only learning one programming language instead of seeing a bunch of different ones go past.

Alan Bell's picture

I am equally unconvinced that a full degree in Open Source software is a viable subject (but then I am not sure about American Studies either) however I am certain that the subject has sufficient depth and distinction to be a module or two in a Computer Science BSc. This academic discussion is somewhat academic though, this is OpenSource Schools, not OpenSource Universities, perhaps someone from the project team could help define the scope and direction a bit more.

annem's picture

Good point, Alan.  I guess this discussion is straying into the territory of our sister project, OSS Watch (www.oss-watch.ac.uk) which provides an advisory service on open source software for FE and HE.. Our target audience is teachers, heads and technicians, and other educational personnel, e.g. LA advisers, in the primary and secondary sector. See About Us and Writing for Open Source Schools in the Create content menu (just thought I'd mention the latter, all contributions welcome).

Anne

Alan Bell's picture

Quite a lot of students/young people work on Open Source projects. I know a lot of developers on Free and Open applications, the vast majority I have no clue whatsoever about their ages (or gender, race religion etc) and it doesn't matter. I happen to know that Linus Torvalds handed over the maintenance of the Linux 2.4 kernel to Marcelo Tosatti when he was 18. There are enough young people in the community that meeting up en mass in a pub is not always a good idea. Personally I did loads of programming from about age 8 when I got a Spectrum. Programming is fascinating, and very varied in complexity, you wouldn't say "young people won't understand maths because differential equations are hard" you don't need to start with the hard bits.

I agree, programming is practical problem solving and a very good way of supporting cognitive development. I ran a computer programming club for mixed ability 11 year olds teaching them how to program  space invaders type games 20 years ago.  It was popular. There are masses of tutorials on everything from Python to PHP. Take a look at www.theingots.org/Ottos_club. These web based games are all Open Source and we can provide the source code to anyone that wants it. Maybe some of the A level students could add more of these or improve the ones that are there. If we got that going on a reasonable scale it would be practically useful for primary schools because they wouldn't have to install anything and they would get a lot of free resources. The 500 million spent on curriculum on line translates into about £50,000 of development money for every hour of curriculum time. Think about how much more efficient it would have been to provide learners with a bounty of £500 for providing a web based application supporting a lesson in the national curriculum. It would stimulate the number of young people learning computer programming skills and provide a lot of very useful resources. Learners would be involved in producing their own resources.

Alan Bell's picture

now this is getting to the nub of what I think the Open Source Schools project should be all about. Mapping software to the national curriculum. Explaining not just that GCompris is available and can be used in lessons, but that a particular set of boards and exercises at a particular level when used in the context of a good lesson plan (a wiki for lesson plans would be ideal) is a best practice way to implement a particular subject at key stage x level y. The goal could be to develop a full set of lesson plans to implement all of the national curriculum using Free and open source software.

To an extent that is the longer term goal of the INGOTs. Anyone can use the INGOT community site. Learners can use it for blogs and e-portfolios and hopefully they will eventually start contributing useful resources. Teachers could just as easily use it for sharing lesson plans or other teaching resources an we will use income from the INGOTs to manage, originate, organise and draw together useful free resources . There is a start on a resources section http://www.theingots.org/community/resources/other

We are starting collaborative work with EU partners translating the INGOT assessment criteria into different languages. http://theingots.org/community/euprojects

More a proof of concept at the moment but then we don't have 500 million to invest ;-)

Here is a simple hangman game for revising terms associated with Open Systems for the INGOT qualifications

http://www.theingots.org/Ottos_club/hangman/

 

 

Alan Bell's picture

I am a few quid short of 500 million myself. The Ottos club thing looks really great, but at the moment it is a list of games, each one having a link to the teachers guide and key stage info, great content, but organised the wrong way round. I think it would be better to navigate the list by subject and level. At the moment I click on Potato Guy, then teachers guide and it then tells me this is good for Key stage 1 - Art & Design. I think a teacher would want to click Key Stage 1, then Art & Design, then see that the Potato Guy activity can be a good supporting actvity in this area.

You are right, but the issue is one of time and resources to do the development. Ottos club (Otto is the OpenOffice schools project mascot that resulted from a competition I ran wih Daniel Carerra) was really just an idea to reward younger learners when they achieved a Bronze INGOT and give teachers a differentiated resource for those that completed the certificates quickly. Linking those to the NC seemed a good idea. At present all our resources are going into the products that make the possibility of developing the on-line curriculum sustainable so things like Ottos cub are just concepts waiting to be developed.  The business strategy is to use QCA/Ofqual accredited qualifications to provide a focus for learning about open systems and community participation and at the same time provide a sustainable income for developing open learning resources. We can lower the costs of accreditation and still have enough income to develop the resources needed to support the curriculum - especially since we can do this internationally and benefit from massive economies of scale. It's just going to take time because we have to build things up without any great investment.  We have good links into Malaysia, India, South Africa and Eastern Europe so a lot of the ground work has been prepared. What we really need is not a national curriculum but an international curriculum that provides free participation and resources for all the developing countries. That would be more effective than most of the education aid programmes.

Alan Bell's picture

Linking them to the NC is not just a good idea, it is an excellent idea. Time and resources are needed, but that is the lovely thing about community. Resources by the truckload if you can enable, motivate and organise. According to the DCSF (who need to start publishing spreadsheets in .ods format not .xls) there were 519,800 qualified teachers in the UK in 2005/6. Teachers are by no means the only part of the community that could help, the pupil:teacher ratio is about 17.6:1 and assuming a 1:1 pupil to parent ratio this gives us a total of 9,668,280 teachers and parents. (yes, the sets of parents and teachers do intersect, but I am ignoring that). So when you add in a handfull of retired teachers and non-uk based educators and parents (there are other countries that follow the UK national curriculum) we are up to 10 million or so people with an interest in the education system. Lets say 1 in 10,000 could possibly help in some small way. That is 1,000 people who together can get a lot done. Of course these numbers are plucked from thin air (and the office of national statistics) but it just goes to show that a lot can be done with a small fraction of a big number.

IanL's picture

Agree that BECTA should be leding and putting pressure on all DCSF to publish documents in the ISO Open Format. its actually mandatory according to World Trade agreements to use ISO standards where they exist. A lot is down to ignorance which is part of what we are trying to put right through the INGOTs.

Your statistical analysis is sound and is relevant to the INGOT strategy. It is nigh on impossible to get new learning into the curriculum if it does not lead to recognised qualifications. Hence me spending two years going through the system for setting up a new Awarding Organisation and getting INGOT certificates accredited for pre-16 use and making sure our methods fit contemporary best practice and innovate to lower costs. At the moment we don't have the numbers (although over 30,000 certificates have been awarded since we started) or the community expertise to expect major community contributions. We do have a sustainable system that rewards learning and comuniy contributions through accredited certification and enables the community to grow and learn at the same time. Eventually we will get to the point where resources become sustainable through voluntary contributions but in the mean time we have a start. We will be able to supplement volunteer contributions with income from the certification so we don't get into a situation eg like with wikipedia where we have to keep going cap in hand for contributions to keep the project viable. We want to scale globally because again this improves the economy of scale and extends from give a brick get a house to give more bricks and get a city. 

So again I agree that "enable, motivate and organise" is the key. In education qualifications do all three as well as providing the income to make the whole thing sustainable.

PeterFRobinson's picture

I know the arguments and attractions for learning programming. I originally got into computers as a trainee computer programmer, straight after leaving school, in the mid-sixties. So I am not against people learning programming; it has some attraction. As the postings so far show.

But, as I tried to say in my opening post, there are many people who do not want to know the innards; indeed they might be scared by this. We need to be convincing these people to use Open Source. In this context the emphasis has to be on a different tack, along the lines that Open Source is easy to install and professional.

Peter Robinson writes:

... In this context the emphasis has to be on a different tack, along the lines that Open Source is easy to install and professional.

Well, plenty of proprietary code is easy to install and professional. Open source almost surely brings TCO savings, but then so do free (as in beer) software and cloud based web 2.0 apps like Google Docs.

For me, the Unique Selling (er...) Point of open source software is its adaptability - access to the source code means that any user, any school can tailor their software to their exact requirements. Each school is unique, so why should their VLEs, PLEs etc have identical functionality? You see this most often and most clearly with web-based applications like Moodle, Elgg and Drupal, particularly given their modular architecture, but the same is true of desk-top and server applications, although I'll admit the learning curve is that little bit steeper in these contexts.

I think there's much to be said for teaching programming - we start with Logo in Year 3 using kturtle and I'm running a programming club for Y3-Y6 this term. I have fond memories of BASIC on the ZX81 and the BBC Micro, back in the day when Computer Studies CSE and O Level meant writing programs. A few further thoughts on programming at http://milesberry.net/?p=472

Miles.

These thngs are not mutually exclusive. We can in some lessons teach computer programming as an option for those that are interested in it. In others we could show how easy it is to use a live CD to try out software or recover data from a broken system. I doubt many teachers or learners do any software installations in school anyway - the systems are too locked down. On the level of using say Open Office, audacity or Inkscape I doubt anyone would find them much different from any other apps. Getting them on the system is more likely to be the issue, educating the gatekeepers - tech support staff.

dhicks's picture

[quote=Ingotian]Getting them on the system is more likely to be the issue, educating the gatekeepers - tech support staff.[/quote]

That and educating people, especially teachers, a bit more about software licensing in general. The reason our school machines are locked down is because otherwise they have a tendancy to wind up with viruses, random copies of software from home and pirated copies of software (generally complete with documentation detailing how to bypass the copy protection) installed. People have a tendancy to use propriatory software that produces propriatory file formats, too - there must be thousands of hours worth of work, ideas and materials disapearing into locked file formats (interactive whiteboard software, in particular, is poor for that kind of thing).

lord_alan's picture

I thought this http://dkysven.wordpress.com/2009/01/29/introducing-to-ubuntuweblogs/ was interesting and relevant to this thread...

I’m using Ubuntu 8.10 at both. One is a Packard Bell EasyNote MZ35-V-054 and the other, which I have got from school is an HP Mini-note 2133. I’m trying to get more involved in the development of Ubuntu and the great comunity around it. Currently it’s the Artwork team I’m trying to get involved with, but I’m also learning a bit Python. Tools I use are Inkscape and The GIMP, both great examples of what Open-Source can do.

Not bad for 15 year old who's native language isn't even English...