Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MyUW Processes and Practices - Apereo 2014

MyUW Processes and Practices - Apereo 2014

Apereo 2014 presentation about processes and practices in developing MyUW.

Andrew Petro

June 03, 2014
Tweet

More Decks by Andrew Petro

Other Decks in Programming

Transcript

  1. Getting there is half the fun MyUW Processes & Practices

    Helwig • Petro • Vertein Open Apereo 2014 • Tuesday June 3rd
  2. See also • Last year’s presentation on Jenkins-driven Maven •

    This year’s presentation on MyUW Redesign • Tech demo of MyUW • Blog post version that will follow :)
  3. Getting there is not in fact half the fun But

    thank you, Sam, for making the flight here not nearly as difficult as it could have been…
  4. Meta • Licensed to you as CC-BY 4.0 , or

    • Apache 2 ; at your option ! • Opinions expressed herein are those of the presenter and not necessarily those of the University or of Apereo.
  5. Git / GitHub sure is nice • Pull requests •

    Branching • Merging • SourceTree / gitk
  6. Overlays on Overlays • Apereo provides a Notifications Portlet •

    Wisc has an overlay on that (the MyUW Notifications Portlet) • Each tier has an overlay • Declaring version of the MyUW Notifications Portlet • Tier-specific special sauce, configuration, etc.
  7. Entity files in source control • Per tier • Commit

    triggers import; “cron” in prod • db-import , not initportal • i.e., import does not delete.
  8. Jenkins running Maven • Triggered on source code commit •

    Builds the changed thing • Builds the things that depend on the changed thing • Deploys the built things, or stages them for scheduled deployment
  9. Nexus • Institutional Maven repository • Institutional cache of Central

    • Artifact repository management essential to a Maven-driven-Maven build strategy.
  10. MyUW Scrum • 2 Product owners • 3+ current Scrum

    Team members (Tim, Tim, Andrew), + student employee, + web developer • 2 week iterations
  11. What does done mean? • Reviewed? • Refactored? • Performant?

    • Usable? Accessible? • Proposed upstream? • Merged upstream? • Tested? • Test cases? • Automated tests? • Unit? • Functional? • Integration?
  12. Technical debt • Okay, it’s done for some meaning of

    done. • But it’s not done for some other meaning of done. • (Note that this is necessarily true no matter what you decide done means for you.) • So now you have technical debt. Maybe a little. Maybe a lot. • And eventually Codethulu awakes from its deep slumber and eats you and your team.
  13. #jasig-uportal • We hang out in IRC chat • (We

    also hang out in Wisconsin-internal WiscChat) • IRC chat once again logged, now to echelog : • echelog.com/logs/browse/jasig-uportal/
  14. Relating MyUW to uPortal • MyUW is a fork of

    uPortal • Merge Jasig/uPortal/master to MyUW/uPortal/uw- master as needed and at Jasig tags • MUM changes also usually go into Jasig/uPortal/ master, and then need merged / conflict-resolved back into uw-master • Even with git magic, this is kind of painful and friction-adding
  15. When to pull request? • Code reviews are good. Pull

    requests are good. • How many to do where? • Pull requests within the team are good. • Pull requests in the context of the open source project are good.
  16. Open, public repos • Environment-specific overlays are private • Non-environment-specific

    MUM stuff is mostly public • MUM uPortal repo being an exception (?) • Public repos make communication and collaboration easier
  17. Using Unicon support • Validation of CONFIG permission issue and

    fix • Advice about avoiding layout corruption • Nailing that Tomcat session management bug
  18. Recent tweaks • Clarify “rule of two” for pull request

    merging • Introduce a Product Owner JIRA project / queue
  19. Ideas to reduce friction • Engineer the adoption process •

    Dependencies and overlays (?) rather than forking • Engineer the uPortal source and build • Smaller, cohesive components with well-defined relationships via APIs • Automation, frequency for releases • Monthly patch release and yearly feature release?
  20. Enabling web developers • Switch to natural template technologies? •

    Reduce reliance on XSLT? • Capture HTML snapshots for web developer to work with? • Move towards a JSON / rich JavaScript UI architecture (AngularJS?)
  21. Take home points • Automate • Be mindful of process

    • Frantic email is not a process • Work in and with Apereo and open source communities to the advantage of your project • Inspect and adapt
  22. Remember what’s important Getting there is half the fun when

    you are mindful about how you are getting there.
  23. Photo acknowledgments • Scrum : https://www.flickr.com/photos/cdm/ 2336025560 • Steak :

    https://www.flickr.com/photos/jhpope/ 253041862 • Migration : https://www.flickr.com/photos/usfwshq/ 6777513684 • To do : https://www.flickr.com/photos/courtneyrian/ 5750960959