CS-401 Spring 2014

Instructor
Karl R. Wurst, Blog:, OpenMRS ID: kwurst, GitHub Username: kwurst

Students

 * Jesse Anaya
 * Alan Boulais Blog:  |  OpenMRS ID: aboulais  |  GitHub Username: aboulais
 * Taylor Bruce BLOG [My Blog]
 * Alvin Cordor
 * Michael Gibson GIT HUB https://github.com/RenownedDragoon |  OPEN MRS mgibson2  |  BLOG http://mgibson2.wordpress.com/
 * Connor Kelley GitHub: ckelley1992 |  OpenMRS: ckelley6  |  My Blog
 * Matthew Lopatka
 * Dhimitris Natsis  |  OpenMRS ID: dnatsis  |  GitHub Username: dnatsis
 * Nana Onyirimba Blog:  |  OpenMRS ID: nanao  |  GitHub Username: Nnabugw
 * Kyle Primmer Blog: [Kyle's Works] |  OpenMRS ID: kprimmer  |  GitHub Username: kprimmer
 * Yuyu Zhou Blog  |  OpenMRS ID:yzhou1  |  GitHub zyybear
 * Natalie Zelaya Blog: http://natyzelaya.wordpress.com/ |  OpenMRS ID: nataliezelaya  |  GitHub: NatalieZelaya
 * TR Staake
 * Em Trieu Blog: http://herangoc.wordpress.com/ | OpenMRS ID: etrieu | GitHub: etrieu

Syllabus
http://sharepoint.worcester.edu/faculty/kwurst/Course%20Materials/Spring%202014/CS-401/Syllabus.pdf

Blog Entry Rubric
This is the first draft of a rubric for grading your blog entries. It will be used starting with entries for the Week of 24 February 2014. I will give you score for previous entries for your information only. This will let you see how your previous entries would score on this rubric, so that you can adjust your writing for future entries. (The actual score for previous entries will be 0 for "no blog entry posted" or 1 for "blog entry posted".) This rubric is subject to change, as I come up with other criteria I would like to see. I will inform you of the changes in class, or on the email list, before I apply a new version of the rubric. --Kwurst@worcester.edu (talk) 13:08, 24 February 2014 (EST)

In Class

 * HFOSS Pre-Class Survey
 * Overview of Class/Syllabus
 * Explanation of Blog Homework
 * Git Activity

Homework

 * Create Teaching Open Source account.
 * Create account in upper right-hand corner.
 * Create Blog
 * If you don't have a blog, you can create one for free at Wordpress.com, or on any other blogging platform you wish to use.
 * I suggest that you do not include CS-401 in the name of your blog. This should be a blog that you can use beyond just this class. You can tag postings for this class, so that only those postings are aggregated on the CS@Worcester and the TOS blogs.
 * Link blog to CS@Worcester Blog
 * Post RSS feed URI on How to Contribute to This Blog page
 * Link blog to Teaching Open Source Planet
 * Add RSS feed URI to Planet Feed List
 * Get an OpenMRS ID
 * Join the OpenMRS Developers List

Reading Assignments

 * The Cathedral and the Bazaar
 * Free vs. Open
 * OpenMRS Developers Guide Chapters 1-4

Blogging Assignment
These can all be parts of one blog post, or separate blog posts
 * Blog about:
 * What you are expecting to get out of this course.
 * The three readings.
 * Git activity

In Class

 * Questions about Blog set up?
 * Discussion of readings
 * Continuation of Git Activity?
 * IRC Activity
 * IRC Instructions
 * Meeting minutes:
 * Minutes: http://meetbot.fedoraproject.org/foss2serve/2014-02-03/foss2serve.2014-02-03-19.57.html	4:04p
 * Minutes (text): http://meetbot.fedoraproject.org/foss2serve/2014-02-03/foss2serve.2014-02-03-19.57.txt	4:04p
 * Log: http://meetbot.fedoraproject.org/foss2serve/2014-02-03/foss2serve.2014-02-03-19.57.log.html

Reading Assignments

 * OpenMRS Developers Guide Chapters 5-6
 * Follow the go.openmrs.org/newdev-* links sprinkled throughout the chapters
 * 14 Ways to Contribute to Open Source without Being a Programming Genius or a Rock Star
 * How to Contribute to Open Source Without Coding
 * Karl Fogel's chapter on bug trackers
 * Wikipedia's page on Bug Tracking Systems

Blogging Assignment

 * Blog about:
 * IRC activity
 * Readings

In Class

 * Wiki Editing
 * Go to the CS Department Wiki: http://cs.worcester.edu/wiki
 * Log in using your WSU username and password
 * Go to your user page by the link in the upper right-hand corner.
 * Write something about yourself in your user page. Include your name and something about you.
 * Add a link to your user page on the Students page. (See the Faculty page to see how a link to a user page works.)
 * Add a link to your user page in the CS-401 Spring 2014 section.
 * CS-401 Spring 2014/Issue Tracker Activity
 * Don't forget to write up your results on your user page. (Continue this as homework if you do not have time to finish in class.)

Homework

 * Git
 * Watch Git Videos http://git-scm.com/videos
 * Complete Git Tutorial http://try.github.io/levels/1/challenges/1
 * Fork the OpenMRS code: https://wiki.openmrs.org/display/docs/Using+Git#UsingGit-Createaccountongithub.com
 * Complete the section Get the code (with the intention of contributing changes)
 * Issue Tracker
 * Look at the introductory tickets on the issue tracker: https://tickets.openmrs.org/secure/IssueNavigator.jspa?mode=hide&requestId=10068
 * Within the issue tracker many projects separate out bugs that are considered easier for people to get their feet wet with. These bugs are reserved for people who are new to the project to give them a chance to contribute, giving them hands on experience with the code base.
 * Find at least three tickets that you might be interested in working on.
 * Read through the ticket carefully to be sure you understand what the issue is, and what will need to be done.
 * Describe the three tickets you are interested in working on, and why, in the CS-401 Spring 2014 section. Be sure you include your name.
 * Look at the tickets that others have posted to see if anyone else is interested in the same ticket, or if you are interested in any of the tickets other have posted.

Reading Assignments

 * OpenMRS Developers Guide Chapters 7-10
 * Follow the go.openmrs.org/newdev-* links sprinkled throughout the chapters

Blogging Assignment

 * Blog about
 * Wiki Editing
 * Issue Tracker Activity
 * Git Videos and Tutorials
 * Selecting three issues

Week 4: 17 February 2014
No class due to President's Day Holiday

Homework
I expect that this will be challenging, that there will be problems, that there will probably be changes to how this should be done, and this may continue into our class on 24 February 2014.
 * Follow the steps in the OpenMRS Developers Guide Chapter 10 to get your computer set up.
 * Ask questions of each other on the class mailing list
 * Post suggestions or problem solutions in the CS-401 Spring 2014 section.

Reading Assignments

 * Continue reading OpenMRS Developers Guide Chapters 7-10
 * Follow the go.openmrs.org/newdev-* links sprinkled throughout the chapters

Blogging Assignment

 * Blog about set up issues

In Class

 * Introduction of Blog Entry Rubric
 * Discussion of Candidate Tickets and Group Formation
 * Discussion of Development Environment Installation

Homework

 * Add a link to your blog to your entry in the Students section of this page.
 * Add your OpenMRS ID to your entry in the Students section of this page.
 * Add your GitHub Username to your entry in the Students section of this page.
 * In your group:
 * Determine who will be the "assignee" for the ticket
 * Make sure that if someone else was working on that ticket that they aren't still working on it.
 * Who will "own" the group's GitHub fork of OpenMRS Core
 * Add other group members as contributors.
 * Add kwurst as a contributor
 * Figure out how to split up the work
 * Probably will involve mostly everyone reading code this week, trying to list what needs to be done, then assigning people.
 * You can keep track of all of this on the group page that I created for your group.

Reading Assignments

 * | Squashing Github pull requests into a single commit

In Class

 * Group status reports

Week 8: 17 March 2014
No class due to Spring Break

Homework
Preparing your Book Presentation
 * Sum up the book in one sentence.
 * Who is the intended audience for the book?
 * Who do you think would benefit most from this book?
 * What does the book cover?
 * Was the material in the book useful to you?
 * What was the most important thing you learned from this book?
 * Would any of the material from this book be useful in earlier CS courses? Which ones?
 * Did you enjoy reading this book?
 * Would you recommend it to others?
 * Would you buy your own copy?

Week 13: 21 April 2014
No class due to Patriot's Day Holiday

In Class
Book Presentations (15 minutes each)
 * 1) Alan Boulais
 * 2) TR Staake
 * 3) Matthew Lopatka
 * 4) Yuyu Zhu
 * 5) Alvin Cordor
 * 6) Dhimitri Natsis
 * 7) Kyle Primmer

In Class
Book Presentations (15 minutes each)
 * 1) Connor Kelly
 * 2) Jesse Anaya
 * 3) Taylor Bruce
 * 4) Natalie Zelaya
 * 5) Nana Onyirimba
 * 6) Michael Gibson
 * 7) Em Trieu

Week 16: 14 May 2014
Note that this is a Wednesday at 12:30pm-3:30pm

In Class

 * HFOSS Post-Class Survey
 * Presentations (In groups - n*10 minutes, where n is the number of members of the group)

Format

Each group will present on their work. Some expectations:
 * Every member of the group will take part in the presentation equally.
 * Your presentation will provide an overview of the entire process – not just the final product, but also the problems encountered and the changes made as your group progressed.
 * Powerpoint or other presentation software is suggested, but not required

Questions to answer
 * What did you learn about:
 * Teamwork?
 * Communication?
 * Working on a large project?
 * Working with a people you don't know personally?
 * New (to you) technologies, and how did you learn about them?
 * What was your biggest challenge?
 * What was your biggest accomplishment?
 * What do you wish you had done or learned, but did not get to?

TRUNK-2744
| https://tickets.openmrs.org/browse/TRUNK-2744

Members

 * TR Staake
 * Matthew Lopatka

Ticket Assignee

 * Matthew Lopatka

TRUNK-248
https://tickets.openmrs.org/browse/TRUNK-248

Members

 * Alan Boulais
 * Dhimitri Natsis
 * Kyle Primmer

TRUNK-243
https://tickets.openmrs.org/browse/TRUNK-243

Members

 * Em Trieu
 * Connor Kelley
 * Natalie Zelaya
 * Taylor Bruce

TRUNK-309
| https://tickets.openmrs.org/browse/TRUNK-309

Members

 * Jesse Anaya
 * Michael Gibson
 * Yuyu Zhu
 * Alvin Cordor
 * Nana Onyirimba

Candidate Tickets
Formatting notes:
 * Don't forget to add your name to the tickets you add here!
 * No need to copy text from JIRA, just include a link to the actual ticket.
 * Include a brief description of the issue
 * Include a brief explanation of why you think this is a ticket you would like to work on
 * Make sure the ticket is not already assigned to anyone

Natalie Zelaya

TRUNK-324: Go through the TODO items code and create tickets out of them

https://tickets.openmrs.org/browse/TRUNK-324

Description: There are a good number of TODO items in the core code. They aren't doing much good in this state. These items should be examined and tickets made for them to be fixed.

Why this ticket? Working with labels and tickets would be interesting. I think it would be a good start to get familiar with the OpenMRS projects.

TRUNK-3293: Add error checking to relationship start/end dates on patient dashboard

https://tickets.openmrs.org/browse/TRUNK-3293

Description: Add error checking to relationship start/end dates on patient dashboard. Currently, if you try to add an end date that is prior to the start date it will let you. This happens with Version: 1.9.0 RC3 Build 26871.

Why this ticket? I'm very interested in working on database issues. I would like to gain hands-on experience working with database.

OTHER-16: Ability for Data assistants to see the number of forms entered

https://tickets.openmrs.org/browse/OTHER-16

Description: The DataEntryStatistics module allows admins to see what progress has been made by data enterers. However, sometimes users want to see their status as well. Add a feature to the DES module (http://svn.openmrs.org/openmrs-modules/dataentrystatistics/trunk/) that hooks to an extension point (https://wiki.openmrs.org/display/docs/Module+Extension+Points) on the "My Profile" page.

Why this ticket? it would be nice to work on a new feature...

TRUNK-3777 Bug in the concept search related to concept names containing stop words https://tickets.openmrs.org/browse/TRUNK-3777

Description - An exact match should always be shown as a result, regardless of whether or not the concept name contains stop words Identify why concept names containing stop words are not considered matches to their exact name.

An interesting bug regarding why the search function does not yield results when a stop function is entered. Would provide a good look to see how the search algorithm operates causing this error. Alan Boulais

TRUNK-3386 Increase the privilege column size

Description - Increase the privilege column size in the privilege and role_privilege tables from 50 to 255 characters.

A smaller bug/new feature that is apparently preventing longer segments of information from being entered properly. Would give insight to see how the databases are organized within the tables. Alan Boulais

- Michael Gibson

Encounter provider elements allow default value to be non-provider

If I have a form with the following element:  Even if the current user is not a provider, they will still appear in the list of provider options, leading to exception being thrown in controller. Should Be an easy fix to get in the program with but it might be outdated as the Ticket is a few months old

- Matthew Lopatka

TRUNK-367 New Feature

Create a German messages.properties translation file

Description - It would be convenient to have a German translation of the messages.properties file.

Why this ticket? I’ve worked with translation tools such as LocBaml and Redpin for .Net applications in the past so I think this would be a great way to get my feet wet.

TRUNK-15 New Feature

Saving the same name more than once should not be allowed.

Description - I Can save Relationship Types, Concept Classes, Patient Identifier Types, Field Types, Drug Order Types, with the same name, any number of times. I guess this behavior is not intended.

Why this ticket? It seems like a bit of redundancy that could be cleaned up.

REPORT-517 Improvement

Description - There have been many, many confused users who cannot get their reports to run because their scheduler username and password global property is not set to a valid user with appropriate credentials. We should check this on the run report page and ensure that such a valid user exists before allowing a user to run any report. If the credentials are invalid, we should provide a clear error / warning, and provide instructions for the administrator to update these settings.

Why this ticket? I think with this improvement the user would at least get an immediate warning that invalid credentials are being entered, leading to less confusion and time loss. -

Connor Kelley

TRUNK-324: Create tickets for TODO items

https://tickets.openmrs.org/browse/TRUNK-324

This seems like it would be a good way to get a feel for their bug tracking system.

TRUNK-309: Add better javadoc comments to services

https://tickets.openmrs.org/browse/TRUNK-309

This seems like a good way to look at the code and document it, which would be helpful for everyone that tried to work on it in the future.

STAND-19: Set application icon to OpenMRS logo

https://tickets.openmrs.org/browse/STAND-19

This seems like a real easy fix and would help with the visibility of the application, which would especially help people less familiar with computers

- Dhimitris Natsis

TRUNK-324: Go through the TODO items code and create tickets out of them

https://tickets.openmrs.org/browse/TRUNK-324

Seems like a pretty easy and straight forward ticket to start with.

TRUNK-4031: locking mechanism for patient_identifier_type

https://tickets.openmrs.org/browse/TRUNK-4031

Seems like to problem is not to complicated and would be a good introductory ticket to get a feel for the way the program works.

TRUNK-4032: locking mechanism for person_attribute_type

https://tickets.openmrs.org/browse/TRUNK-4032

The problem and ticket are very similar to the last one so i feel like if you complete one you kind of should complete both.

- TR Staake

1) OpenMRS Trunk TRUNK-3254: Add junit test for searching on voided identifiers in PatientSearchCriteria.addIdentifierCriterias

This seems like a simple coding task to get familiar with a section of openMRS code and JUnits

2) OpenMRS Trunk TRUNK-324: Go through the TODO items code and create tickets out of them

This seems like it would be fairly simple to work on and by the sounds of it there is a lot of TODO's to be made into tickets

3) OpenMRS Trunk TRUNK-248: Add JUnit @should annotations according to code comments

This also seems fairly easy to do and also once these are identified could also lead to generating the desired JUnit tests.

4) OpenMRS Trunk TRUNK-2744: Add a "modify dosage" system to the Drug Regimen tab

This seems like it would be fairly simple to implement

Alvin Cordor

1.) Report-420: the issue is that it display a list of report using data.

2.) Trunk-15: the issue is that saving the same name more then once should not be allowed.

3.) Trunk-309: the issue here is to add a better Javadoc comments to services.

Jesse Anaya

1. TRUNK-324: Going through the to do items and separating them out into smaller tickets will make it easier to solve each one at a time. TRUNK-324

2. TRUNK-309: I enjoy documentation and attention to detail, so I would prefer to do something I am good at. Javadoc should be as clear as possible when working in this large of a scale. TRUNK-309

3. UIFR-124: Even though the task seems trivial, it should be easy to complete even not knowing the entire project or source code. UIFR-124

 EM TRIEU 

1. TRuck-324: Go through the TODO items code and create tickets out of them

https://tickets.openmrs.org/browse/TRUNK-324

Description: There are a good number of TODO items in the core code. They aren't doing much good in this state. These items

should be examined and tickets made for them to be fixed.

Do a global search for the word "TODO" in the api and web projects

Add a ticket with as much description as possible. (file it was in, line number, and the TODO wording)

Link those tickets to this ticket.

Someone with more knowledge of the codebase can fill in more details around the ticket. Chosen: i think that will be the easy ticket to work on. 2.TRUCK-309 Add Better Javadoc Comments to Services https://tickets.openmrs.org/browse/TRUNK-309

Description: The Services are in need of a once-over to check for javadoc style comments. Quality comments and descriptions

should be added at the class-level to all interfaces+classes in the org.openmrs.api package.

Chosen:I interesting on the document. The Javadoc is the large and that is need to be done as soon as possible.

3.STAND-19: Set application icon to OpenMRS logo

https://tickets.openmrs.org/browse/STAND-19

Description: Change the application icon of the OpenMRS Standalone's user interface to the OpenMRS logo. If it helps, here's

a relevant Stack Overflow question.

Chosen: Because i just learn about OpenMRS. i'm interesting on this that why i choose this ticket.

---

Book Assignments

 * Em Trieu - Effective Java
 * Natalie Zelaya - Clean Code
 * Dhmitri Natsis - Making Software
 * Kyle Primmer - Code Reading
 * Connor Kelley - Pragmatic Version Control using Git
 * Taylor Bruce - Pragmatic Unit Testing with JUnit
 * Alan Boulais - Agile Development
 * Alvin Cordor - ''Head First Software Development
 * Yuyu Zhu - Head First Object-Oriented Analysis and Design
 * Jesse Anaya - 'The Pragmatic Programmer''
 * Nana Onyirimba - Code Complete
 * Matthew Lopatka - Head First Design Patterns
 * TR Staake -
 * Michael Gibson -

Fork the OpenMRS repository
Only one person in the group needs to do this. You need to make your own copy of the OpenMRS core respository on GitHub. This is because you do not have privileges to make changes to the project's repository. Forking the respository will make a copy that you own.


 * On https://github.com/openmrs/openmrs-core, click the Fork button in the upper-right.

Add your teammates as contributors
Only the owner of the group repository can/needs to do this. You need to allow your teammates to push changes to the repository.


 * On GitHub in your repository, click on the Settings button at the bottom of the icons along the right-hand side.
 * Click on Collaborators in the left-hand menu.
 * Add your teammates as collaborators.

Clone the repository to your computer
Every member of the group needs to do this You need get the code from your repository on GitHub to your computer so you can actually work on the code.


 * On GitHub in your repository, copy the SSH clone URL from the box at the bottom of the icons along the right-had side.
 * Open a terminal window in the directory where you want to put the code.(See the Git page for hints on how to do this.)
 * In the terminal window, type . You can leave out the folder name if you are OK with the folder having the name openmrs-core.

Git workflow
Whenever you are working on the code, you should follow this general workflow:


 * Get any changes your teammates have made to the code by typing
 * Do your work.
 * Check which files have changed:
 * Add the changes you want to commit to the staging area, repeat for each file:
 * If you are sure you want to add all the changed files:
 * Save your changes in a commit:
 * to get any changes your teammates have made since you started.
 * Push your changes to the group's repository on GitHub:

Pull changes from OpenMRS
Occasionally, you should make sure you have the most up-to-date code from the main OpenMRS repository (upstream).


 * Make sure you have committed your changes!
 * Pull the changes from the main OpenMRS repository, and make it look like you've been working with this version from the start:
 * Push the changes to the group's repository on GitHub:

Ask OpenMRS to pull your changes
Only the owner of the group repository can/needs to do this.


 * On GitHub in your repository, click on the green Pull Request button to the left of the branch pull-down.
 * Review the changes to be sure this is what you want pulled.
 * Click the green Create Pull Request button.
 * Describe the changes.
 * Click the green Send pull request button.