Feedback means are #guppy at freenode, and the feedback form on the website.
=== Install ===
For installation instructions, please see the INSTALL file.
After downloading guppy, the directory structure will be similar to something like this:
== Get involved ==
* guppy
* irc.py
* plugins/
* README
* TODO
We are actively looking for people who can contribute to the following activities:
The installer script will prompt you with a list of plugins. Choose carefully, the default is minimal! A description of each plugin can be found at the Features page.
Debugging and patching existing issues (TODO in the repo);
Writing tests ("unit tests"?, I know Perl does them);
Reviewing the code for style and performance;
Writing documentation;
Packaging guppy for different Operating Systems and distributions;
Testing each release;
Using guppy and making extensive use of the feedback to aim to reliable, intuitive work of the software.
Run the 'guppy' executable once to launch the installer script.
It is easy to see that not all things require developer knowledge.
After the configuration, the binary will exit, and you will need to start it again in screen or tmux with no arguments; guppy does not fork into the background.
There is a current most noticeable need but lack of effort in packaging.
In short,
If you are interested in any of those activities, see you on IRC or use the Mailform link at the left.
1) cd guppy
2) ./guppy
3) run guppy in background.
Please invite all your friends who could help.
guppy works with Python 3 only.
Thanks!
=== Notes ===
1) For debugging, to make a unix OS user lose internet connection, run
# iptables -A OUTPUT -o eth0 -m owner --uid-owner 1002 -j DROP
* Don't mix tabs and spaces in one file. It is currently recommended to use 4 spaces for indentation (discussion is welcome as long as we agree to convert existing files to a new style).
This page is a git cheatsheet. git is recommended for contributing to guppy, but is not required.
(As always, manpages are the grand superior resource.)
====== Starting ======
You can create an own git project inside your home directory using:
mkdir project.git
cd project.git
git init --bare
The above command creates a so called "bare" repository in the project.git directory (it is just the contents of the "''.git''" directory, without any files checked out around it).
Now you can "push" your local git repository to the remote machine using:
Please note, that the ''USERNAME'' should be replaced with your username on the corresponding server. In the future, you can easily push and pull all changes in this projects using git pull (to fetch the changes) or git push (to publish the changes in your remote repository).
====== Undoing commits ======
To undo commits, you need to set the branch head to an older commit. All next commits will be gone.
1) Find the sha of the last commit you want to keep. Do a
$ git log
Each commit will be visible like this:
commit 1e3487c2fdfd1e8299744a1e7fae4ca3867bc9b9
Author: thewookie <thewookie@gshellz.org>
Date: Tue Aug 2 10:26:38 2011 +0930
Test commit.
The "''1e3487c2fdfd1e8299744a1e7fae4ca3867bc9b9''" is the hash.
If you use --soft switch, files will be unchanged.
If you use --hard switch, files be changed to match the state after the indicated commit.
3) If you already pushed before, you will need to "force" the push to indicate that the loss of data (next commits) is intentional.
$ git push -f
====== Formatted patches ======
git can save the changes you made to a file so someone can apply them later. That's why you don't need commit access - all you need is to send patches, and have developers apply them. It is a feature of git as opposed to svn.
To get a patch for your changes, you need to follow some easy steps.
1) Commit latest changes.
Do a git add for the new files, and then ''git -m "added foo to bar"'', or simply ''git -am "added foo to bar"'' to have git add and remove files to the repo according to filesystem changes automatically.
2) Find a previous revision number.
Look at git log and find a previous revision number.
commit d45g67j8k9la2cvmz85a6858d58a5cb4c978b676
Author: thewookie <thewookie@gshellz.org>
Date: Mon Oct 3 21:35:41 2011 +0200
add foo to bar
commit e183890d8f78ce45y6u7d4f5g6hj7j8gf05a30ad
Author: thewookie <thewookie@gshellz.org>
Date: Sat Oct 1 23:09:44 2011 +0200
test
3) git format-patch
Do a ''git format-patch revision_#_here''. You will see a filename as output. This is the file which contains your new patch. Example,
* <del>Implement ''self.server.mynick'' to reflect nick changes, after which bot nick is not the conf nick.</del> Unneeded?
* Adding tags/categories for available commands could increase usability.
* Read [[http://tools.ietf.org/html/rfc1459|RFC1459]] and add any issues to 'current'.
* jabber suppport
* Rate-limit sent lines.
== Plugins ==
* An idea was/is to create a plugin for a multi-network relay for linking channels.
* Create a patch plugin. User says '!patchadd url comment' and bot adds the information to queue which bot owner can see using '!patchlist' or something like that. Possible shorter command names easier to remember and owner access to delete patches or change comments.
* Create an RSS or Atom feed plugin (whichever easier or both).
* Create a Trout plugin (similar as smack).
* Extend blockbot plugin
* to have several levels of reaction to flood.
* to kick people when there's too many (like +l but in the bot). Optional feature?
* to check for spam strings in part or quit messages.
* to kick or ban on join/part or join/quit floods.
* to enter emergency mode (+m for flood, +i for join flood, etc).
* Add ip tracking to auth plugin (warnings or blocks for people who have an account from an ip but try to authenticate as another user).
== Other ==
* a cronjob line
== External links ==
* [[http://thc.org/root/phun/unmaintain.html|Roedy Green. How To Write Unmaintainable Code - Ensure a job for life ;-)]]