John MacCormick has degrees in mathematics from the University of Cambridge and the University of Auckland, and a doctorate in computer vision from the University of Oxford. He was a research fellow at Linacre College, Oxford from 1999-2000, a research scientist at HP Labs from 2000-2003, and a computer scientist with Microsoft Research from 2003-2007. Since 2007, Dr. MacCormick has been a professor of computer science at Dickinson College. He is the author of two books (Stochastic Algorithms for Visual Tracking, and Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers), has filed over a dozen US patents on novel computer technologies, and is the author of numerous peer-reviewed academic conference and journal papers. His work spans several sub-fields of computer science, including computer vision, large-scale distributed systems, computer science education, and the public understanding of computer science.
For more details please see John MacCormick's homepage at Dickinson College.
Exercises for POSSE 2016-6 workshop
Answers to exercise from "Part 1 – Walk through of IRC Conversation"
- How do people interact?
It’s a mixture of businesslike interactions, informal suggestions, and occasional humor.
- What is the pattern of communication? Is it linear or branched? Formal or informal? One-to-many, one-to-one or a mix?
It appears to be a mix of all the above.
- Are there any terms that seem to have special meaning?
I don’t see any special terms in the regular text. The meetbot lines seem to have special purposes e.g. #info #action
- Can you make any other observations?
The "actions" that get recorded are interesting, in that they basically seem to list future jobs that need to be done and assign them to specific people. In two of the cases, participants assign a jobs to themselves, but in one case Darci assigns an action to Amber -- it looks reasonably innocuous in this case, but I wonder about the general etiquette of assigning jobs to others within such a project.
- Bonus question: Why didn't Heidi and Darci's actions get picked up by the meetbot?
I don't know the answer to this. Could it have something to do with assigning an action to oneself?
Answers to exercise from "Part 1 – Anatomy of a FOSS Project"
- Summarize the roles that you think would be most applicable for your students on your faculty wiki page. If you think that more than a single role is applicable, indicate why.
Designer, developer. Our students are appropriate for both of these.
- What are the commonalities across roles? What are the differences?
- describe the general process for submitting a bug and indicate the types/categories of tickets listed on this page as well as the information available for each ticket
general process requires opening a new ticket in the automated system and submitting a detailed description. Project members will then take a look at the pocket and confirm it, assign it a status etc. The information in each ticket includes a summary, a status (new, unconfirmed, etc.), an owner, a type (defect versus enhancement), a priority (high, normal), and a milestone (usually “unspecified”).
- Can you determine from the information provided here whether the project uses a web-based common repository or a local repo?
It appears to be what one would call a local repository (at git://git.sugarlabs.org/sugar-base/mainline.git), since it is hosted by the sugar labs own servers.
- Include an entry on your wiki page that describes how the release cycle and roadmap update are related.
The release cycle uses a pattern that is standard in software development, with odd-numbered releases being unstable and even numbers stable. For each numbered release, there is a roadmap specifying dates for actual events in that release, such as code freezes of various kinds.
- Sahana: re Developers, Testers, Designers. For example, are there any commonalities? Is there something distinct for each type of contributor? How is this structure different than the one you found on the Sugar Labs website?
There are distinct features for each type of contributor, but again the commonalities include knowledge of open source methodologies. There are some different roles here, including SysAdmin and translator, which I didn’t see in the Sugar Labs structure.
- local vs web-based repository?
The command “git clone https://github.com/web2py/web2py.git --recursive” goes to github, which is a web-based repository.
- Info about Sahana release cycle
The first milestone (0.9.0 is recorded as being “four years late”). Other milestones have no date set, although the 1.0 milestone was “planned for” May 2012.
Part B activities
FOSS field trip
Part 1 – SourceForge
3. How many projects are there in this category?
I chose the category “education.” There are 20370 projects in this category.
4. How many different programming languages are used to write software in this category?
At least 15 different programming languages., the most popular being.
5. List the top four programming languages used to write programs in this category.
Java, C++, PHP, C
6. Identify the meaning of each of the statuses below:
I wasn’t able to find formal definitions of these in the sourceforge documentation. I’m giving my own inferred definitions
new development is not occurring on the project
main objectives of the project have been completed but development continues
sufficient objectives have been completed that a usable and useful system exists and has been released, but major new features are still planned to be added in future
a usable but incomplete version has been released and feedback from users is being incorporated to improve the software
an early incomplete version has been released. Users can expect to encounter significant bugs.
no usable version exists yet, but some code has been written
little or no code has been written, but designs and overall architecture are being mapped out.
7. Compare two projects in this category that have two different statuses. Describe the differences between the statuses.
Moodle is in “Production/Stable”. Obviously this is an enterprise-quality system in wide use (I am familiar with it and use it myself constantly).
Qucs, the circuit simulator, is in Alpha. I did not download or use it, but based on the comments on the site, it seems to be quite usable and well reviewed already, but with some obvious lacks of functionality.
8. Which projects are the most used? How do you know?
I did a sort by popularity, and the top three were Clonezilla, LogicalDOC and Moodle.
9. Pick a project in your category. Answer the questions below:
I picked Moodle
1. What does it do?
Course management system for educational institutions.
2. What programming language is the project written in?
3. Who is likely to use the project? How do you know this?
Students, faculty, and tech support staff at educational institutions. This is clear from the overview provided on the Moodle sourceforge page.
4. When was the most recent change made to the project?
The last update was 8 days ago (May 8, 2016)
5. How active is the project? How can you tell?
This is a very active project, with a major release in the last two weeks and another in the last two months. I can tell this from the “activity” page.
6. How many committers does the project have?
I’m not sure if “matters” means the same thing as “maintainers”. There are four “maintainers” listed on the main overview page (koenr , michaelblake , moodler , stronk7)
7. Would you use the project? Why or why not?
Yes. In fact I do use it daily.
Part 2 – OpenHub (explore OpenMRS)
1. Go to: https://www.openhub.net/
2. In the upper-most search space, enter: OpenMRS
3. Click on the OpenMRS logo or link.
4. What is the main programming language used in OpenMRS?
5. How many lines of code does OpenMRS have?
6. Click on "User & Contributor Locations" (lower right side of screen). List some of the locations of the developers.
The map became visible but no user locations were visible. A message saying “loading…” was permanently displayed.
7. Go back to the main OpenMRS page. Click on the "Languages" link. How many languages is OpenMRS written in?
8. What language has the second highest number of lines of code?
9. Of the programming languages used in OpenMRS , which language the has the highest comment ratio?
10. Click on the “Contributors” link under "SCM Data" menu.
11. What is the average number of contributors in the last 12 months?
12. Scroll down to the Top Contributors section. How long have the top three contributors been involved in the project?
13. Use the information on the project summary page to compute the 12-month average of commits. What is the average number of commits over the past 12 months?.
535 comments in the last 12 months, which is about 44 per month.
Part 2-Walk through of an evaluation of the OpenMRS project
FOSS In Courses Activity
My chosen project is Sugar Labs. There are many roles one can play here including tester, writer, etc. The most directly suitable one for the Dickinson senior seminar would be the “developer” role
Links for getting involved as a developer in Sugar labs:
1. Now that you have an idea of the possible types of activities or topics, identify one or two that you think would fit in your class. These do not need to be polished. This can be a rough list of ideas.
The most obvious path to follow is to create one’s own activity (). But, this is probably falling into the trap of trying to just write some code. I wonder if we can isolate a different type of activity, such as writing a test or clarifying a bug report. The RIT course had some links that would help you install a virtual machine and an environment for working with Sugar. This is another obvious early activity.
2. In your reading, did you find existing materials? If so, describe how would you modify them to fit your class?
Yes, the RIT course has plenty of materials that could be cloned and mildly adapted to fit the Dickinson senior seminar.
A key question is whether projects will comprise building new sugar “activities” or actually performing development on the sugar code itself.
Part C activities
Bug Tracker Activity
Part 1 - Bug Reports
2. Define what each of the column names below indicate. Include the range of possible values for 2-7 below. Feel free to explore beyond the page to find more information. 1. ID -- a unique numeric identifier, six digits 2. Sev -- didn’t see this 3. Pri -- didn’t see this 4. OS -- didn’t see this 5. Product -- which product does the bug affect (e.g. gnome-nettool, gnome-panel) 6. Status -- unconfirmed, new, assigned, reopened, need info, resolved, verified 7. Resolution -- none of the listed bugs is resolved. However, from the advanced search I can see that the options are fixed, won’t fix, duplicate, not a bug, not gnome, incomplete, invalid, gnome1.x, moved, obsolete, notximian 8. Summary -- brief description of the bug 3. Describe how you discovered the definitions and how did you find the information from above (hint: the advanced search shows the options or the Reports link has a link)? Yes, the advanced search screen was helpful for this 4. Identify the order in which the bugs are initially displayed? sorted by status 5. What is the meaning of the shading of some bug reports? Not sure about this. 6. What is the meaning of the colors used when describing a bug (red, gray, black)? Not sure about this.
7. Select a bug that you think that you might be able to fix and look at it more closely (click on the bug number). I chose bug 731138 1. Identify when the bug was submitted. 2014-06-03 2. Identify if there has been recent discussion about the bug? Not since May 2015 3. Is the bug current? Yes 4. Is the bug assigned? To whom? It’s assigned to “gnome-sudoku-maint” but I think in effect that means it’s not assigned, since this probably means the overall maintainer of the sudoku product hasn’t farmed it out. 5. Describe what you would need to do to fix the bug. Read a lot about gnome UI, find a working example that changes focus accordingly, and implement that solution.
8. Repeat the previous step with a different kind of bug. I chose bug 557054 1. Identify when the bug was submitted. 2008-10-20 2. Identify if there has been recent discussion about the bug? Not since 2012 3. Is the bug current? Yes, but it looks like perhaps it should have been closed 4. Is the bug assigned? To whom? Yes, Germán Poo-Caamaño 5. Describe what you would need to do to fix the bug. Read about GOK. Until then, I’m not sure how I could do it. General comment on the previous two questions: I don’t actually see any bugs that I believe I could fix without first significant investments in reading, coding etc.
Part 2 - Collective Reports
1. Click on the “Reports” link on the top of the page. 2. Clickk on the "Summary of Bug Activity for the last week". 3. How many bug reports were opened in the last week? How many were closed? 280 reports opened and 324 reports closed 4. What was the general trend last week? Were more bugs opened than closed or vice versa? More closed than opened. 5. Who were the top three bug closers? Why is this important to know? 1 Matthias Clasen 2 Michael Gratton 3 Tim-Philipp Müller I’m not too sure why this is important. 6. Who were the top three bug reporters? Are these the same as the top three bug closes? What is the overlap in these two lists? 1 Bastien Nocera 2 Simon McVittie 3 Allan Day There is no overlap in the top three, but there is overlap in the lists in general. I guess that indicates people who are active in both reporting and closing 7. Who are the top three contributors of patches? 1 Bastien Nocera 2 Sebastian Dröge (slomo) 3 Michael Olbrich
8. Who are the top three reviewers of patches? What is the overlap between these lists and the bug closers and bug reporters? What is the overlap between patch contributors and patch reviewers?
1 Sebastian Dröge (slomo) 2 Matthias Clasen 3 Nicolas Dufresne (stormer) there is a certain amount of overlap between the lists. 9. Click on the “Generate Graphical Reports” link. 10. Plot a line graph of the severity of bugs by component for Orca: 1. Select "Severity" for the vertical axis 2. Select "Component" for the horizontal axis 3. Select "Bar Graph" for type of graph 4. Leave the "Multiple Images" as <none> 5. Scroll down and select Orca from the Product menu. 6. Click "Generate Report".
11. What class were the majority of the bugs for braille? Normal 12. What other reports can you generate? There are many, many options here.