User:Kthurston

From Foss2Serve
Jump to: navigation, search

Name: Karen Thurston

Position: Assistant Professor of Computer Science, North Idaho College, 1000 W. Garden Ave., Coeur d'Alene, ID 83814

email: karen.thurston@nic.edu

Page: https://www.nic.edu/directories/single_entry.aspx?id=2855

Other Organizations:

Bio: www.linkedin.com/in/karenhthurston

GitHub: https://github.com/karenthurstonnic

IRC: server: freenode.net nick: kthurston channels: foss2serve

HFOSS Projects:

  Ushahidi: [1]

HFOSS-Related Courses:

CSC151 - Computer Science II, CSC210 - Concepts of Programming Languages, CS270 - System Software

Grants: 2015-2018, State of Idaho, Cybersecurity Training & Operations Center, University of Idaho

Publications: Conference paper: The Healthcare IoT Ecosystem, CHASE2018: The Third IEEE/ACM Conference on Connected Health: Applications, Systems, and Engineering Technologies

    Summer 2019 Deliverables:

PART A A.1: Intro to FOSS A.2: Teaching Open Source A.3: Intro to Wiki A.4: Intro to IRC A.5: IRC Meeting 1 A.6: Intro to FOSS Project Anatomy


PART B B.1: FOSS Field Trip In Part 1 you will search GitHub for projects. Do the following:

Open a new browser tab and go to: https://github.com Find the search box near the top of the page, type "education", and press enter or click on the search icon.

How many repositories are found for "education"? 28,423 results

How many of these repos use the JavaScript language? (Hint: Find a summary table.): 3,526 are JavaScript

In the first page of results, which repo was updated most recently? MindLeaps/tracker (student progress tracking, 30 seconds ago Which was updated least recently? drongous/ems (education management system), in 2008

Many repos are small and inactive. To see the most active repos, find Sort and pick most stars. Which education repo has the most stars? freeCodeCamp has the most' How many? 303k

Click on this repo to see its overview page. Scroll down past the list of files to see a project description.

In GitHub, each reported problem or suggestion is an issue, the code and documentation to fix an issue is a pull request, and a pull request that is accepted and added to a repo is a commit. Each issue and pull request is either open (in progress) or closed (done). (You will learn more about all of this later.)

At the top of the overview page, click on the Issues tab. You should see a list. How many issues are open? 210 open issues closed? 13,400 closed issues

Click on the Pull requests tab. How many pull requests are open? 1,639 open pull requests closed? 20,620 closed pull requests

Click on the Insights tab. What do you see? The Insights tab provides a graphical and numeric summary of the project statistics, including those just mentioned Within Insights, go to the left menu and click on Commits. What do you see? A graph of the commits over the prior year

Go back to the main GitHub page. Search for "humanitarian" projects. How many repos are found? 526 repos

Find HTBox/crisischeckin How many stars does it have? 178 stars What language(s) does it use? C# When was the last update? October 24, 2018

Search for "disaster management", or terms that interest you. How many repos are found? Found 481 repos for disaster management Keep the GitHub browser tab open as you move on to Part 2.

Part 2 - OpenHub In Part 2, you will search OpenHub for projects. Do the following:

Open a new browser tab and go to: https://www.openhub.net In the search box, type "education".

The listing shows the number of pages, not the number of projects. By default, each page shows 10 projects. How many projects were found? 2,262 projects

Many projects are small and inactive. To see the most active projects, find Sort by and pick Activity Level. Which (if any) of the most active projects do you recognize? I recognize GeoGebra since our math department uses it.

In the Sort by text box pick Relevance. If necessary, go to the bottom of the screen and advance to pages 2, 3, ... in the listing until you find KDE Education, and click on it.

From the KDE Education page, click on Code Locations (on the right side). Are any of the repo locations on GitHub?All of the repo locations on the first page are from Git.

Go back to KDE Education, and click on Similar Projects (below Code Locations). How many similar projects are listed? Ten are listed

This page contains general information for the similar projects. What info is shown for each? Activity level, language, and license type

Repeat your OpenHub search for both "humanitarian" and "disaster management", or terms that interest you. How many projects did each search return? Humanitarian returned 23 projects. Disaster Management returned 30 projects.

Some projects show "Activity Not Available". Click on the pyramid icon and read the page shown. Why is "activity not available"?OpenHub does not yet have a URL for the repo, so it cannot analyze the activity.

Click on Organizations (near the top of the main OpenHub page). What info is shown? The page shows a summary of most active organizations, commit volume, newest organizations, and commits by sector (commercial, non-profit, education, and government)

From Organizations, search for "OpenMRS". Do the search results show projects or organizations?The result describes the organization/community.'

Find the project "OpenMRS Core". When was the last commit?Over 1 year ago

Go back to GitHub and search for the project "OpenMRS Core". When was the last commit?openmrs/openmrs-core shows the last commit 13 hours ago. Why do you think these sites have different info? Depending on when the OpenHub site ran its analysis on the GitHub site, it could be out of date.

What are some benefits & drawbacks of searching for a project in both GitHub & OpenHub? If GitHub is where the code repository is stored, it would be more up to date. OpenHub just reports on repos, it is not a forge as is GitHub.


B.2: Project Evaluation SUGAR LABS (http://sugarlabs.org/) Project Goals: The project has educational, technical, and community goals.

The educational goals are not about education, but about the availability of technology to support education:

  To make Sugar and Sugar activities freely and readily available to learners everywhere
  To explore and share best practices
  To provide a forum for discussion and support for technology for learning
  To provide mechanism for evaluation and dissemination of results.

The technical goals are:

  To make it “simple” to share Sugar activities. This will require an architecture that 
  allows discovery of activities.
  To create versions of Sugar that run on multiple operating systems and on multiple hardware platforms. 
  It should be “simple” to install Sugar everywhere. Specifically, it means packaging for every
  distribution and every virtual machine—removing hardware-related dependencies wherever possible.
  To make it “simple” to write Sugar activities. This necessitates stable APIs and example code that
  uses these APIs.
  To make Sugar activities even more secure. Our principal user community is comprised of children;
  they must be protected from malware, phishing, botnets, etc.

The community goals listed are a combination of community, technical, and educational goals:

  To provide local and regional technical and pedagogical support. (community)
  To create new learning activities and pedagogical practice. (educational)
  To provide localization and internationalization of software, content, and documentation. (technical)
  To provide integration and customization services. (technical)

The project roles include: Activity Team Design Team Documentation Team Development Team Infrastructure Team Marketing Team Platform Team Translation Team Wiki Team Oversight Board

Roles most suitable for my students: Design, documentation, development, and platform team roles.

Commonalities/differences across roles? The roles my students could fill would be directly related to software development. I teach C++, Concepts of Programming Languages, and Operating Systems Software, so these roles would be the best fit. Students should be aware of the other roles, however, since systems development requires all of them and all are important.

General Process for submitting a bug: The SugarLabs site has a page devoted to this topic: https://wiki.sugarlabs.org/go/Submit_Bugs/Problems It also has a page describing how to write a bug ticket. The advice on the page is general good, but one area not addressed is that if a software system has a formatted bug ticket with fields to fill out, this is a preferable to a free form bug ticket. The form will typically be more efficient as it will provide specific information to the programmer. For example, it is helpful to categorize bugs by severity or category. If the software crashes, the bug report may be given a higher priority than if the report is simply a typographical error in a program message.

Types/categories of tickets listed on this page as well as the information available for each ticket: As of June 13, 2019, there are 687 open, and 1,683 closed tickets for all SugarLabs projects combined. Some of the issues are tagged with a category, but the sort doesn't seem to allow sorting by categories. Scrolling to an issue with a category label, then clicking on the label, displays all issues with that label.

Date of last commit: To sugarlabs/readetexts 2 days ago (June 11, 2019)

Repository -- https://github.com/sugarlabs/sugar/ last commit: March 3, 2019

How the release cycle and roadmap update are related: This page describes the schedule for releases: https://wiki.sugarlabs.org/go/Development_Team#Schedule Previously Sugar was released roughly every 6 months, but now releases are ad hoc, "if at all". The current version appears to be .82. I have the "Sugarizer" Android app on my phone (Lionel Laske, developer), it is version 1.1.0, last updated 1/20/2019, first released 10/16/2014.

Communication -- Sugar Labs promotes communication among its community members in the following ways. IRC: https://wiki.sugarlabs.org/go/Internet_Relay_Chat Mailing lists: https://wiki.sugarlabs.org/go/Mailing_Lists Blog: http://planet.sugarlabs.org/ Wiki: http://wiki.sugarlabs.org/go/Welcome_to_the_Sugar_Labs_wiki


Sahana Eden Project (https://sahanafoundation.org/eden/) Project goals: "Sahana EDEN is the world's most popular open-source information management system for disaster and humanitarian aid management. It can support all phases of the emergency cycle "out of the box" or be customized to meet the specific needs of agencies and organizations."

Contributions possible: Contributors must first sign a CLA (Contributor License Agreement) prior to downloading code from GitHub. The Sahana Foundation is the sponsoring organization. The wiki, at https://github.com/sahana/eden/wiki, provides info on types of contributions:

Developers A detailed page gives direction on getting started as a developer

Blueprints - functionality that we would like to see implemented Contains current and proposed high level functionality groups.

Developer Guidelines Includes getting started information, and the process, framework, modules, and also a German translation of the guidelines.

Testers Information for end user testers as well as developers and system integrators.

Bug Reporting Guidelines Detailed instructions, including the severity and category of bugs to use.

Bug Marshals-Patch Reviewing Guidelines Contains a link to the postgressql guidlines

Newsletter Report Writers No information

Documentors No information

Translators The project needs a translation lead/coordinator. Some tools are listed on the page.

Designers This page relates to graphic design, not software design. Includes links to resources.

SysAdmin Contains information about deployment cycles and also information on creating new instances.

GIS Specialists Includes documentation, data, tools, code, and GIS resources.

How is this structure different than the one you found on the Sugar Labs website? The Sahana Eden project is more structured along conventional software development practices (more formal bug reporting, for example). There is a section of "easy to fix bugs" which may be appropriate for students.

Tracker -- The code for Sahana Eden is hosted on GitHub: https://github.com/sahana/eden . There are only 26 open and 76 closed issues for Sahana Eden. The oldest is in 2012, the newest is in May, 2019.

Repository -- The most recent commit was 20 hours prior to my query on 6/14/2019 0846 PDT.

Release cycle -- Information about Sahana Eden's release cycle and roadmap were not easy to find. Still looking. Historical information is here: https://en.wikipedia.org/wiki/Sahana_Software_Foundation The first release of the software seems to be following the Indian Ocean Tsunami in 2004. From Wikipedia.org: "...a team of Sri Lankan technology workers associated with the Lanka Software Foundation (LSF) developed software that could be used by the government to coordinate assistance for those affected by the tsunami.[citation needed]"

Deployment list -- This page describes where Sahana Eden has been deployed: http://eden.sahanafoundation.org/wiki/Deployments

Communication -- Sahana Eden promotes communication among its community members in the following ways. Chat (via Slack): http://eden.sahanafoundation.org/wiki/Chat Mailing lists: http://wiki.sahanafoundation.org/community/mailing_lists Google Groups: https://groups.google.com/forum/?fromgroups#!forum/sahana-eden


B.3: Intro to Copyright and Licensing Identify the license for the following projects (look for a LICENSE file in the project's root; if it's not there assume no license):

[2] Uses Mozilla Public License v2

[3] Uses Apache License v2

[4] No license listed

Go to https://tldrlegal.com/ . Look up each of the above licenses. Identify the “cans” the “cannots” and the “musts” for each.

Mozilla Public License v2 Quick Summary: MPL is a copyleft license that is easy to comply with. You must make the source code for any of your changes available under MPL, but you can combine the MPL software with proprietary code, as long as you keep the MPL code in separate files. Version 2.0 is, by default, compatible with LGPL and GPL version 2 or greater. You can distribute binaries under a proprietary license, as long as you make the source available under MPL. Can:

Commercial Use 
Modify 
Distribute 
Sublicense 
Place Warranty 
Use Patent Claims

Cannot:

Use Trademark 
Hold Liable

Must:

Include Copyright 
Include License 
Disclose Source 
Include Original

Apache License v2 Quick Summary: You can do what you like with the software, as long as you include the required notices. This permissive license contains a patent license from the contributors of the code. Can:

Commercial Use 
Modify 
Distribute 
Sublicense 
Private Use 
Use Patent Claims 
Place Warranty

Cannot:

Hold Liable 
Use Trademark

Must:

Include Copyright 
Include License 
State Changes 
Include Notice

For each license, state whether you would (or would not) be comfortable contributing code to that project and why (or why not): It depends on the nature of the project and the nature of my contribution whether I would be willing to (comfortable) contribute code. If the effort was in the course of my role as an educator, there would probably be no issue other than possibly clearing the contribution with my employer if the work was performed as part of my teaching duties during a semester.

B.4: FOSS in Courses 1 Because I am teaching C++ programming (CS1/CS2), Concepts of Programming Languages, and Operating Systems Software courses, I would focus on FOSS coding tasks such as the following as suggested in this activity:

  Analyze existing code to understand what it does and how it works.
  Reformat, document, & refactor existing (others') code to make it more readable & consistent.
  Analyze the sequence of function calls that produces a specified { feature | page | screen }.
  http://piratenpad.de/softhum-workshop-analysis
  Identify examples of a given { coding construct | data structure | pattern } in a FOSS.
  could provide teachers with examples to use in other courses
  Given specification & code, provide an itemized list of tasks and describe how each was met.
  Given a problem and 2+ solutions to a problem, compare, summarize, & present.
  naming conventions, coding style, efficiency, etc...
  Given a problem, find 2+ solutions (to same or similar problem) and summarize the differences 
  between the solutions.
  Determine how well a { FOSS | component } meets its specifications.
  Develop a code walkthrough
  In teams of 2-3, students walk through working, uncommented code to determine its purpose.
  Deliverables: A brief summary (1-2 paragraphs) describing the purpose of the code.
  Could be senior level assignment, where students are asked to understand a complicated segement of 
  code from a larger project. CS1-2: students are given a partial implementation of a class as to 
  determine what a specific method does.
  http://piratenpad.de/softhum-workshop-template-walkthrough
  http://foss2serve.org/index.php/Document_code_with_meaningful_comments
  Develop UML diagram(s) for a FOSS.
  FOSS UML tool: http://argouml.tigris.org/
  PC Clements, & DL Parnas. 1986. “A rational design process: How and why to fake it.” IEEE 
  Transactions on Software Engineering 12 (2): 251-257.
  Find/study examples of well & poorly written code - style wise (layout, variable names)
  Look at coding standard for an open source project (Java, Python)
  Reformat code, rename variables, etc. (possibly commit back depending on project)
  Add comments to a piece of code that has no or poor comments.
  http://foss2serve.org/index.php/Document_code_with_meaningful_comments


B.5: IRC Meeting 2 I missed this IRC meeting due to scheduling conflicts, so I reviewed the agenda and log. Agenda: http://foss2serve.org/index.php/IRC_Meeting_2 Log: https://meetbot-raw.fedoraproject.org/foss2serve/2019-05-23/irc_meeting_2.2019-05-23-17.03.log.txt

Found this bit of info in the log about Mozilla college open source clubs: https://campus.mozilla.community/ Dickinson College has participated in Mozilla summer program.


PART C C.1: Intro to Bug Trackers Open a browser and go to GNOME's issue tracker on GitLab: https://gitlab.gnome.org/groups/GNOME/-/issues.

GItLab allows groups with multiple projects to view all their issues in an aggregated view. This is what you are viewing now. List some of the projects that these issues belong to (hint - each issue has an issue number prefixed by its project name.) Projects: nautius, vte, simple-scan, gedit, meld, evolution-data-server, and more

What other information is available about each issue in this view? Issue number, last updated date/time, and by whom

Issues can be assigned labels which are also visible from this view. These are the colorful labeled ovals. List a few of the labels that you see. Feel free to browse through pages. Labels: Feature, crash, needs information, needs design, app switcher, to do, enhancement, OS: Windows, documentation, user docs, notifications, and others

Browse through a couple of issues. What additional information is provided on individual issues? In addition to a summary description and responses from developers, the following fields are shown on the right side bar: Assignee Milestone Time tracking Due date Labels Confidentiality Lock issue 2 participants

Click on "labels" in the left menu (this menu item did not display on my browser (Chrome) unless I reduced the display percentage to 80%). Notice that labels are grouped by number and color. For example, gold (olive?) labels start with "1." and represent the type of the issue, which can be used to quickly search for issues of a certain type and to know what type an issue is at a glance. What other groups are there, and how do you think they are used? Groups: 1. Bug Problems, incorrect behavior or appearance 1. Crash The issue is a crash in the software 1. Enhancement Issues that propose improvements to existing features 1. Epic Initiatives and goals across modules and releases. Epics are scoped, prioritized (among other initiatives) and doable. Epics are adviced to follow a Minimum Viable Change approach. 1. Feature New features or capabilities to be added 1. Regression Issue is an unintended break of previous working behavior 1. Security Security, privacy or safety issues 2. Merge After Freeze 2. Needs Design Needs an acceptable design solution to be identified 2. Needs Diagnosis The issue needs more diagnosis to triage 2. Needs Information Needs additional information to be diagnosed and/or resolved 2. RFC Request For Comments and discussions from developers 3. Expected Behavior Issue describes something that does not need to be changed 3. Not Actionable Issue is too generic or is not actionable 3. Not GNOME Issue belongs to non-GNOME software 3. Out of Scope Requested changes don't align with current technologies, designs or plans 4. Help Wanted Help is welcome to resolve the issue 4. Newcomers Tasks that are good for new contributors 8. Accessibility Relates to accessibility and accessibility technologies 8. Developer Docs Relates to developer documentation

Click on "board" in the left menu. Boards are used to organize issues. This board provides a high-level roadmap of the projects in GNOME. How are cards associated with columns? Not sure what the term "cards" means. Issues are organized in different columns, "Open", "Stretch", and "Deliverable".

Milestones do three things: 1. they aggregate a set of issues and 2. they associate a deadline with those issues, and 3. they provide a progress bar to visualize the status of a milestone. Milestones can be used to collect issues for an upcoming release, organize a time-boxed development effort (as in a Scrum Sprint), or they can be used to collect issues that compose a larger feature to be implemented. Click on "milestones" in the left menu. Browse through two or three of them. How does GNOME appear to be using milestones? GNOME appears to use milestones as described above.

Click on "Merge Requests" in the left menu. These look a lot like issues. Browse through a few. What do they have that issues do not? The "Merge Requests" do not contain all the detail in the issues associated with the code to be merged, but I am having trouble finding the issues contained in the merge request.

Often merge-requests contain links back to the issue that they are related to. What is the syntax for linking a Merge-Request to an issue? Again, did not see the link to one or more issues.

C.2: Intro to GitHub Done, forked repo and submitted pull request after modifying rollcall.md.

C.3: FOSS in Courses 2 I hope to find C++ code in the Ushahidi repo. The project stats don't show any C++ code, however. My programming courses use C++ exclusively, although the Operating Systems Software course uses a variety, including BASH and other scripting languages.

C.4: IRC Meeting 3 Agenda: http://foss2serve.org/index.php/IRC_Meeting_3 Log: https://meetbot.fedoraproject.org/foss2serve/2019-06-14/posse_meeting_3.2019-06-14-20.01.log.html

Also: Install GitHub on laptop to prepare for face to face workshop in Philadelphia Done

Optional: Install HFOSS project from GitHub Project: Ushahidi

Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox