Difference between revisions of "Psi Plugins Soc 2006"

Jump to navigation Jump to search
2,099 bytes added ,  12:47, 25 May 2006
Tasks
(Piccy of the options dialog work)
(Tasks)
Line 13: Line 13:
I've implemented some (very basic and initial) code to locate installed plugins and to list them, together with their names (the plugins define their own names) in a new options dialog pane.
I've implemented some (very basic and initial) code to locate installed plugins and to list them, together with their names (the plugins define their own names) in a new options dialog pane.


===The original proposal===
==Tasks==
This is as much a reference for myself as it is for anyone else; not all of the following tasks are necessary for the success of this project.
===Plugins===
{|
|+ Plugin Task List and progress
|-
! Task !! Completion
|-
| Locate plugins
| Yes
|-
| Load plugins and query for name
| Yes
|-
| Save enable/disable settings
| 0%
|-
| Allow plugin disabling
| 0%
|-
| Work around OSX not allowing plugin unloading
| 0%
|-
| Use DirWatch to find new plugins
| 0%
|-
| Display plugin's own options in OptionDlg
| 20%
|-
| Allow plugins to store their options in PluginManager
| 0%
|-
| Devise method for saving plugin options
| 0%
|-
| Allow plugins to define new Caps
| 0%
|-
| Define preliminary interface alerting plugins to messages, presence, iq
| 5%
|-
| Define an interface allowing plugins to modify or discard completely incoming and outgoing stanzas
| 0%
|-
| Allow the plugins to modify the GUI in some way (adding options to the right-click menu on the roster, for example).
| 0%
|}
 
===Python Scripting===
{|
|+ Task progress for the scripting interface
|-
!  Task !! Completion
|-
| Create a simple plugin which loads the Python interpreter (Hello World)
| 0%
|-
| Develop a framework for locating scripts for Psi
| 0%
|-
| Choose scripts to load/not
| 0%
|-
| Develop a method for loading and executing scripts
| 0%
|-
| Write a glue layer from the plugin interface to Python
| 0%
|-
| Write a set of GUI glues, such that scripts can create message boxes and the like
| 0%
|}
 
===Plugin Ideas===
This is just a list of plugins I might implement to showcase the interface if I have time.
 
* Null Plugin
** This is just to demo the plugin loading and does nothing (Complete)
* Hello World
** A simple plugin to pop up a "Hello World" dialogue at inopportune moments
* Console Dump
** Dump all incoming messages to console
* Python Scripting Plugin
** This one's pretty crucial to the project
 
===Script Ideas===
* Console Dump
** Just as with the plugin, dump messages to the console
* Google New Mail
** Google Talk sends new mail stanzas, notify the user when they have new mail
 
==The original proposal==
Plugin and scripting support for rapid protocol prototyping in Psi
Plugin and scripting support for rapid protocol prototyping in Psi


Project
===Project===
----
Psi is a featureful, cross-platform Jabber client written in C++ using the Qt toolkit. Psi's traditional development cycle has focused on producing a stable, responsive client, and many users choose it for this reason. This thorough approach, however, coupled with the compiled nature of C++/Qt makes it difficult for users to customise their client. A C++/Qt plugin interface would allow users to share modifications and customisations without a need to either patch their builds, or to submit to the patch review process. Previous investigation has resulted in the beginnings of a plugin loader, but no plugin interface. The first section of this project proposal is to merge the previous plugin work into the current mainline and to write an abstraction interface, such that plugins need not access Psi's internals. It is expected that the first half of the project time would be spent on this, with priority on protocol abstraction in the interface rather than gui modification. If this work were to be completed early, there is the possibility to work on a configuration interface using Jabber data forms.
Psi is a featureful, cross-platform Jabber client written in C++ using the Qt toolkit. Psi's traditional development cycle has focused on producing a stable, responsive client, and many users choose it for this reason. This thorough approach, however, coupled with the compiled nature of C++/Qt makes it difficult for users to customise their client. A C++/Qt plugin interface would allow users to share modifications and customisations without a need to either patch their builds, or to submit to the patch review process. Previous investigation has resulted in the beginnings of a plugin loader, but no plugin interface. The first section of this project proposal is to merge the previous plugin work into the current mainline and to write an abstraction interface, such that plugins need not access Psi's internals. It is expected that the first half of the project time would be spent on this, with priority on protocol abstraction in the interface rather than gui modification. If this work were to be completed early, there is the possibility to work on a configuration interface using Jabber data forms.


Line 25: Line 115:




Me
===Me===
----
 
I'm a 24 year old PhD Student studying Multi-objective optimisation techniques using simulated annealing algorithms in the Computer Science department of Exeter University (UK). I hold a BSc(Hons) degree in Computer Science from the University of Exeter, with first class honours. I received 'best results' awards in both my first and second years of my degree, and a first class grade my final-year project, which studied parallel implementations of multi-objective genetic algorithms with the focus on increased autonomy of nodes (allowing each machine to optimise a subset of the search space), written in C++.  
I'm a 24 year old PhD Student studying Multi-objective optimisation techniques using simulated annealing algorithms in the Computer Science department of Exeter University (UK). I hold a BSc(Hons) degree in Computer Science from the University of Exeter, with first class honours. I received 'best results' awards in both my first and second years of my degree, and a first class grade my final-year project, which studied parallel implementations of multi-objective genetic algorithms with the focus on increased autonomy of nodes (allowing each machine to optimise a subset of the search space), written in C++.  
Degree modules relevant to a Summer of Code placement include a study of HCI, object-oriented programming in Java, GUI design, compiler creation, other languages such as LISP and assembly, system design, formal modelling and logic.  
Degree modules relevant to a Summer of Code placement include a study of HCI, object-oriented programming in Java, GUI design, compiler creation, other languages such as LISP and assembly, system design, formal modelling and logic.  


I have previously been a developer for two OSS projects, a psuedo-AI chatbot script (http://bmotion.sf.net) and the Psi Jabber client (http://psi-im.org). I've been contributing to Psi for approximately four years and have more recently been managing the project; as such I have a reasonable understanding of the issues involved in this project (and the Psi codebase) and am confident a solution can be produced in the timeframe. I am currently at the write-up stage of my thesis, aiming to be splitting my time between that and SoC for the start of June and thereafter dedicating it to SoC. This is the only SoC project I have applied for and I've not previously participated in the program.
I have previously been a developer for two OSS projects, a psuedo-AI chatbot script (http://bmotion.sf.net) and the Psi Jabber client (http://psi-im.org). I've been contributing to Psi for approximately four years and have more recently been managing the project; as such I have a reasonable understanding of the issues involved in this project (and the Psi codebase) and am confident a solution can be produced in the timeframe. I am currently at the write-up stage of my thesis, aiming to be splitting my time between that and SoC for the start of June and thereafter dedicating it to SoC. This is the only SoC project I have applied for and I've not previously participated in the program.

Navigation menu