Open Source Software Engineering Research

I am a graduate student tasked with coming up with a research project for my software engineering course. I wanted to select a research topic that had to do with Open Source Software development. A few ideas I had were:

  1. The development models of OSS development.
  2. The effectiveness and use of formal training of Open Source software developers.

The topic has to be very focused and has to do with Software Engineering. If anybody would like to throw out some ideas it would be great appreciated. Thank you.

Though not strictly to do with engineering, there is a master’s project on Novell and open source which you can locate by entering stoveland_master_final in Google. It may give you some ideas.

Wow that certainly looks like a great read. My topic has to be a lot more focused and the research paper is a lot smaller than a thesis paper would be.

OK what really interests/intrigues you about open source? Don’t start with a grand idea - start with something that has an emotional pull for you because that emotional pull is what will keep you going half way through the project when you don’t seem to be making any headway. Then we can think about how to turn that into a research project.

Thanks for steering me in the right direction John. I am particularly interested in the growth path of a software engineer within the Open Source community. Particularly how does someone go from contributing bug fixes and being an active participant to being hired by a Novel, Red Hat, Cononical, etc. I had to submit my idea this weekend so I determined one thing that ties into this interest is the training. For that reason I came up with this:
So I have determined a SE topic.

Formal Training Within The Open Source Community

Is there any significance placed on formal software engineering training in the Open Source community?

Discuss the prevalence of trained software engineers within the Open Source community.

Discuss the ways in which software engineers are trained within the community.

Determine if there is an open source community that already benefits from the advantages of formal training or if the community pushes on without the need for formal training.

Let me know what you think.

First point: though people talk about the community, there isn’t one community - there are lots. Crudely, there are the kernel, the Apache, the Mozilla, the KDE, the Gnome, the distro communities and the application communities - each one has different needs.

There are lots of trained software engineers within the open source community because (1) companies like IBM, HP, Intel, RedHat, Novell, etc hire them (2) companies hire them to administer a mixture of open source and proprietary software and they may then contribute to the community (3) engineers who have a boring job at work contribute on the side.

The prevalent training within the community is mentoring, informally or formally through the Google Summer of Code, and peer review - getting feedback on your work that enables you to improve your programming skills.

Your last question is too ambitious: you will end up with no or a very superficial answer.

One way you could tackle it is by going through the openSUSE news archives and the KDE archives for the interviews they do with people who work on these projects. Many of them describe the training they have and the steps they took to become key members of a particular community. There may be other communities that also do interviews of this nature and, if you get a list of developers, you may find that Googling will throw up other interviews.

Try and get the answers to your questions through these interviews - so copy down both hard data and useful quotes - and then see if you can analyse the results. I cannot guarantee this will work and you may decide it isn’t going to work for you - but it’s the easiest and least time-consuming way I can think of of trying to answer your questions - other than persuading a number of software engineers to reply to you directly.

Going for all of OSS sounds too broad for me. As John Hudson points out, there are multiple communities with different angles. Some are Linux focussed, some are cross-platform. Maybe you could pick a particular software project, one that interests you, say Apache webserver, or Postfix mail server and work on that. Don’t pick one that’s too big, e.g. kernel or you will find it hard to get enough meaningful data in a short amount of time, or one that’s too small or you may find the project is just a handful of people.