Date

7am PDT

Meeting Link

https://www.uberconference.com/villagereach-isg

Optional dial in:
Dial in: 401-283-5773
PIN: 66343

Attendees

Goals

Discussion items

TimeItemWhoNotes
5mAgenda reviewTBD
20mUI extension maintainabilityNick Reid
5mAction item review

Notes

Malawi UI Development Notes

From Weronika Ciecierska (Unlicensed) (added notes from Nick Reid (Deactivated) in italics, he also reformatted the notes slightly ;-)

Branding changes

One thing worth noting is that currently we don't have our own transifex account and we are storing json files with messages in the GitHub repository (there's a ticket to start using transifex for messages changes specific for Malawi).


Adding new functionality

Changing existing functionality

Problems that I encountered because of this solution:

(1) Overwriting Unit Tests

At first, it wasn't possible to overwrite test files - so for example when a controller file was copied to the Malawi repository and then its functionality was changed, we could create new tests for it, but the old tests were also carried out while build - there was no possibility to overwrite/remove the core tests.

We wanted to be sure, that implementer won't break existing functionality when adding/editing files. Later we changed our approach, and right now it's possible to overwrite tests, because some of the tickets were changing tested functionality in a way that was intended, but was breaking the core tests.

For example: in the core, requisition with status IN_APPROVAL is editable for the approver, and in the Malawi implementation it's read-only - our change was breaking the product grid tests checking "isReadOnly" method.

(2) Maintaining Forked Files

After every release, I had to go through all copied files in the Malawi and manually merge in the changes that happened in those files in the core since the latest release. Sometimes it was only refactor, sometimes it was changed functionality.

At the beginning it was quite easy task to do, but merging this month's release was a little bit more complicated. Example: As mentioned in (1), we changed the "isReadOnly" method from the product grid. In the latest release the core team refactored this method (functionality was still the same) - so when merging those changes, I remembered that I changed this method in the forked file and merged it correctly, but if I weren't working on it before, I probably wouldn't notice this small change and just copy the new, refactored function to the forked file (on the other hand, that would make our overwritten unit tests fail and make developer realize that this functionality was changed in the Malawi implementation).

Question: What are the main reasons for forking the unit tests? When we added the Rejected status to the requisition service. The product grid had a new state that it needed to support but it didn't know about it. The new rendering state broke the unit tests.

(3) No Git History

There is no git history for the forked files - so we don't know which files are new and which are copied from the core repository. Additionally, we don't know what was changed in the files copied from the core - once I had to use online files comparator to determine what was different in the forked file.

The easiest solution for this is just add files from the core with two commits: first commit with the original file and THEN changes made in this file for the Malawi implementation in the next commit. Maybe it is possible to get git history of the files when we move Malawi repos to the different organization? This would probably be solved by using a second organization on github and forking repositories that are getting "functional changes"

UI Extension Maintainability

Improving UI Experience

Action items