Difference between revisions of "Psi Plugins Soc 2006"

Jump to navigation Jump to search
1,569 bytes added ,  09:50, 17 July 2006
First update in weeks, oops
m (→‎Week 4: added header to motivate me to do more this week to fill it ;))
(First update in weeks, oops)
(One intermediate revision by the same user not shown)
Line 33: Line 33:
[[Image:Psi-snarl-plugin-1.png]]
[[Image:Psi-snarl-plugin-1.png]]


===Week 4 (15st-21th June)===
===Week 4,5,6,7 (15th June-12th July)===
Unfortunately, for this period, I lost my wiki password and so couldn't update the page. I've now (week 8) recovered it so, from memory, in these weeks I: Tidied up a lot of the plugin interface. Set up a system for sending arbitrary stanzas from plugins. Worked some more on the Python plugin, such that it now finds and loads scripts, allowing them to register themselves and then calls the appropriate methods when a message stanza is received.
 
===Week 8 (13th-20th July)===
This week I allowed the plugins to access the Psi options tree, did a bit more work on the api and then wrote two games plugins. I took the old (Qt3) Tic Tac Toe example from Trolltech, ported it to Qt4 and added multiplayer support, wrapping it in a plugin interface and also found a Qt3 chess app, wrapped it in a plugin and rewrote the socket code so that when it thinks it writes to a socket, it really passes strings to the plugin to wrap in <message>s and send along the xmpp stream. Neither game's perfect (and it seems like the checkmate checking in the chess game I used might be dodgy) but they provide a nice example of the plugin interface taking stanzas, processing them and (upon user input) replying to them. Of course, there's no hooks for adding to the Psi GUI yet, so you have to start a chess game by saying 'chess start' to a contact but that's pretty much next on my TODO.
 


==Tasks==
==Tasks==
Line 50: Line 55:
|-
|-
| Save enable/disable settings
| Save enable/disable settings
| 0%
| Yes
|-
|-
| Allow plugin disabling
| Allow plugin disabling
| 50%
| Yes
|-
|-
| Work around OSX not allowing plugin unloading
| Work around OSX not allowing plugin unloading
Line 65: Line 70:
|-
|-
| Write a soft-coded options structure, such that we don't need to know what options we have in advance (and also allow us to remember options we don't know about, such as when running without plugins)
| Write a soft-coded options structure, such that we don't need to know what options we have in advance (and also allow us to remember options we don't know about, such as when running without plugins)
| 75%
| 85%
|-
|-
| Allow plugins to store their options in PluginManager (options[], with an options.addComment())
| Allow plugins to store their options in PluginManager (options[], with an options.addComment())
Line 74: Line 79:
|-
|-
| Define preliminary interface alerting plugins to messages, presence, iq
| Define preliminary interface alerting plugins to messages, presence, iq
| 5%
| 25%
|-
|-
| Define an interface allowing plugins to modify or discard completely incoming and outgoing stanzas
| Define an interface allowing plugins to modify or discard completely incoming and outgoing stanzas
| 0%
| 20%
|-
|-
| Allow plugins to register a namespace to listen to (or many namespaces)
| Allow plugins to register a namespace to listen to (or many namespaces)
Line 93: Line 98:
|-
|-
| Create a simple plugin which loads the Python interpreter (Hello World)
| Create a simple plugin which loads the Python interpreter (Hello World)
| 50%
| 100%
|-
|-
| Develop a framework for locating scripts for Psi
| Develop a framework for locating scripts for Psi
| 0%
| 80%
|-
|-
| Choose scripts to load/not
| Choose scripts to load/not
Line 102: Line 107:
|-
|-
| Develop a method for loading and executing scripts
| Develop a method for loading and executing scripts
| 0%
| 60%
|-
|-
| Write a glue layer from the plugin interface to Python
| Write a glue layer from the plugin interface to Python
| 0%
| 30%
|-
|-
| Write a set of GUI glues, such that scripts can create message boxes and the like
| Write a set of GUI glues, such that scripts can create message boxes and the like
Line 124: Line 129:
* URL watcher
* URL watcher
** As [http://missig.org/julian/blog/2006/05/29/idea-im-link-history/  Julian suggested], it would be nice for clients to keep a log of URLs sent to you which you can visit later, much like many IRC users enjoy.
** As [http://missig.org/julian/blog/2006/05/29/idea-im-link-history/  Julian suggested], it would be nice for clients to keep a log of URLs sent to you which you can visit later, much like many IRC users enjoy.
* Noughts and crosses
** I hadn't originally intended doing this, but it's a decent example of plugins extending protocol
* Chess
** Similarly


===Script Ideas===
===Script Ideas===
Line 148: Line 157:


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.
[[Category:Summer of Code 2006]]

Navigation menu