-
Notifications
You must be signed in to change notification settings - Fork 885
Smack Jobs
This is a list of open unpaid Jobs for Smack, i.e. work that could/should be done. If you are interested in helping open source development by taking one of these Jobs then please contact us in #smack (Freenode, IRC) before you start coding. It's important that we discuss the road-map and design of your project. Jobs tagged with "GSOC" are potential Google Summer of Code Projects (of course, only if we are accepted).
Difficulty: medium-hard Tags: Java, Vcard, GSOC
See https://igniterealtime.org/issues/browse/SMACK-685 and http://xmpp.org/extensions/xep-0292.html
Difficulty: hard Tags: Java, BOSH, GSOC
Smack's BOSH code and the jBOSH library were written ~2009. Development stopped two years later. The code was not written with Android in mind. The aSmack project needed to apply heavy patches to Smack's BOSH code and jBOSH in order to get it running on Android. All patches have now been included into Smack and jBOSH.
The code still has some rough edges. For example jBOSH's unit test's are non-deterministic, they fail occasionally.
Difficulty: easy-medium Tags: javadoc
Java8's javadoc doclint feature produces some warnings when run on Smack. Those should get fixed.
Difficulty: medium Tags: TLS, Java
Add support for https://datatracker.ietf.org/doc/draft-ietf-xmpp-posh/. See https://igniterealtime.org/issues/browse/SMACK-640
Difficulty: hard Tags: Java, PubSub, GSOC
Currently PubSub and PEP don't share any code, as they were written indepently from each other. But since PEP is a subset of PubSub, it should use Smack's PubSub API (SMACK-416).
Difficulty: easy-medium Tags: Java, XMPP Server, Integration Test
Smack has had integration tests since the beginning. Sadly the state of the integration tests deteriorated over the time, to a point where they had to be "disabled". Their code still exists in the integration-test
folders, but is likely not compatible with Smack 4.
Your task is to move legacy integration tests from the integration-test
folders, to the new shiny integration test framework: smack-integration-test. See also documentation/developer/integrationtest.md
.
Difficulty: medium Tags: Java, XMPP Server, Integration Test
Create an embedded test environment. For example Apache Camel uses Vysper, a Java based XMPP server, for their integration tests. But other solutions are conceivable. Prosody is an interesting candidate, because it does support Stream Management (XEP-198). The embedded test environment should pull, i.e. download, all requirement components and set them up in an throw away environment, so that it can get deleted after the integration tests were run.
Difficulty: medium Tags: Java, Design Patterns
Transform XMPP classes to follow https://github.com/igniterealtime/Smack/blob/master/documentation/developer/stanzas.md#general-rules
Difficulty: medium Tags: Java, Unit Test
There are some unit test (mostly in the file transfer related unit test code), that are not sound synchronized (e.g. they use Thread.sleep(X) to "wait" for something to happen). This causes those tests to randomly fail, e.g. when Travis-CI is busy. Find and fix those tests.
Difficulty: medium Tags: Java, Unit Test
Increase the unit test coverage as reported by gradle jacocoRootReport
in build/reports/jacoco
by writing good (!) unit tests.
Difficulty: easy Tags: Gradle
Gradle should check if a changelog entry exists for release builds. This should help prevent releases without a changelog entry. Furthermore release builds should not have dependencies on alpha, beta, snapshot, etc. artifacts. Maybe Gradle's Component Selection Rules can be used for that.
Difficulty: medium Tags: Java
The SmackDebugger interface consists of many unused legacy methods, that should get removed. The overall process how a debugger is hooked into a XMPP connection could be possible simplified.
Difficulty: easy Tags: Java
Difficulty: medium Tags: Java, Android
Smack 4.1 runs native on Android. Create a sample Android App to show how Smack can be used on Android.
Difficulty: medium Tags: Java, Android
libidn provides XMPP profile for stringprep and nameprep.
But sadly its usage of Arrays.binarySearch()
make it not suitable for Android API < 9.
Provide a XMPP focused alternative to libidn that runs on Android 8 (Smacks minimal Android API level).
Difficulty: hard Tags: Java, Non-blocking IO, Android, GSOC
This job is already assigned to a GSOC student
Since 2009 there exists a patchset which adds serverless messaging (link-local) support to Smack. Unfortunately the patch design is no longer compatible with recent Smack versions and thorough examination has shown that it needs major rewriting in order to fulfil the requirements for inclusion in the 'master' branch. Also Smack's abstraction regarding Connection code, in particular regarding parsing, is not (yet) perfect. It is possible that some code from smack-tcp could be useful for smack-serverless too. And since serverless messaging means that every participant needs to establish a (TCP) connection to every other entity it wishes to communicate with, smack-serverless should make use of java.nio. Or do you want to create thread for every connection? :)
Serverless Messaging is also a often request feature from users using Smack on Android, so the code has to be Android compatible.
There is already some work done regarding serverless messaging: https://github.com/igniterealtime/Smack/pull/25
Goals include:
- Use
java.nio
to manage the connections -
XMPPConnection
should work as defined in the interface contract -
XMPPLLConnection
should manage a set ofXMPPLLStreams
- Multiple
XMPPLLConnection
s should be supported (on the same host) - Create smack-serverless with an interface for the multi-cast DNS service
- Create smack-serverless-jmdns, using the latest JmDNS
- Create smack-serverless-android, using Android's NsdManager, beware of https://code.google.com/p/android/issues/detail?id=35810
Further resources:
Have a look at the open issues found in Smack's Bug Tracker JIRA: https://igniterealtime.org/issues/secure/IssueNavigator.jspa?reset=true&mode=hide&jqlQuery=project+%3D+SMACK+AND+resolution+%3D+Unresolved+ORDER+BY+priority+DESC