GSoC 2015 Project Ideas

Version 2

    Smack: Add support for XMPP Serverless Messaging (XEP-174)


    Brief explanation:

    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 (basically from scratch) in

    order to fulfill the requirements for inclusion in the 'master' branch.

    The 2009er patch should not be used as a starting point for the new

    code. But analyzing its weaknesses and problems will sure help providing

    a better end-result.


    Furthermore Guardian Project's ChatSecure uses an old version of aSmack

    with the serverless messaging patch. They need support for XEP-174 in

    order to switch from the old aSmack version they currently use to an

    newer Smack version. This also means that the code has to be Android



    Expected results:

    Implement support for XEP-174

    ( in Smack, fulfilling the

    following requirements:

    - Design and implement an easy to use Smack API for serverless

    messaging, try re-use existing Smack code wherever possible

    - Add smack-serverlesss subproject with XMPPLLConnection

    - XMPPLLConnection should manage a set of XMPPLLStreams (not the case

    with the 2009 patch)

    - Multiple XMPPLLConnections should be supported on the same host (not

    the case with the 2009 patch)

    - Use java.nio to manage connections

    - Use JmDNS for multicast DNS (smack-serverless-jmdns)

    - Use NsdManager on Android for multicast DNS (smack-servless-android)


    Knowledge Prerequisite: Java, Android,


    Implementation Languages: Java


    Mentor: Florian Schmaus


    Contact details:

    - IRC: #smack (freenode)

    - MUC:

    - Smack Dev Forum:


    More Info about this project idea can be found at for-serverless-link-local-messaging-xep-174



    Title: Add support for DNSSEC to MiniDNS

    Software Project: MiniDNS

    Software URL:

    Software VCS URL:

    Software Description: A minimal DNS client library for Android and JVMs


    Brief explanation:

    MiniDNS is a DNS client library, which allows Android Apps and Java programs to resolve DNS resource records (RR). On Android, some resource records could not be resolved using only the Android API, for example DNS SRV RRs. Which was one of the main reasons MiniDNS was invented. Adding support for DNSSEC would be the logical next step to improve the security of the software using MiniDNS.



    The list of Android Apps und Java programs that would benefit from a DNSSEC enabled MiniDNS include:

    - OpenKeyChain: eys-in-dnssecdane

    - Smack based Android Apps *and* Java programs

    - Other Android App using MiniDNS, e.g. Conversations


    Since MiniDNS runs also on JavaSE runtimes, i.e. it is not an Anroid exclusive library, all applications using it would also become DNSSEC enabled.


    See also:


    Expected results:

    - Add the ability to perform recursive DNS lookups (required for DNSSEC)

    - Add DNSSEC support to MiniDNS

    - Use Java/Android crypto primitives where possible


    Knowledge Prerequisite: Java, DNS, DNSSEC

    Implementation Languages: Java

    Mentor: Florian Schmaus (Smack), Dominik Schürman (OpenKeychain)


    Contact details:

    - IRC: #smack (freenode)

    - MUC: