Data Form Designer Suite for XMPP

This book describes the Data Form Designer Suite for XMPP which is a project for Google Summer of Code.

Project Start: May 2007

Application

Applicant: Tobias Markmann (tmarkmann@googlemail.com)
Project: Data Form Designer Suite for XMPP

Synopsis:

I would like to work for the XMPP Standards Foundation which provides a protocol for open, extensible and secure instant messaging and a data exchange on a suite which provides tools for creation of data forms for polls and such things in an easy manner so any XMPP user is able to create a form and provide it to other users.

My Jabber community involvement:

I know Jabber for nearly 3 years because I looked for an alternative to other, more common IM services like ICQ, MSN, etc. I know of IRC but it is intended to be a conference based instant messaging purposes. All the other services, ICQ etc. are mainly for one to one usage. I support a lot users nearly every day in Jabber's community chat rooms. There I've met many nice and interesting people so far. I contributed some code to the c++ XMPP library gloox [1] and started a monitoring project for XMPP servers [4].
I'm a member of the XMPP Software Foundation for more than a half year and interested it discussing about the pros and cons of new proposed protocol enhancements to XMPP.

Deliverables:

At the end of Google Summer of Code 2007 the project will represent a suite consisting of two separate programs. A visual form designer to create forms plus a bot which provides the form and saves the result. The user will be able to create a form within some minutes and provide it to thousands of XMPP users or just some specified users. The form receivers enter their data and send the results back, which are stored into a file. This way you can easily create polls, surveys, etc. Including a documentation and tutorial, of course.

Project Details:

The visual form designer will be written in C++ using FLTK2 for fast and cross-platform development. The user can create a x:data form in a graphical user interface and save it to a file. It will support all x:data forms which are mentioned in XEP-0004 [2]. The suite will also support multi-paged forms which are mentioned in XEP-0050 [3], different forms which are send to the client one after the other. It's similar to the RAD tools of famous GUI toolkits. This part shouldn't take that long because I'm familiar with FLTK2 and it's usage. Its interface will be kept simple and compact.

The form provider bot will have a graphical and commandline interface so you can run it on desktop and server machines. It's written in C++, too. It reads the form file you created with the visual designer and logs into a XMPP network. There it will provide the form using Ad-hoc commands (XEP-0050) and, if this project proceeds faster than I expect, a fallback method using normal chat. It will also apply black- and whitelists you've set with the visual designer so only predefined users can use it and are saved in the XML form file. The result is saved either in XML or simple CSV.

Clients which claim to support XEP-0004 and XPE-0050 are for instance Tkabber [4] and Psi [5]. At the beginning of Summer of Code I'll evaluate their support for these XEPs.

The result will be a real world application of this suite replacing XSF's memberbot, a small tool which is used inside the XSF for voting purposes. For example whether a XSF applicant is accepted or not. At the moment this is done by simple text messages and a x:data based solution would fit the purpose very well.

Project's progress will be documented at http://ayena.de .

Bio:

I'm Tobias Markmann, nineteen years old, from Germany. At the moment, I'm attending the BBZ Dithmarschen for my higher education entrance qualification. There I'll graduate in 2008. I'm programming several programming languages including C++ and PHP. I recently started with PHP but do program C++ for more than 5 years. Last year I've started a web XMPP server monitor project in PHP and C++ which was actually planned as a Google Summer Of Code 2006 project. It's called jabbermonitor [4].

If you have questions or just want to talk to me feel free to do so via Jabber/XMPP at tobiasfar@jabber.org.

Thanks for your attention!

[1] http://camaya.net/gloox
[2] http://www.xmpp.org/extensions/xep-0004.html
[3] http://www.xmpp.org/extensions/xep-0050.html
[4] http://jabbermonitor.ayena.de

Parts of the Suite

The Data Form Designer Suite for XMPP consists of three parts:

  1. Data Form Designer with a GUI
  2. Desktop Forms Provider
  3. Server Forms Provider

Bug Reports

Data Form Designer

The Data Form Designer is a program with a platform independent GUI where the user can easily data forms with all kind of forms mentioned in XEP-0004. All parts of this project will run under Windows™, MacOS™ and any OS which uses X for GUI.

Used libraries:

Features:

  • creating forms
  • setting white- and blacklists
  • storing in an own XML format (based on XEP-0004)

Desktop Forms Provider

The Desktop Forms Provider is a small GUI application for desktops where you can load data forms and provide them to every user in the XMPP world.

Report

This page intends to show the small steps of this project within Google Summer of Code 2007. The timeline page just shows the planned progress. This one the real progress.

Week 1 (2007-05-28 - 2007-06-03)

Week 2 (2007-06-04 - 2007-06-10)

Week 3 (2007-06-11 - 2007-06-17)

Week 4 (2007-06-18 - 2007-06-24)

Week 5 (2007-06-25 - 2007-07-01)

Week 6 (2007-07-02 - 2007-07-08)

Week 7 (2007-07-09 - 2007-07-15)

Week 8 (2007-07-16 - 2007-07-22)

Week 9 (2007-07-23 - 2007-07-29)

Week 10 (2007-07-30 - 2007-08-05)

Week 11 (2007-08-06 - 2007-08-12)

Week 12 (2007-08-13 - 2007-08-19)

Sources

You can get the current trunk of the Data Form Designer Suite for XMPP at: svn://svn.ayena.de/dataformsuite/trunk

Tasks

General

TaskProgress
File Format Definition100%
XML Storage Backend100%
CSV Storage Backend100%

Data Form Designer

TaskProgress
Flexible Toolbar100%
Drag 'n' Move Widget100%
Main Window100%
Data Form Type Abstractions
Boolean Type Abstraction100%
Fixed Type Abstraction100%
Jid-Multi Type Abstraction100%
Jid-Single Type Abstraction100%
List-Multi Type Abstraction100%
List-Single Type Abstraction100%
Text-Multi Type Abstraction100%
Text-Private Type Abstraction100%
Text-Single Type Abstraction100%
Black- & Whitelist support100%

Data Form Provider

TaskProgress
Shutdown Command100%
Edit Settings Command100%
Form Upload100%
Form Manager Thread100%
CSV Storage Backend100%
Form Provider Command100%
Results Download Command100%

Timeline

Week 1 (2007-05-28 - 2007-06-03)

Week 2 (2007-06-04 - 2007-06-10)

Week 3 (2007-06-11 - 2007-06-17)

Week 4 (2007-06-18 - 2007-06-24)

Week 5 (2007-06-25 - 2007-07-01)

Week 6 (2007-07-02 - 2007-07-08)

Week 7 (2007-07-09 - 2007-07-15)

Week 8 (2007-07-16 - 2007-07-22)

Week 9 (2007-07-23 - 2007-07-29)

Week 10 (2007-07-30 - 2007-08-05)

Week 11 (2007-08-06 - 2007-08-12)

Week 12 (2007-08-13 - 2007-08-19)