NEERC Chat
This task is used to track progress on Kaidan adaptation for the programming contest management tool use case.
Introduction
ICPC (The International Collegiate Programming Contest) is an algorithmic programming contest for college students.
NEERC (Northern Eurasia Programming Contest) is now the ICPC finals for Northern Eurasia. It is held annually at ITMO University, the lovely place where I study.
NEERC Chat is an extended XMPP client that is used by the Technical Committee and volunteers to manage NEERC and other programming contests.
Motivation
- The currently used chat was originally developed in 2009 in Java using the Smack XMPP library. It has been maintained since then but looks quite dated.
- As smartphones became more popular, the second client was developed for Android. It shares some base code but is still another codebase to maintain.
- Besides, half of the volunteers have iOS devices and cannot use either of these clients.
- From the Kaidan perspective, this can potentially open the project to new contributors with a strong academic background.
Due to its cross-platform nature, Kaidan could fit nicely into this use case.
Original source code
NEERC Chat: https://github.com/NEERC/chat
NEERC Chat for Android: https://github.com/NEERC/chat-android
An attempt to make a screenshot locally with a localhost XMPP server:
Architecture
NEERC Chat consists of:
- An XMPP backend based on Smack library with MUC and file transfer support
- Custom extensions for the contest timer (integrated with PCMS2 system) and task management (various sorts of tasks for hall volunteers based on yes-no / progress / response statuses)
- Custom plugins for the Openfire XMPP server that implement the server side of these features
- 2 user interfaces
My goal is to use implement the custom features as plugins to avoid maintaining a fork of Kaidan (or at least do with a minimal set of patches).
TODO
-
Make Kaidan build everywhere (win32, linux, macos, android, ios) -
Add multi-user chat support (#72) -
Add chat history support (#267 (closed)) -
Add background service for mobile platforms -
UI changes -
File display -
Notifications (where missing) -
Chat user list and events
-
-
NEERC Chat extensions