Summer of Code 2014

= Participation = The XSF didn't apply for GSoC 2014. These were the ideas that were being considered.

Dates
Opening of GSoC applications: February 03 at 19:00 UTC

= Volunteering Project Orgs and Mentors =
 * Joachim lindborg coordination and mentoring IoT related projects
 * Steffen Larsen mentoring of client / server projects. (will write some projects proposals later!)
 * Yann Leboulanger mentoring Gajim related projects

= Project Ideas =

Android SDK

 * Summary: Create an Android SDK to help developers create XMPP and buddycloud apps
 * Difficulty: Medium-Difficult
 * Details: Android clients currently use aSmack. This get's them half way there. What's missing are extensions to aSmack that enable push notifications, message resumption, posting messages when the user is back online, retrieving archived messages. This project will help make XMPP more mobile friendly.
 * Skills
 * Strong Java skills
 * Familiarity with Android abstractions eg.: Content provider, observer pattern to receive push notifications, caching
 * Ability to work write good documentation
 * Git version control
 * Understanding of XMPP messaging, MAM, PubSub and Carbon XEPs
 * Apply Now!

Buddycloud to MUC gateway

 * Summary: One way or two way connection to MUC to or from Buddycloud channels.
 * Difficulty: Medium
 * Details: Buddycloud makes it easy to follow lots of channels and quickly reynchronise messages when coming back online (especially nice in a mobile environment). This project is to build a gateway so that users can access MUCs from their familiar Buddycloud interface or API. The gateway would take care of reconnecting and rejoining the right MUCs.
 * Skills
 * Programming skills in your language of choice.
 * Ability to work write good documentation
 * Git version control
 * Understanding of XMPP messaging, MAM, PubSub and MUC specs
 * Apply Now!

Smack to target Android and JavaSE
Smack, a FOSS XMPP client library in Java, should target Android and Java SE, therefore making aSmack obsolete. In order to achieve this goal, components of Smack need to be abstracted so that they can be impleted with Java SE APIs and their Android counterpart (if any). This abstraction also requires a modular build system.


 * Used Technologies: Java, Gradle, Android, XMPP, Groovy
 * Prerequisites: Knowledge of Java. Helpful: XMPP enthusiast and interest in designing elaborate build systems
 * Project Description: A GSOC 2014 project idea: Allow Smack to target Android and JavaSE

IoT connected devices and smart services projects
Internet of Things has become very big and the main game changer from early connected m2m systems is the very close connection between humans and Devices over Internet. To facilitate interoperability between these devices and towards user interactions. Standards are crucial there are several such ongoing standardisations some backed by big companies. XMPP is with its openness and the XSF to govern it's functionality is a perfect match to create a real open interoperable communication tool for IoT.

To help in this effort we need alot of support at various levels and therfore we turn to the GSoC to help us in creating the open tools for the Internet of Things

Add IoT support in chat klient of choice

 * Summary: Implement the IoT extensions into a client for example Psi Xabber.
 * Difficulty: Easy-Medium
 * Details: The IoT extensions ex XEP-0323 and XEP-0325 creates possibility to read and write fields to IoT devices. To be able to interact with devices a good interface is needed to edit control data and read sensor data to show diagrams of collected data and even to act as a provisioning client. With this tool any provider of a open IoT device would instantly have a uniform interface.
 * Skills
 * Ability to code in language of the client of choice
 * Ability to work with user interfaces
 * Git version control
 * Understanding of XMPP IoT extensions
 * Understanding of XMPP forms
 * Apply Now!

IoT smart logic

 * Summary: Use any XMPP library for ex SleekXMPP to create a logic environment to control devices and collect data.
 * Difficulty: Easy-Medium
 * Details: The IoT extensions ex XEP-0323 and XEP-0325 creates possibility to read and write fields to IoT devices. To let this create smart services there needs to be logic like IFTTT or IEC 61131 or other. The idea is to create such an environment and management of devices and fields to build smart logic and services in any IoT related domain. ´prefarably the logic should be visual Node red project
 * Skills
 * Understand creation of logic
 * Git version control
 * Understanding of XMPP IoT extensions
 * Understanding of SleekXMPP
 * Rule engines Ladder Logic or
 * Apply Now!

Add IoT support in a language package and hardware system

 * Summary: Implement the IoT extensions into a programming language of you choice and run it on sensing hardware.
 * Difficulty: Easy-Medium
 * Details: The IoT extensions ex XEP-0323 and XEP-0325 creates possibility to read and write fields to IoT devices. To leverage the thresholds for others to use these extensions implementations is needed in common programming languages and hardware platforms as an example the SleekXMPP python package has an implementation. Or perhaps you would like to integrate some other environment such as the Lego BrickPi into an open robotics platform
 * Skills
 * Ability to code in language of the client of choice
 * Git version control
 * Understanding of XMPP IoT extensions
 * Understanding of XMPP forms
 * Usage of XMPP in small devices such as raspberries, Cubieboard etc
 * Apply Now!

Multi-user Audio / Video conference
We already have jingle audio / video for one to one chat. Find the better way to attack this problem (several things exist, like MUJI, Jitsi Videobridge) and implement it in Gajim.

MAM
MAM is a way to store our logs server side, so we can share it in different locations.

End-to-End Encryption using TLS
Gajim already support E2E, GPG, OTR. The next protocol that should be implemented is chat over TLS. There is a proto-XEP and a IETF draft about that.