User:JDavis
Janet Davis is the founding computer scientist at Whitman College. Yes, she is very busy. She has a homepage at Whitman and a blog about her experiences.
Janet has prior experience teaching software development with community-based projects in her former role at Grinnell College. She is concerned this model may not be sustainable in a department of three faculty and is therefore exploring other models for community-engaged software development.
Contents |
Reflections on User-Centered Design & Open-Source Software Development
My research is in human-computer interaction (HCI), and I regularly teach user-centered design (UCD). I've also come to regularly teach a software development course. You'd think these things would be entirely compatible, but in fact there are some deep conflicts between the approaches.
I've long been aware of the tensions between agile software development and the user-centered design process. They share the practice of iterative design and development. But where agile says start coding as quickly as possible, user-centered design indicates that you must, at least, have a conceptual model that is well-grounded in understanding the target users and domain. I have made my own contribution to resolving this tension, and I think there is work towards a consensus that designing and validating a conceptual model is part of the practice of doing Just Enough Design Initially.
Reading excerpts from Eric Raymond's The Cathedral and the Bazaar has made me aware of a tension between the underlying values of UCD and open-source software (OSS). Raymond writes in The Social Context of Open-Source Software:
18. To solve an interesting problem, start by finding a problem that is interesting to you.
This stands in sharp contrast with the first principle of UCD:
You are not your user.
This is meant to emphasize that what makes sense to you as the software developer, what is useful to you, may not be useful or what makes sense to the people (usually other people) who will benefit from using your software.
I can see both sides of it. If software is useful to you, yes, chances are good it will be useful to other people as well, and there is value in sharing it. And if there is a need, there should be enough people empowered to develop software that someone in the open-source community is working on fulfilling that need. But it's impossibly idealist to assume it is. There's also a HUGE tension between Raymond's maxim and the idea of involving students in HFOSS, which is engaging students in solving problems that are not their own problems.
I'm going to channel my students and say I find these historical readings not inspiring but problematic. What have women and other people from outside the dominant software culture written about open-source software?
Intro IRC Activity
- How do people interact? Very easily. Darci seems to be in charge of the meeting. She introduces the topics ("updates", "next steps") and records the minutes using the meetbot. From a not-too-careful skim, it looks like everyone takes turns stating their updates and next steps. There is a conversation about each person's updates as others ask questions or offer advice.
- What is the pattern of communication? Is it linear or branched? Formal or informal? One-to-many, one-to-one or a mix? The conversation is branched, informal, and a mix of one-to-many and one-to-one. Sometimes one person holds the floor for several turns.
- Are there any terms that seem to have special meaning? The meetbot commands - #startmeeting, #topic, #info, #action, #link, #endmeeting
- Can you make any other observations? I noticed that john_ has an underscore_ after his name. Is this transcript recorded from his perspective? - Yes. And does "* john_" indicate a private thought rather or a public utterance about oneself in the third person? Also, this is interesting: "18:31:39 <Stoney> (sorry person at door... i'm back... reading)" I think he wrote this because Heidi had just asked him a question but he needed some time to answer it.
- Bonus question: Why didn't Heidi and Darci's actions get picked up by the meetbot? The meetbot seems to be case sensitive. Their usernames were typed incorrectly, with a capital letter ("Heidi", "Darci" instead of "heidi", "darci")
I observed the Ushahidi IRC channel (#ushahidi on Freenet). I found a grad school classmate there, Pat. I tried to start a private conversation, and wrote a public message by accident. I asked if there was much going on, and she invited me to join the Ushahidi skype group. There were a lot more people connected to the Skype channel than to the IRC channel, but still no conversation. About 24 hours later I got an invitation to join the Ushahidi group on HipChat as a guest.
I joined the #sahana-eden channel also.
I tried joining #mousetrap on irc.gnome.org. I found a bot and Kevin Brown. Not much going on. I also joined the Gnome accessibility channel, #a11y.
I finally joined the foss2serve group in hopes of observing something. It was totally quiet! I wonder if I would have seen more if I'd been able to observe on a weekend.
Project Anatomy Activity
Sugar Labs
Contributions. I could most easily see my students getting involved as developers, since this would be the point of engaging with the project in an upper level software development class. I could also imagine having students engage in design during part of my HCI class. Students might also draw on their liberal arts skills to engage as content writers or translators. Other possible engagements are contingent. For example, if my local schools wanted to adopt Sugar, my students might also take on roles of People Person or Educator as well.
Tracker. To report a bug, go to the github page, find the relevant activity, sign in to GitHub, and visit the Issues tab, and click the big green button to file a report. If you haven't written bug reports before, read this guide. It looks like you just write a title and some text. I'm not sure if or how this is connected to the information on [1]. How do issues get from GitHub to Trac?
Repository. It looks like [2] is an out of date link since the last activity was in 2014. There is a new repository hosted at [3] where the last activity was about two weeks ago, so, a web-based common repository.
Release cycle. The release information says: "Each release cycle will include development, beta, release candidate and final releases." The roadmap is updated by the release team at the beginning of each release cycle.
Sahana Eden
Community. Sahana Eden has similar roles to Sugar Labs, including Developers, Translators, and Designers. Other roles are conceived differently: Sahana Eden has not Content Writers and Educators but rather GIS Specialists, reflecting a different problem domain. There are Testers, Documenters, and Bug Marshals, all roles I could imagine my software development students getting involved with. There is an explicit SysAdmin role---maybe because Sahana Eden, unlike Sugar Labs, includes a hosting service? It seems like the sysadmin needs for supporting development might be similar, so it's odd Sugar Labs doesn't have this role. Instead of People Persons there are Newsletter Report Writers, maybe reflecting a less involved relationship with the user community.
Tracker. There are lots of categories of bugs, and they seem to be organized by status/severity/urgency instead of by sub-project. The information about each report seems to be pretty similar.
Repository. You get the source code using the command git clone https://github.com/sahana/eden.git
. So there is a web-based repo hosted by GitHub.
Release cycle. The provided link seems to indicate there are three active milestones: 0.9 (2011, 92% complete), 1.0 May 2012, 72% complete), and 2.0 (no date set, 98% complete). I really don't understand this.
Each has a list of key features required. You can click on the progress bar to see information about all the tickets assigned to the corresponding milestone.
I'm kind of lost - I would need some orientation to understand the project status and what happens next.
But going back to the developer page, I found a link to a list of Blueprints -- descriptions of projects that want implementing. I also found a link to Requirements for Sahana 2 which might be a good place to read to understand what's going on with the project.
Reflection
This activity is pretty challenging since projects seem to reorganize their information from time to time, and there is a lot of different (possibly related) information fragmented across different locations that is not necessarily linked together. I would almost rather have been sent on a scavenger hunt with only a link to the project home page and keywords to put in Google rather than links to specific pages that seem to be maybe out of date.
FOSS Field Trip Activity
Part 1 - SourceForge
I searched for projects under Simulations. There are nearly 3000 projects in this category written in at least 15 different languages. The most common languages are C++, Java, C, and Python.
I could not find definitions of the project statuses on SourceForge. Here's what they mean to the best of my knowledge:
- Inactive - No longer under development; last updated more than 90 days ago (?) - based on looking at the projects with this status and sorting by last update
- Mature - Reliable, actively maintained, field-proven (?) - Stack Overflow: What is mature software?
- Production/Stable - Testing completed and ready to use
- Beta - Black box testing by users, often a select group
- Alpha - White box testing by developers - Source: Software Release Cycle, Wikipedia.
- Pre-Alpha - Not yet ready to be used
- Planning - Implementation hasn't started yet
Automata Editor is listed as Mature, while Logisim is listed as Production. Both were last updated in 2013 and I thought that Logisim was no longer under active development. Automata Editor has had 37 downloads in the last week and two ratings, while Logisim has had thousands of downloads and 84 ratings.
Sweet Home 3D is the most popular in this category at over 125K downloads this week. I sorted by "Most Popular." I suppose it's most popular because it has a broader audience than most software in this category.
I looked more at the GNS3 project. I'm curious about it because once upon a time I used NS3 in my research.
- It is used for simulating computer networks.
- It is written in Python.
- I think it is used by network students and/or administrators, from reading the one review that says something more than "great job."
- The last update was 17 hours ago. It looks like that was a nightly build.
- Nonetheless, it doesn't seem very active. The last bug report is from 2012. How can I find out when the last commit was?
- There are two committers, gns3dev (a group?) and noplay (an individual).
- I would consider using this project since there are 5K downloads a week. I'd probably go do some more reading to find out what the alternatives are.
Part 2 - OpenHub
- The main programming language used for OpenMRS Core is Java, which also has the highest comment ratio. The project uses a total of 15 different languages. The second most used language is JavaScript.
- OpenMRS Core has over 3.5 million lines of code.
- I couldn't see where there the contributors are. The map never got past "Loading." The average number of contributors over the last 12 months is somewhere between 12 and 20. The top three contributors have all been involved in the project for over two years. The two top contributors have been involved for over five years.
- The average number of commits per month over the last year is somewhere in the ballpark of 50.
Project assessment activity
Hmm, I wonder if I can embed a file here. File:Davisj-openmrs-assessment.xlsx
Yes, it seems I can.
Blog activity
I know how to use a blog. My blog has a wide audience. I do not want to make a post on the suggested topic. I will eventually write a post that more broadly addresses my explorations of software development in the curriculum, including my participation in POSSE.
In response to the blog prompt: Wow, this is kind of overwhelming. I have no idea what kinds of projects I would want my students to contribute to.
Given my research on persuasive technology, what comes most quickly to mind is something related to self-improvement or environmental sustainability. "Environment" is kind of hard to search for... SourceForge is really organized around traditional values of computer use (efficiency and entertainment) rather than values like these. There don't seem to be any active projects on SourceForge related to environmental sustainability. RedNotebook looks kind of interesting, but there is only one contributor.
The FOSS2Serve list of HFOSS projects is way less overwhelming. There's lots of interesting accessibility stuff here. A couple of interesting projects under Ecology... I wonder how much domain knowledge they require. We use Sakai at Whitman, at least for the time being, so that might be interesting for students to contribute to. Several projects related to food pantries, for which I wonder if I could find a local user. Several things under NGO administration. And I wonder if our library uses any of the listed library software? I know some librarians.
CiviCRM looks potentially useful to a range of non-profits.
I see Allen Tucker's Ronald McDonald House project.
This makes me think I am really most interested in a project that has a local user. I would be perfectly happy to have students build on something that already exists and is in widespread use rather than starting from scratch. I need to talk with people here and find out what their needs are.
P.S. I would rather read a paper than watch a lecture video any day. I took the liberty of editing the Project Evaluation Activity to include a link to the SIGCSE paper as an alternative to watching the videos.
FOSS in Courses Activity
At the moment there are two courses I'm thinking about, a one-semester, 300-level software design course and a year-long capstone course. Both would be required. Neither course exists yet. (I do not want to teach a course that is explicitly about open source software development. I want flexibility in the capstone, and I want the software design course to focus on CC 2013 learning goals.)
I want the capstone course to accommodate students (and faculty) with different interests. Independent_Capstone_Project_Design is a pretty obvious fit (Hi, Jim!) Although the introduction addresses issues of individual vs team assignments, the assignment seems geared towards individual students. I'd to follow up with Jim and find out if he has actually done this. But in the meantime... I might be teaching a capstone with only three students in 2017-18... It might be nice for them to have the option to do individual projects.
For the software design course...hmmm. I wish more of my predecessors had actually filled out the project description rubric where it says what CC 2013 learning goals are addressed by each activity. Can anyone recommend a textbook? Or an existing course to plug activities like these into? I may need to dig into the CC 2013 exemplars.
Code reading and software design:
- CS2_Data_Structures_Activity could fit early into the course as a bridge from CS2, especially if my students are just learning Java.
- I like that Backwardly_Compatible_Code is very concrete and self-contained! Same for Finding_the_Code_Responsible_for_Behavior. I'm really intrigued by the idea of having students dig into the Java code base, but it also seems these activities could be applied to another project as well.
- Document_code_with_meaningful_comments is interesting but needs an (uncommented) project or module of suitable scope.
- Codebase_understanding looks intriguing---I particularly like that it emphasizes the use of suitable tools to understand a code base---but it's obviously incomplete.
- Perhaps it could be broken out into smaller activities, e.g., focusing on identifying and critically assessing code smells.
- I'm quite interested in the UML_a_project activity. This would require the identification of a project of suitable scope.
- The Software_Design_Architecture_Comparison seems like a good predecessor or follow up to the UML activity.
- An idea: A design pattern scavenger hunt -- look for naturally occurring examples of patterns (or antipatterns) in an open source project.
Testing:
- Solving_A_Bug is a nice self-contained activity, though specific to JUnit (maybe appropriate if other activities focus on the Java language?)
- If students haven't already learned [Driven Development], they will need to learn it in this course.
- It's important to teach about Test Coverage with TDD. I like the use of tools. I do not expect students to have used such tools before.
- I really want my students to learn about refactoring with TDD.
Hmmm... I am familiar with the Engineering Software as a Service curriculum. It does a really good job of addressing the CC 2013 learning goals. I wonder if I could choose an open source Rails project for students to dig into? Like maybe look at OpenSourceRails? I wonder if I could get the City of Walla Walla interested in using Loomio...