User:Rmezei

From TeachingOpenSource

Razvan "Alex" Mezei

Name: Razvan A. Mezei

Preferred name: "Alex"

Position: Assistant Professor, Computer Science, Saint Martin's University

Page: SMU webpage

Interests: Applied Mathematics (Approximation theory, Numerical Analysis, and Inequalities) & Computer Science (Open Source, Programming Languages, Data Structures, Algorithms, Healthcare Informatics, and Cybersecurity).

Hobbies: Photography and Videogames.

POSSE 2019-06

Intro to IRC (Activity)

For Part 1

How do people interact? People interact very casual. Based on my previous experience, this is typical in iRC chats.

What is the pattern of communication?

Are there any terms that seem to have special meaning?

What advantages might IRC have over other real-time communication methods (like Google Chat or Facebook Messenger?) Are there potential disadvantages? iRC have bots, which can be useful in documenting important topics. They are free, and lightweight. Without knowing the link for the bot archive, it may be difficult to see a history of the conversation (iRC chats don't have a "history" that one can review "on-demand". Also, if a user changes their nickname, this will not be reflected throughout the past/historical text. Also, one can easily impersonate others.

Can you make any other observations? See above ...

Bonus question: Why didn't Heidi and Darci's actions get picked up by the meetbot? My guess is that the bot is case sensitive ...


For Part 3

I have observed a few channels:

If you use an iRC nick that is not being registered (or not logged in) then joining #python will redirect you to #python-unregistered.

Then, joining #python, one gets to see the following intro: "Topic for #python is: Anything about Python is on-topic. Don't paste, use https://bpaste.net/+python | Be nice: https://j.mp/psf-coc | Tutorial: https://j.mp/MCAhYx | New programmer? https://j.mp/23X7emF | Local user groups: https://j.mp/1Mq06bF | #python-fr #python.de #python-es #python.tw #python-br #python-nl #python-ir #python.it #python-ro #python-india #python-hu #python-dk" which helps guide new users on various policies, rules, and helpful info. As you join channels that are more populated, it can get rather "noisy" inside. For example, the following is a set of consecutive lines from an iRC discussion on #python. Notice how it contains a lot of noise and it contains a few concurrent discussions:

<Nozzzle> hello, I have just got a glimpse of matlab, and found the basics quite similar to python..do you agree?
<emmex> off to continue my journey!
<Nozzzle> I can replace matlab with GNU Octave, here, as I used octave editor
* gelignite has quit (Quit: Good fight, good night!)
* longshi has quit (Ping timeout: 276 seconds)
* xcm has quit (Remote host closed the connection)
* xcm (~xcm@ipa210.225.tellas.gr) has joined
* shadyproject has quit (Quit: shadyproject)
* Wonny has quit (Ping timeout: 276 seconds)
* Nozzzle perhaps said something he shouldn't have...
<nedbat> you didn't say anything wrong, just no one has an opinion i guess
* lord_EarlGray (~lord_Earl@125-41.echostar.pl) has joined
* versatiletech (~versatile@97.103.62.209) has joined
<bjs> Nozzzle: well numpy is very similar to it.  I guess there are going to be lots of similarities between most major programming languages.
* Sonderblade has quit (Quit: Konversation terminated!)
* penth has quit (Remote host closed the connection)
* sydbarret (~sydbarret@unaffiliated/sydbarret) has joined
* versatiletech has quit (Client Quit)
<sydbarret> how can i do this in one line
* gegagome (~gegagome@ip98-185-225-12.sb.sd.cox.net) has joined
<sydbarret> for r in removed_ids
<sydbarret> security.validate_keyword(r)
* versatiletech (~versatile@97.103.62.209) has joined
<Nozzzle> bjs, GNU Octave is written in c, c++ and fortran. does it mean with some degree of python background one can go on to learn, say, c++ ?
* Nightwing52 (~Thunderbi@71-221-224-186.dvnp.qwest.net) has joined
* versatiletech has quit (Client Quit)
* versatiletech (~versatile@97.103.62.209) has joined
<bjs> Nozzzle: I mean as you learn languages it gets easier to learn other languages, that at least is true.  But you'd need more than "some" background, and you'd still need to dedicate a lot of time to learn the new language.
* versatiletech has quit (Client Quit)

Overall the discussions seem very casual, and friendly. Some in here seem to be experts in Python programming, while many other in here are just looking for answers and support.


A similar channel that I observed is ##csharp. This channel posts the following "rules" at the beginning of the channel page: "Topic for ##csharp is: C# Developer Discussions | NO SPOONFEEDING (FORKFEEDING OK), HOMEWORK, TXTSPK, RECRUITING -> http://whathaveyoutried.com/ | NO WALLS OF TEXT (>3 lines) -> https://gist.github.com https://dotnetfiddle.net | Please ask before PMing someone | Please read http://wiki.freenode-csharp.net/ | Topic Channels: ##vb.net, ##asp.net, ##xaml, ##fsharp, ##xna" This seems to sum up quite what the intent of this page. Since "FORKFEEDING OK"


Currently (Apr 29th, 2019, at 11:26 pm PST) there are 1819 users on #python, and 352 users on ##csharp.


observations of the #a11y channel communications and how they differed from the sample dialog in Part 1. I am not sure of this is the correct channel but this seems to be a french channel, with a topic set quite a while ago:

Topic for #a11y is: Salon de discussion autour de l'accessibilité numérique
* Topic for #a11y set by sebcbien (Sun Aug 28 04:30:31 2011)


I also joined a channel #POSSE but this seems to be unrelated to our group:

* Topic for #posse is: http://www.youtube.com/watch?v=Ucq95ERRVEA
* Topic for #posse set by denny (Fri Apr 22 10:28:03 2011)


Intro to FOSS Project Anatomy (Activity)

The Sugar Labs Project

Roles that may be most applicable to students:

  • Educator: some (not many) of my students who are pursuing a Math& CS dual degree, could easily fit this - especially if they are interested in becoming educators
  • Content Writer: several of my current students could easily do a great job in this area.
  • Developer: most (if not all) of my current students could fit well in here.
  • Translator: many my current students (international students, as well as students who master other languages) could help in here.


What are the commonalities across roles?

  • A mastery or desire to learn various skills needed by these roles.


What are the differences?

  • Different roles focus on different aspects of the project: communication, development, languages, etc.


Describe the general process for submitting a bug:

  • to submit a but one would go to https://github.com/sugarlabs/sugar/issues and click on the green "New issue" button. For this, you need to log into a gitHub account. Then, in there, you would need to select a title and a description of the bug you want to report.


Indicate the types/categories of tickets listed on this page as well as the information available for each ticket:

  • the query-oriented page (which seem to be to contain older reports) contains bug reported as either: defect, enhancement, or task. In gitHub they currently allow the following "labels": bug, design, errata, feature, needs SLOBS, needs work. When a bug is reported, it only contains a title and a description. I believe that these tickets are then going through a triage where they are further categorized and more information (such as: how to reproduce it, which functionality is affected, etc) may be added. Looking into https://bugs.sugarlabs.org/ticket/3209 each reported bug can contain the following: a title, a description, the reporter, priority, version, bug status, distribution, milestone, history of description (as this may change over time), etc.


Click the "Commits" link and determine the date of last commit (an update of the repository):

  • Commits on Apr 30, 2019


Describe how the release cycle and roadmap update are related:

The Sahana Eden Project

Community

  • the responsibilities seem to be broken down into more roles, which makes me feel they may be a little more defined (as compared to the sugarlabs project). The ramping process for each role seems more clear to me. Each role has a specific mailing list, guidelines and ramping process for specific tools used by those teams, etc. As a commonality, both projects seem very inviting and they welcome every potential contributor.


Tracker

  • There are many more labels in here compared to the sugarlabs project. These are: Admin, Bug, CAP, Core, CRMT, CSS, Documentation, DVR, Enhancement, GIS, i18n, Major, Messaging, Minor, Organization Registry, Person Registry, S3, Test, UI, and WA-COP.
  • This project allows multiple label for each issue shown in https://github.com/sahana/eden/issues, as opposed to the ones in https://github.com/sugarlabs/sugar/issues that seem to only have at most one label per issue. The Sahana project seems to use the labels to also categorize the severity, not only the functionality that is being affected.


Repository

  • Commits on May 2, 2019


Release cycle

  • Accessing the roadmap of this project is not possible unless you log in. Going to the "Login/Register" page, after passing the certificate error warning, it does not seem to allow you to register a new account. I also tried, unsuccessfully, to go to "reset password" but still no luck in creating a new account.


FOSS Field Trip (Activity)

Part 1 - GitHub

  • On May 18th, 2019. there were 27,803 repository results containing the work "education" in their title.
  • Of these, 3,453 use JavaScript
  • EbookFoundation/free-programming-books was updated "two days ago", and "hsavit1/Awesome-Swift-Education" was updated on July 1st, 2018.
  • freeCodeCamp/freeCodeCamp project has the most starts, approximately 303k (to be exact: 302,781).
  • this project has 225 open issues, and 13,332 closed ones.
  • it has 1,811 open pull requests, and 20,291 closed ones.
  • the insights page seems to show an overview (more like a dashboard) of various statistics regarding the pull requests and issues that happened in the past 1 week (one could also select 24h, 3 days, or 1 month)
  • clicking on "commits" link inside the Insights tab, one could see a graphical representation of the # of commits for the past week, as well as a graph that shows the #of weekly commits for the past one year.
  • On May 18th, 2019. there were 506 repository results containing the work "humanitarian" in their title.
  • HTBox/crisischeckin uses C#, and it has 178 stars, and having the last update made on Oct 24, 2018.
  • On May 18th, 2019. there were 2,153 repository results containing the work "cybersecurity" in their title, with Python being the most popular programming language among these repositories.
  • On May 18th, 2019. there were 57,205 repository results containing the work "hacking" in their title, with JavaScript being the most popular programming language among these repositories.

Part 2 - OpenHub

  • As of May 18th, 2019, search for "education", it yielded 2262 projects.
  • of the most active projects shown on the first page I recognize: Moodle, GeoGebra. From the second page, I would like to mention: Sakai, Wireshark, and Gnuplot.
  • KDE Education has 23 code locations, none of them being on GitHub.
  • There are 10 similar projects listed in https://www.openhub.net/p/kdeedu/similar
  • For each of the similar project, the following info is displayed: project name, most used programming language, license type, and how active the project is.
  • Searching again on this page, I retrieved 23 projects when searching for "humanitarian", and 30 projects for "disaster management". Searching for "hacking" I received 1183 projects, and only 8 projects when searching for "cybersecurity".
  • some projects have an "activity not available" icon. These "projects [..] do not have recent analysis because of problems with their code locations or other problems blocking Open Hub from collecting and analyzing code" (https://blog.openhub.net/about-project-activity-icons/)
  • the Organizations page shows a short list of the Most Active Organizations, another list for the Newest Organizations, and two other lists, one containing Statistics (Average Commits / Affiliate, and number of organizations) for various Sectors, and one containing Statistics (Name, Type, Size, Number of Projects, Number of Affiliates, and the Number of 30-Day commits) for various Organizations.
  • A search for "OpenMRS" in the Organizations page will display the link to the Organization page (notice, below this link one can find: "46 projects").
  • Looking in https://www.openhub.net/p/openmrs, it seems that the last commit for OpenMRS Core was in January, 2018.
  • Looking in https://github.com/openmrs/openmrs-core, the last commit for OpenMRS Core was 3 hours ago (May 18, 2019). Therefore, my guess is that this project may have moved its location and OpenHub link was not updated appropriately.
  • I really like OpenHub for all the graphics and statistics it provides for various projects. That being said, the projects will usually be stored in repositories such as GitHub, so if someone is searching for the source of a project or various issues and/or commits information, they would have to look into the repository.


Project Evaluation (Activity)

OpenMRS project (see the following link for details and source of the rubric: https://teachingopensource.org/index.php/Project_Evaluation_Rubric_(Activity)):


Evaluation Factor Level
(0-2)
Evaluation Data
Licensing 2 Mozilla Public License, version 2.0
Language 1 Java 96.2%, SQLPL 2.9%, Other 0.9%
Level of Activity 1 3 out of 4 quarters seem active. The last quarter seems rather inactive.
Number of Contributors 2 There are currently 323 contributors.
Product Size 2 223.3MB
Issue Tracker 1 There are 1287 "ready for work", and 14136 "closed" issues. The third issue in the Curated list (Go through the TODO items code and create tickets out of them) was created on "2008-05-21 18:59:09 GMT+0000". The site crashed and reset while working on these questions, hence my score for this rubric is 1.
New Contributor 2 The project contains all the information needed to ramp up any new contributor. For this, one could use the following sites useful: https://openmrs.org/ and https://wiki.openmrs.org/ . In particular, https://wiki.openmrs.org/display/docs/Getting+Started+as+a+Developer https://talk.openmrs.org/ and https://wiki.openmrs.org/display/IRC/Home
Community Norms 2 https://wiki.openmrs.org/display/docs/Code+of+Conduct contains generic rules as well as penalties when these are broken. This page also contains a dead link: https://wiki.openmrs.org/display/docs/GitHub+Code+of+Conduct . The talk functionality (https://talk.openmrs.org/t/automation-of-create-openmrs-owa-with-react-components/22043/42) seems casual, and friendly. I noticed that people are interacting from around the globe. In this last link, one can see how the iRC is used for a "real time" communication.
User Base 2 This project is very well defined. Although there is a lot of information on https://wiki.openmrs.org/, one could also utilize the following to ask/answer questions: http://go.openmrs.org/ask . There is a user guide: https://wiki.openmrs.org/display/docs/User+Guide and there is also a Developer guide https://wiki.openmrs.org/display/docs/Developer+Guide that contains (among other things) a Step-by-Step Installation for Developers (https://wiki.openmrs.org/display/docs/Step+by+Step+Installation+for+Developers)
Total Score 15


Intro to Copyright and Licensing (Activity)

The license for each of the following projects:

  • PROJECT: https://github.com/apache/incubator-fineract
    • Apache License, Version 2.0, January 2004
    • https://github.com/apache/fineract/blob/develop/LICENSE_RELEASE
    • Allows you to modify and use the source without having to distribute it. This type of license is good if you want to benefit from a free project but don't want to disclose other the changes you've made. It may be great for a company (having trade secrets), or even a government organization, but for the overall development of the project this permission doesn't seem very helpful.


FOSS in Courses 1 (Instructors)

Activity 1:

  • Because I currently use C# in my courses, I am considering selecting a few HFOSS projects that use C# (or Java/C++) and ask my students to analyze the running time for various methods.

Activity 2:

  • I would like to create an activity in which students will be asked to reflect on how specific data is formatted/structured for a given HFOSS project.
    • Given my experience with developing Commercial Electronic Health Records, I think OpenMRS would be a good project to look into.
    • If possible, it would be great to find data structures and/or algorithms in the given code similar to the ones I introduce in my class - or maybe ask the students to find them throughout the project.
    • The following existing activity is somewhat related to what I have in mind: https://teachingopensource.org/index.php/CS2_Data_Structures_Activity or CS2_Data_Structures_Activity

Intro to Bug Trackers (Activity)

  • In this activity we used GNOME's issue tracker on GitLab: https://gitlab.gnome.org/groups/GNOME/-/issues
  • Some of the projects in here: network-manager-applet,gnome-keysign, gnome-shell, babl, evolution, vala, gnumeric, glade, glib, gnome-control-center, etc.
  • Each issue has the following information shown in this view: a title, and id (project prefix # number), how long ago was it opened, and by whom, how long ago was the last update, and the number of comments added to that issue.
  • Labels visible in this view (they seem to be project specific, and some tickets may have more than one label assigned to them): "5. On-screen Keyboard", "6. Input", "6. Component: Region & Language", etc.
  • Visiting individual issues, one can see that is contains more relevant information such as: description (where a writer could describe the steps needed to reproduce the issue, or provide screen shots and other details), an assignee, a milestone, a time tracking, a due date, set labels, confidentiality level, and a list of participants.
  • Labels are used in order to priorities the scheduling for fixing those issues. Each label has a number (priority, 1 - being the highest priority) and a short text. For example, the gnome-shell project currently has the following labels: 1. Bug, 1. Cleanup, 1. Crash, 1. Enhancement, 1. Epic, 1. Feature, 1. Regression, 1. Security, 2. Merge After Freeze, 2. Needs Design, 2. Needs Diagnosis, 2. Needs Information, 2. Needs Triage, 2. RFC, 3. Expected Behavior, 3. Not Actionable, 3. Not GNOME, 3. Out of Scope, 4. Help Wanted, ... There is also a set of labels that do not contain a number: To Do, Doing, Stretch, HiDPI, Deliverable (see https://gitlab.gnome.org/GNOME/gnome-shell/labels).
  • The last set of labels seem to be useful in otrganizing the issues. Boards display several columns, one of them - for example - displays the issues labeled "To Do", another one displays the ones labeled "Doing", etc.
  • Milestones can be seen in here: https://gitlab.gnome.org/groups/GNOME/-/milestones Each milestone seems to have an expiration date, a project name, and a progress bar indication the number of issues, number of merge requests, and the completion rate.
  • Merge requests allow you to check out a branch, and contain a status, such as: "Ready to be merged automatically. Ask someone with write access to this repository to merge this request" and "This is a Work in Progress".

FOSS in Courses 2 (Instructors)

Activity 1:

  • Because I currently use C# in my courses, I am considering selecting a few HFOSS projects that use C# (or Java/C++) and ask my students to analyze the running time for various methods.
    • Some possible learning outcomes:
      • apply algorithm analysis skills to analyze the performance of various algorithms
      • getting familiar to navigate through unfamiliar code (a "real" project)
    • Prerequisites:
      • understanding basic programming constructs (typically the ones introduced in CS1) and the big-Oh notation.
    • Time estimation:
      • the instructor can allow the student to choose his/her own adventure (hence there will be almost no time needed from the instructor)
      • the student will need to get access to the source code - depending on the project chosen by the instructor this may be time consuming - it may take a few hours, or take as little as just 10 minutes.
    • Input required from the HFOSS community: none
    • Assessment/grading approach: individual work, assessed by the instructor - the student could be asked to find 5 examples of methods that run in O(1), O(n), O(n^2), etc.

Activity 2:

  • I would like to create an activity in which students will be asked to reflect on how specific data is formatted/structured for a given HFOSS project.
    • Given my experience with developing Commercial Electronic Health Records, I think OpenMRS would be a good project to look into.
    • If possible, it would be great to find data structures and/or algorithms in the given code similar to the ones I introduce in my class - or maybe ask the students to find them throughout the project.
    • The following existing activity is somewhat related to what I have in mind: https://teachingopensource.org/index.php/CS2_Data_Structures_Activity
    • Some possible learning outcomes:
      • apply algorithm analysis skills to analyze the performance of various algorithms and compare them to the ones introduce in class
    • Prerequisites:
      • understanding basic programming constructs (typically the ones introduced in CS1) and the big-Oh notation.
    • Time estimation:
      • the instructor will need to invest quite some time in order to find relevant data structures used by the HFOSS project that were also introduced in class.
      • the student need to only focus on the running time analysis and comparison of various data structures selected by the instructor.
    • Input required from the HFOSS community: none.
    • Assessment/grading approach: it may be useful to let students adventure through an HFOSS project in teams of 2-3 students.

POSSE 2014-xx

The old content (for POSSE 2014) was removed. View history of this page to see this content.