- Detailed plan agreed with mentors: See timetable in T92955: An enhanced cross-wiki watchlist as an OAuth tool
- Phabricator project created: T97727
- Meetings with mentors started: see below
- Bonding period report published: see below
Meetings with mentors
30 April Google Hangout
- rename to crosswatch
- get phab and gerrit project
- admin rights on test.wikipedia.org
- discussion about the use of websockets, document backend API
- get it to a functional state, then talk to community liaisons for input
- meetings in future mainly in IRC
Bonding period report
Work done
- T97898 setup crosswatch on tools, renamed from watchr to crosswatch, migrated to gerrit
- Refactored and improved frontend code (commit)
- cleaner code, moved logic from controller to a service
- moved watchlist entry html into a directive
- added coloring for the byte change count for a edit
- experimented with the design, working version now which can be successively improved
- display icons for each project familiy (wikipedia/wiktionary/commons/…)
- Refactored and improved backend code T97900 (commit)
- splitted code into proper modules and functions, bugfixes
- created a basic module ( backend/celery/api.py) for the handling of the MediaWiki API which will be used, as no other library was suitable/required more changes than writing a own
- added support for minor/bot/new page edit flags
- patched kombu library (network backend for celery) so that all redis keys used can be prefixed for isolation & security (commit)
- set up flower as celery monitoring tool
- added support to query watchlist for all projects where the user has made at least one edit. (commit)
- added a README.md documenting how to install/change code and deploy
- created meta:crosswatch as main non-Phabricator point of documentation and community feedback/engagement
Lessons learnt
- John Papa's Angular Style Guide is a nice coding style guide for AngularJS and is good in telling how things should be done in AngularJS and why in this way.
- flower as celery monitoring tool is nice but sadly doesn't store information like the average number of waiting tasks in a queue
- looked into on how to use the replica databases and MariaDB/MySQL in general
- the wikimedia universe is large – the number of active projects is huge and many active users have at least one edit in >50 projects
- crosswatch has to query each project individually, to reduce too much load on mediawiki servers there should be some caching strategy
- looked deeper into i18n support and how translatewiki works
- integration with translatewiki is feasible, angular-translate uses a simple json format which translatewiki supports
- adaptation for left-to-right languages needed, angular-translate doesn't offer special support.
- iconography is hard
- it would be nice to have an icon for each language, that makes it easier to visually differentiate changes in different projects – sadly such sets don't exist
- currently as a test country flags for languages as an option, but of course languages != countries and language codes != country codes
- different coloring of the label might be an option, but it would be randomized each time and might not look good
- learned how to use gerrit and git review
Problems faced and solutions found
- looked trough the source code of all the mediawiki python client libraries, it turned out writing a own minimal mediawiki client library is faster and quite easy than patching those to use OAuth and wrap the watchlist API etc.
- I've looked in detail into celery and it's internals as I noticed that it's messaging library kombu uses some fixed redis keys for worker management communication.
- for isolation and security reasons that keys should be prefixed by a random string, a one line patch made the string customizable
- the patch could be submitted to the main kombu library, but the current version in their git is broken for me and there is rationale for them not to provide that option
- I learned how to create a proper python package and how to write the setup.py – which caused a bit of problems for me (as the folder structure is not the same as for a standard python package and the use of a patched kombu version), which I was able to solve
Any changes to the original plan
- renamed to crosswatch
- change prioritization of goals and refined minimum viable product
Minimum Viable Product
See T99930: Minimum viable product [tracking].
Communication Plan
- Communicate with mentors over IRC
- Weekly progress reports on T100166: Weekly logs for project "An enhanced cross-wiki watchlist as an OAuth tool"
- Phabricator tasks for everything that's in progress and planned
- Patch submission through gerrit so that it gets linked in the appropriate phab task
- meta:crosswatch as main non-Phabricator point of documentation and community feedback/engagement