User:Hfrancis
Howard Francis
Howard is currently visiting faculty in the Department of Mathematics at Xavier Univeristy. He has previous taught computer science, and typically taught the CS0 and CS1 courses. He continues active in computer science education as a video instructor for Real Python. His other computing interests are in Interactive Fiction.
Project Evaluation
This is a new, and simpler, rubric than one previously used. It should be easier for my students to use when I assign this activity to my Senior Project class
- Licensing: 3 - MPL 2.0 is close to GPL licenses
- Languages: 4 - it is 95% Java, which is the language our CS program uses.
- Activity: 1 - very little activity since May
- Contributors: 3 - seems fairly active
- Issue Tracker: 4 - lots of work available-a
- New Contributor: 4 - very good information-b
- Norms: 3 - good-c
- Client Base: 4 - strong client base
a) There are 1260 open tickets. There are 12150 closed tickets. The fifth issue is XFRM-170. b) http://openmrs.org/join-the-community/developers/ c) I found it interesting they don't want import java.util.*; specific classes. Conversations on Talk are very civil. d) Many instructions available.
This section is from my participation in the 2015-09 POSSE. It it not part of my 2017-11 POSSE. However, having been through 1 1/2 previous POSSEs, I'm likely to only post for activities that have new content and answers from my previous work.
Stage_2_Activities/Stage_3_Planning_-_HF
FOSS in Course Planning 2
CS 109 - Introduction to Computer Science: Improve a Wiki page for an HFOSS Project
1. Identify some possible learning outcomes that should be fulfilled with the activities/task.
- Communicate clearly about the use of a software tool
- Collaborate with other members of a team
2. Describe any pre-requisite knowledge needed to complete the activity. This does not need to be a complete list.
Not much for this
3. Estimate the time required for instructor prep, for student completion and elapsed calendar time. Are you going to have to synchronize your activity with the community or can the activity/topic be covered independent of the HFOSS community schedule.
I imagine taking one class day to show students the project in general, then the online documentation specifically. Students would then have to create wiki accounts for the project, and learn how to edit their wiki. I would expect a total of two class meetings for this, with perhaps an hour or two of students’ work outside of class
4. Think about possible input required from the HFOSS community. How much input is required and what kind?
We might want suggestion on wiki pages that need improvement.
5. If the result of the activity is contributed back to the HFOSS project, describe the contribution and its usefulness.
This would help others in better understanding how a product is used, or how it’s developed.
6. Describe the assessment/grading approach - What will the basis for grading be? Will this be a team activity or individual? Is there a role for the HFOSS community in helping assess student work? For instance, must the work be committed or otherwise accepted by the community?
This could be team based. This would likely need acceptance by the community for it to receive a passing grade.
7. List any questions or concerns that you have about the activity/task.
none yet
8. List any stumbling blocks or barriers to carrying out the activity/task.
There might not be a huge interest in a project like this from my first semester freshman.
CS 221/222 - Object-Oriented Programming: Improve the documentation of a class.
1. Identify some possible learning outcomes that should be fulfilled with the activities/task.
- Write appropriate javadoc comments
- Collaborate with other members of a team
2. Describe any pre-requisite knowledge needed to complete the activity. This does not need to be a complete list.
Students would need to know the basics of javadoc documentation writing. This is covered in our textbook
3. Estimate the time required for instructor prep, for student completion and elapsed calendar time. Are you going to have to synchronize your activity with the community or can the activity/topic be covered independent of the HFOSS community schedule.
One or two classes on using Eclipse (the dev environment for most of these projects
Two (or more!) classes on GitHub. This would include activities about forking, cloning, pull requests, etc.
4. Think about possible input required from the HFOSS community. How much input is required and what kind?
I would want the community to help identify those classes whose documentation could be improved.
5. If the result of the activity is contributed back to the HFOSS project, describe the contribution and its usefulness.
I would hope future contributors to have a better understanding on the purpose/uses of the classes whose documentation we improve.
6. Describe the assessment/grading approach - What will the basis for grading be? Will this be a team activity or individual? Is there a role for the HFOSS community in helping assess student work? For instance, must the work be committed or otherwise accepted by the community?
I would want work completed to the “Pull Request” step. Whether it was accepted or not would not affect their grade.
7. List any questions or concerns that you have about the activity/task.
8. List any stumbling blocks or barriers to carrying out the activity/task.
7 & 8 Together: My concern is the learning curve for Eclipse and GitHub is pretty steep. For my first year programmers, it could be overwhelming. Plus, this would likely take two weeks of class time. I’m not sure I have that much time to devote to this :(
CS 480 - Senior Project: Make a code contribution to a HFOSS project
1. Identify some possible learning outcomes that should be fulfilled with the activities/task.
- Apply programming concepts from CS program to make a new computing contribution.
- Collaborate with other members of a team (I’m big into collaboration, can you tell?)
2. Describe any pre-requisite knowledge needed to complete the activity. This does not need to be a complete list.
With this being our capstone course, the prerequisite knowledge would come from their previous coursework.
3. Estimate the time required for instructor prep, for student completion and elapsed calendar time. Are you going to have to synchronize your activity with the community or can the activity/topic be covered independent of the HFOSS community schedule.
I would spend about 4-5 weeks doing the same Stage 1 Activities as we have done here.
4. Think about possible input required from the HFOSS community. How much input is required and what kind?
We would need what any new dev contributor would need.
5. If the result of the activity is contributed back to the HFOSS project, describe the contribution and its usefulness.
Hopefully the contribution would be accepted and improve whatever issue the ticket was about.
6. Describe the assessment/grading approach - What will the basis for grading be? Will this be a team activity or individual? Is there a role for the HFOSS community in helping assess student work? For instance, must the work be committed or otherwise accepted by the community?
I would want work completed to the “Pull Request” step. Whether it was accepted or not would not affect their grade.
7. List any questions or concerns that you have about the activity/task.
Finding an appropriate ticket to complete in the course of a semester could be a problem.
8. List any stumbling blocks or barriers to carrying out the activity/task.
My biggest stumbling block is I’ve never worked on a project of this magnitude. I feel very out of my element helping my seniors whose understanding of Java is most likely deeper than mine.
Bug Tracking Activity
1. Open a browser and go to the GNOME Accessibility Bugs
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. ID - The unique ID number for each bug being tracked Sev - severity from “blocker” to “trivial” Pri - an estimate of the priority of the bug OS - the platform where the bug was discovered. Product - The actual gnome product the bug is in Status & Resolution - the exact state the bug is in, from not confirmed through being fixed. Summary - A one sentence summary of the problem
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)? I clicked on Help, and eventually found this page https://www.bugzilla.org/docs/4.4/en/html/bug_page.html
4. Identify the order in which the bugs are initially displayed? by their status, and then by product
5. What is the meaning of the shading of some bug reports? I think that’s just to make the list more readable.
6. What is the meaning of the colors used when describing a bug (red, gray, black)? Critical is in red (blocker is red and bold), black is normal, gray is enhancement
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). 726590 Identify when the bug was submitted. 3/17/14 Identify if there has been recent discussion about the bug? no Is the bug current? It doesn’t seem to be Is the bug assigned? To whom? It doesn’t seem to be. Describe what you would need to do to fix the bug. It seems to involve taking text generated by the program, and finding a way to make that text audible. For me personally, I would have to learn about the platform of the project, how voice synthesis is coded, and probably a lot more!
8. Repeat the previous step with a different kind of bug. 720717
Identify when the bug was submitted. 12/19/2013
Identify if there has been recent discussion about the bug? last discussion was in Apr ’14
Is the bug current? I would say not.
Is the bug assigned? To whom? No one yet
Describe what you would need to do to fix the bug.
It would seem a I would need to study a lot of the context of this problem before getting started. It’s GUI related, and there seems to be some debate about the feasibility of what the ticket is requested.
Part 2
1. Click on the “Reports” link on the top of the page. 2. Click on the "Summary of Bug Activity for the last week". 3. How many bug reports were opened in the last week? 332 How many were closed? 259
4. What was the general trend last week? Were more bugs opened than closed or vice versa? More closed than open. But for individual projects, there was no trend
5. Who were the top three bug closers? Why is this important to know? Matthias Clasen, Bastien Nocera, and Carlos Soriano. I would expect the to be among the best resources for help.
6. Who were the top three bug reporters?
Bastien Nocera, Andreas Nilsson, and m.rick.mac
Are these the same as the top three bug closes? What is the overlap in these two lists?
Bastion Nocera is the only one on both lists. I suspect he is a very active participant
7. Who are the top three contributors of patches? Carlos Soriano, Sebastian Droge, and Lionel Landwerlin.
8. Who are the top three reviewers of patches? Sebastian Droge, Bastien Nocera, Matthias Clasen What is the overlap between these lists and the bug closers and bug reporters? Bastien is (almost) everywhere! What is the overlap between patch contributors and patch reviewers? Sebastian Droge.
9. Click on the “Generate Graphical Reports” link. 10. Plot a line graph of the severity of bugs by component for Orca: a Select "Severity" for the vertical axis b Select "Component" for the horizontal axis c Select "Bar Graph" for type of graph d Leave the "Multiple Images" as <none> e Scroll down and select Orca from the Product menu. f Click "Generate Report". 11. What class were the majority of the bugs for braille? normal
12. What other reports can you generate? There seem to be quite a lot. Most details of bug tickets can be measured against another.
FOSS in Courses Activity
Right now I am using FOSS for my senior project classes. I take the students through a lot of these Phase I activities, then have them work on the project of their choice. Their grade is partially based on how many contributions they make.
There are two things I'd like to do in my CS1 class, work on in-code documentation and look at unit testing. My only concern with these is the additional overhead in showing them GitHub, Eclipse, and some of the other technologies not typical used in CS1. I don't have much time available for those things considering what else I cover in class.
Anatomy of a FOSS Project
The Sugar Labs Project
Community -- In the first paragraph, they indicate that the community is organized into teams. Follow this link to the teams page. You will note that there are a wide variety of teams, each with a distinct responsibility. Follow the 'Contacts' link (found in the green option bar) for each of the following teams and summarize the information you find there on your faculty wiki page. For example, are there any commonalities? Is there something distinct for each type of team?
Activity Team Development Team Documentation Team
All of these teams mention Coordinators and Contributors (although Dev and Doc teams are looking for Coordinators!).
All three teams hang out in the #sugar IRC channel. The Activities and Documentation Teams also have their own mailing lists.
Tracker -- The Sugar Labs bug tracker can be found here. On your wiki page indicate the types/categories of tickets listed on this page as well as the information available for each ticket.
Most of the tickets in Sugar Labs are defects or enhancements. There is also one marked task. Each ticket lists its number, a summary, who’s working on it, and its priority. The status and milestone is also indicated.
Repository -- http://git.sugarlabs.org/sugar-base Can you determine from the information provided here whether the project uses a web-based common repository or a local repo? Place your answer on your wiki page.
Because the URL is at sugarlabs.org, this is a local repository.
Release cycle -- Information about Sugar's release cycle and roadmap can be found here. Include an entry on your wiki page that describes how the release cycle and roadmap update are related.
The roadmap is updated with each release cycle. Release dates and included features are determined at that time.
Communication -- Sugar Labs promotes communication among its community members in the following ways.
IRC: http://meeting.sugarlabs.org/ & http://chat.sugarlabs.org/
Mailing lists: http://lists.sugarlabs.org/
Blog: http://planet.sugarlabs.org/
Wiki: http://wiki.sugarlabs.org/go/Welcome_to_the_Sugar_Labs_wiki
The Sahana Eden Project
Community -- In the section titled Want to Contribute to Sahana Eden?, you will find a list of ways in which one can contribute. Again, you will note that there are a variety of distinct groups, each with a distinct responsibility. Follow the links to each of the groups listed below and summarize the information you find there on your faculty wiki page. 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?
Developers Testers Designers
Each of these communities has its own structure and organization. The Dev team lists many modes of communication. They all provide links to ways to get involved.
Tracker -- The Sahana Eden bug tracker can be found here. Place your answers to the following on your wiki page.
How is the information here different than the information found on the Sugar Labs tracker page?
Most of the information is the same. One new detail is the component the ticket is related to.
Click the Active Tickets link. Indicate the types/categories of tickets listed on this page as well as the information available for each ticket.
Ticket types are defect/bug, task, enhancement, and documentation. The priorities are color-coded
Repository -- http://eden.sahanafoundation.org/wiki/InstallationGuidelines The installation guidelines begin here with the option to specify your operating system. For this exercise, choose Linux, then Developer, and finally Manually. At the bottom on the page click InstallationGuidelines/Developer/PostPython. Can you determine from the information provided here whether the project uses a web-based common repository or a local repo? Place your answer on your wiki page.
Sahana uses the web-based common repository Github.
Release cycle -- Information about Sahana Eden's release cycle and roadmap can be found here. Include an entry on your wiki page that describes the information you find here.
The milestones are named to make them easier to identify and discuss. Each milestone includes what features are being developed in each of the various components.
Communication -- Sahana Eden promotes communication among its community members in the following ways.
IRC: http://eden.sahanafoundation.org/wiki/Chat
Mailing lists: http://wiki.sahanafoundation.org/doku.php/community:mailing_lists#sahana-discuss (wider discussion list for issues relating to the wider Sahana ecosystem)
Google Groups: https://groups.google.com/forum/?fromgroups#!forum/sahana-eden
This section is from my partial participation in the 2013-06 POSSE. It is not part of the current 2015-09 session.
Survey of Students' Interest in POSSE Projects
I showed two of my classes (CS0 and CS1) the list of projects we've looked at and invited them to explore their websites for a while. I then had them fill out an online survey simply asking them which one interested them most, plus a reason why. The one most selected was OpenMRS. I've attached a spreadsheet with their responses. Some students obviously put more thought into this than others, but I still think they all learned something.
Media:POSSE_Project_Survey.ods
Answers to IRC Questions:
How do people interact?
Conversations take place by typing and reading everyone's messages. You always have an opportunity to scroll back through the conversation to check on parts of the conversation you may have missed.
What is the pattern of communication?
Everyone has equal opportunities to speak. Most messages are directed at everyone else there, but sometimes someone will mention a question to someone specific. No one is interrupted so everyone's voice is heard.
Are there any terms that seem to have special meaning?
The meetbot directions were new to me, those seemed to have some significance.
Can you make any other observations?
I've used IRC before; this seemed typical of a chat meeting.
IRC Channel Observation
I wasn't able to see a structured meeting, but I did notice many small informal conversations about the project. Most of them were asking if new revisions had been seen, and if they had, what feedback was being provided. I did see what seemed to be a new interested developer ask to get involved. It was suggested to join the mailing list first. I didn't understand a lot of the terms being thrown around. I hope it comes easy to me when I join the project.
Sugar Labs Guided Tour
Community
All three teams make use of IRC; two of them also have a mailing list. There seem to be a lot more people in the Activities team.
Bug Tracking
Bugs are sorted by urgency, with those needing the most attention at the top of the page. Each ticket has a unique number, and includes information about what part of the project it affects, a brief description, its current status, who's working on it, and its type and severity.
Repository
Judging by the URL, I suspect this is a local repository.
Release Cycle
The roadmap guides the activities for each release cycle. One a new release is completed, a new roadmap for the next release is planned.
Sahana-Eden Guided Tour
Community
These pages are very different. Each page directs you to how to participate, but because the jobs of developers, designers, and testers are all much different, there is a variety of information on how to participate. The team pages at Sugar Labs seemed much more uniform and consistent than the ones here.
Bug Tracking
The Sahana-Eden bug tracker first presents you with a menu of the type of bug report you'd like. Going to the Active Tickets report, the information there is very similar to that provided at Sugar Labs.
Repository
It looks like Sahana-Eden uses GitHub as its repository.
Roadmap
It looks like Sahana-Eden's road map goes past the next release. I also don't see specific dates in this road map as I did for Sugar Labs. Here there is just a list of goals for the next releases.
FOSS Classroom Activities
My main activity (and reason for participating in this workshop) would be to have my Senior Project class make one non-trivial contribution to the code for a FOSS project. In leading up to that final activity would preliminary work, much like we're doing here. There are many assignments and materials from the SoftHum web site that would be adapted for my class.
Seeing the volume of opportunities out there, I'm considering smaller activities for my CS0 and CS1 class. My CS0 could contribute to user documentation, and my CS1 could improve internal comments in the code. There are other activities I haven't thought of yet, I'm sure.
FOSS Project Evaluation
Media:Francis_Eden_Evaluation.xlsx
Stage 2 Exercise 2.6 This is a bit late, but I finally had time to answer these:
A. Planning a first HFOSS activity at your institution To help you plan your first HFOSS activity at your institution, please answer the following and include any questions you'd like to discuss. 1. What course(s) are you targeting? My main course is CS 480 Senior Project, but I'm wanting to try some small things in CS 109 Intro, and CS 221 OOP.
2. What learning outcomes would you like the students to achieve? CS 480 – Contribute to software development in a manner similar to “the real world” CS 109 – Become aware of some of the things computer scientists do CS 221 – Get a touch of industry-level programming
3. What type of activity do you want to incorporate? Sample activities could be HFOSS field trips, installing, documenting, testing, or code development. See http://xcitegroup.org/softhum/doku.php?id=f:50ways for more ideas. CS 480 – make a non-trivial code modification to a FOSS project CS 221 – I'm really thinking about the improve comments activity CS 109 – Download/evaluate?
4. What HFOSS project will you use? For POSSE, Sahana-Eden. For CS 480, I think I'll give them a choice For CS 221, probably OpenMRS For CS 109, not necessarily HFOSS, something for sourceforge though
a. What are the benefits of this project for this particular context (course & activity)? CS 480: I think by letting the students choose, they'll at least have a minimal interest in it CS 221: It's Java-based, which is the language they'd be learning. CS 109: The project would something they're (hopefully!) interested in.
b. What are potential stumbling blocks? CS 480: I'm really concerned about having enough time to acclimate my students with the project and community and have them contribute something meaningful. CS 221: There may be some resistance for all the setup work just to get started, but I think we'll be able to handle that. CS 109: There is a possibility that some students don't find a project to work on.
c. How do you want your students to interact with the community (if at all)? CS 480: I think students will need to be on mailing lists and on IRC. They'll need to know the scene to understand the project. CS 221: There maybe a need for some interaction, but probably not too much CS 109: there won't be a need for any interaction
d. What tools will your students have to learn (if any)? CS 480: Most likely Eclipse, plus anything special to go with their selected project. CS 221: I think they could do the editing in Greenfoot or BlueJ. Both provide easy generation of documentation from code. CS 109: None.
e. Do you currently have the environment for this project to run (ie. is the hardware/OS available at your institution)? CS 480: Depends on the project. I have run Sahana-Eden on my computer. I'll certainly check to see what else needs to be done for other projects based on my students' work. CS 221: They won't necessarily need to run the project. CS 109: Students will be selecting the project, hopefully something they can run.
5. What type of materials/background do you think you will need to provide to the students? CS 480: I think I will need to do with them much of what I've been asked to do here. I would have to get them familiar with the FOSS community and how interactions work. CS 221: They'll need a brief introduction to FOSS, but they should understand documentation by the time I get to this assignment CS 109: Many of them might not be aware of FOSS software. I'll need to describe what I use and show them what all is out there.
6. What would you like the students to do during this activity? CS 480: Students will need to be blogging about their progress, much like we are here. Eventually they should identify some task that they can complete in their groups. CS 221: Students should spend time learning how to use the project, and learning the classes that make up the project. Eventually they should take one class and improve its comments CS 109: First they need to understand how to find things on sites like SourceForge. From there, they need to find a program they like, download it, install and use it, then perform an evaluation.
7. How long do you expect the activity to take? CS 480: This would be a semester long activity. CS 221: I could see needing a couple of weeks for my students to become familiar with the project. Then probably one week looking for a class that needed improved comments and fixing it. CS 109: This would likely be a two-week assignment.
8. What will the students hand in? CS 480: Obviously, their final modification would be important, but chat logs, blog posts, and many other things describing their experiences will be used as well. CS 221: Before and after versions of the class they modified. CS 109: There would be an evaluation form for students to fill out.
9. How will you assess what students have learned from this activity? CS 480: Students in this class typically give a presentation as their final exam. CS 221: I expect the comments in their own programs will improve. CS 109: I haven't thought this far ahead.
B. Planning participation in POSSE Stage 3
To help you think about what types of support you will need to implement the activity above,
please answer the following and include any questions you'd like to discuss.
1. What do you see as the biggest obstacle for implementing this activity?
My only real concern is with CS 480. I'm worried that a project won't present itself, or there won't be time to complete it.
2. What type of support would help overcome this obstacle? I'd like to see examples of others who have completed a project like this. Perhaps we can make larger teams from multiple classes on different campuses.
3. Is it more important to have support on the HFOSS side or the curriculum side? For example, the HFOSS project, Ushahidi, or by course, CS 2? I think I'll need more support with the HFOSS side. I think I can work out the curriculum once I get on board, but getting connected with a project seems like a bigger hurdle for me.
4. It is important to have active members in the Stage 3 small groups. What obstacles might prevent you from being an active member? What would help overcome these obstacles? My biggest obstacle is that I couldn't be there for Stage 2. I suppose if I made early contributions to the group, it would help get me in with the rest.