At Flock 2015, we started talking about instituting periodic events where we would stop working on new features and bugfixes, and work instead on addressing technical debt. The discussion continued in November and we are scheduled to have our first one in the first week of January, Tuesday through Friday, January 5th-8th. Technical Debt Fighting Week!
The only rule is that there are no rules.
- No working on new features! That's for a different week.
- No working on bugfixes! Kinda. If we're on fire, okay. But we do this all the time anyways.
- Try to work on someone else's project instead of one that is "yours". This will spread the knowledge around the team a little more. Be on hand to answer questions from other debt fighters about code you're more familiar with.
General code smells we can address:
- duplicated code (fas caching, openid client login, ...)
- long methods and large classes (supybot-fedora, ...)
- contrived complexity (fedbadges, ...)
- half-implemented features (datagrepper, ...)
- no or poor documentation (releng scripts, ...)
- commented out code? or incorrect comments!
- no tests? or broken tests! (hotness, anitya, ...)
- does hacking on it feel good or bad? Let's document where and why.
Ideas of specific things to work on (add your ideas):
- streamline release process
- remove dead code
- pkgdb1 client
- remove copy/pasta openidclient from pkgdb2client and use python-fedora's
- remove copy/pasta openidclient from the-new-hotness and use python-fedora's
- prepare the ground for fas3 (careful not to get bogged down adding new features.. that's for a different week!)
- document how to interact with the openid login API (for mwclient and friends).
- flask apps (which ones)
- code de-duplication
- flask-fas-openid to merge with flask-openid
- ansible playbooks
- duplication in playbooks that can be folded into includes
- old syntax like action: or ways of doing multiline tasks we don't use anymore.
- tasks that can be made into roles or folded into existing roles.
- documentation added to playbooks/roles/etc
- old cloud modules, move to new 2.0 cloud management
- Process errors reported by email
- Fix bodhi-client regressions
- code de-duplication
- Fix/Expand rube testing
- Replace the shell script used to sync data from pkgdb to gitolite, recompile the gitolite conf, adjust the git repos by nice and clean python scripts
- Add a unit test suite to the-new-hotness.
Add links to things that got done here:
- Got it working again https://github.com/fedora-infra/rube/pull/23
- This involved a bunch of code changes to rube to adjust for new/changed services, but also some debugging of those services (we had to fix stg askbot and rebuild stg fedora-packages, among other things).
- Cleaned up a bunch of cases of using 'state=latest' instead of 'state=present'. This causes things to change when packages update and we prefer to update things manually as needed or in scheduled windows instead of just on every playbook run.
- Deleted old no longer used bodhi1 role: http://infrastructure.fedoraproject.org/cgit/ansible.git/commit/?id=f4f2523
- Deleted denyhosts role. We never used it on rhel7 hosts and don't need/want it on rhel6/fedora now either: http://infrastructure.fedoraproject.org/cgit/ansible.git/commit/?id=2f35b45
- Deleted old fedoauth role and playbook. We are using ipsilon now. http://infrastructure.fedoraproject.org/cgit/ansible.git/commit/?id=3257176
- Deleted failed pam_shield role: http://infrastructure.fedoraproject.org/cgit/ansible.git/commit/?id=0c181f1
- Deleted old drbackup task we no longer use: http://infrastructure.fedoraproject.org/cgit/ansible.git/commit/?id=e6eb5ea
- Removed old action: keyword in ansible tasks: http://infrastructure.fedoraproject.org/cgit/ansible.git/commit/?id=4cafc2b
- Built and deployed a new release of the fedmsg-atomic-composer to production https://github.com/fedora-infra/fedmsg-atomic-composer