Skip to content

Commit

Permalink
Version Bump, Contributors update
Browse files Browse the repository at this point in the history
  • Loading branch information
Havvy committed Dec 12, 2014
1 parent 128b8e2 commit 3bd7061
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 42 deletions.
101 changes: 78 additions & 23 deletions contributors.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,101 @@
## Contributions ##

There's a lot of work that can be done.
If you want to contribute, you are more than welcome to do so.

From most important to least important:
Here are a list of some of the things that would be really nice to see
contributions for, though you may also contribute in other ways.

### Message Extensions ###

There's a lot of numerics and commands. Please add extensions, even partially complete
extensions, for any numerics you deal with.
There's a lot of numerics and commands. Please add extensions, even partially
complete extensions, for any numerics you want to deal with. Pull requests for
these can even be taken without an accompanying test, though those with
tests are even better.

### IrcOutputSocket Commands ###

Tennu is missing most of the commands from IRC. If you want to add them, please
Tennu is missing many commands from IRC. If you want to add them, please
do so. Just make sure to also add the method wrapper to the client class.

### Tests ###
Another feature that is missing is the returning of a Promise when doing
things. For instance, Client.join(chan) should return a Promise that
succeeds when the channel is joined with the topic, names list, and
channel name in the success object with an error case with the numeric
that gives the reason for failure.

Either help port tests to Mocha, or add new tests.
### Tests ###

(If you do port tests to Mocha, add Mocha to the devDependencies and place them in /test)
Not everything is tested. If you add a feature, or change something, please
attach to your pull request some tests that show your code is working. Or
if you find a bug, a test case that shows the bug in action would be great.

### Built In Modules ###

Please feel free to write the Server, User, and/or Channel modules.
Please feel free to write and extend the Server, User, and/or Channel modules.

They should really be the meat of the "IRC" framework, but like most
parts of this framework that are IRC specific, they have been neglected. :(

## Building ##

Tennu is compiled from Sweet.js to ECMAScript. Sweet.js is a superset of
ECMAScript 5 that adds macros. If you don't want to use macros, just write
vanilla JavaScript.

All the source files are located under `/src`.

Just write `npm run build` and the project will be built, usually within
five seconds.

Note that `npm test` will first rebuild the project before running the
tests, so if you are testing, there's no need to run build.

## On Versioning ##

Tennu follows SemVer like all npm packages should.

While the version is greater than 1.0.0, I, Havvy, don't actually consider
this feature complete, but I'm not working on it as much, and it is stable.

The version number shouldn't really matter that much. Documentation, other
than the changelog, will always focus on the latest version. Should a
major rewrite of Tennu happen, it'll most probably be in another language
(such as Elixir).

Thus, when making a backards incompatible change, if it's possible to
deprecate, deprecate the functionality instead, and then it can be removed
two major releases later. If it's not possible to deprecate, the change
may be put on hold.

That said, do *not* change the version number yourself. Just give a
heads up as to what you are doing so the version can be changed properly.

## Format & Style ##

Indent with four spaces. Not two spaces. Not tabs.

### 1.0.0 Release Checklist ###
Define functions (both expressions and statements) like this:

Getting closer to 1.0.0 would be nice.
```javascript
function fnName (arg, list) {
// body
}
```

### ChunkedIrcMessageHandler ###
Spaces go before and afer binary operators. For example: `2 + 2`, `(4 + 3) * 2`

Listens to the IrcMessageHandler, it chunks together list-like replies such
as whois and isupport numerics. For messages that aren't chunked, just pass
them through normally.
Do not use `++` and `--` operators. Use `+= 1` and `-= 1` instead. If
this means adding another statement, so be it.

Not a goal for 1.0.0 though.
Tennu is built using Sweet.js, so we have access to macros. Where appropriate,
you may add your own inline macros at the top of a file. You may also use
macro packages for ES6 syntactic sugar, just one hasn't been added yet.
Likewise, you can add in a macro package to remove parenthesis around block
predicates. That just hasn't been added yet.

## Format ##
## Documentation ##

* Four space indents
* Favor factories over constuctors. Where you do use a constructor, make
sure it works without being called in a `new` context.
* `function fnName (arg, list) {`
* Spaces around binary operators. Ex: `2 + 2`, `(4 + 3) * 2`.
* No harmony features.
[https://tennu.github.io](Tennu's documentation) should be updated as
necessary. Send a PR to the documentation repo, and it'll be accepted
without question most of the time. There's also no real need to be clean
about your commits to the documentation repo.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "tennu",
"version": "0.9.7",
"version": "1.0.0",
"description": "Tennu - Modular IRC Bot Framework for Node.js",
"maintainers": [
{
Expand Down
35 changes: 17 additions & 18 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ myClient.use(['admin', 'last-seen']);
myClient.connect();
```

See [https://tennu.github.io/](tennu.github.io) for the full documentation.

----------

## Configuration ##
Expand Down Expand Up @@ -84,7 +86,7 @@ These functions will always be called as constructors (with `new`).

### Logging ###

Of these, the only one you will probably care about is Logger. The object
The only one you will probably care about is Logger. The object
returned by the Logger function must implement the following methods:

`debug, info, notice, warn, error, crit, alert, emerg`
Expand All @@ -94,11 +96,19 @@ emitters may use crit through emerg.

-------------

## Version ##

Tennu follows SemVer. Tennu will have breaking changes in the future, and
many updates will be breaking updates, so expect to see the major version
go up to pretty high numbers. The alternative was to have verisons 0.16.x
at some point, and that's just silly. Tennu is usable today, might as well
call it post-1.0, even if it's not 'feature complete'.

## Event Handling ##

Note: Tennu uses a custom event handler. Listeners are placed at the end of the event queue,
insead of happening right away. Errors are currently logged to console, but otherwise
swallowed.
Note: Tennu uses a custom event handler. Listeners are placed at the end of the
node event queue (with setImmediate), insead of happening in the same turn.
Errors are currently logged to console, but otherwise swallowed.

### Respond Functionality ###

Expand Down Expand Up @@ -266,15 +276,13 @@ If you find yourself using raw(), please file an issue.

### rawf(format, args...) ###

[0.7.1]

As raw(message), but the arguments are passed through util.format() first.

--------

## Plugin System ##

Tennu has its own plugin system.
Tennu has its own (optional to use) plugin system.
You can read about it at https://github.com/havvy/tennu-plugins/.

You may access the plugin system's methods via the Client.plugins property
Expand All @@ -299,39 +307,30 @@ Only the help plugin is currently fully implemented.

#### help ####

[0.6.0+]

Sets the command `!help`.
Handles the two commands "!commands" and "!help".

See [Help Module Documentation](https://tennu.github.io/plugins/help).

[0.8.2+]

If you don't want this functionality, set `disable-help` to `true` in your configuration object.

#### channels ####

Unimplemented.
Unimplemented. Currently being worked on by Dan_Ugore.

#### users ####

[0.7.3+]

This plugin has a single method exported: isIdentifedAs(nickname, nickname_identified, callback)

See [User Module Documentation](https://tennu.github.io/plugins/user).

#### server ####

[0.9.x+]

Information about the server. For now, the only thing this plugin offers is a
capabilities map listing the information from the 005 raw numeric.

See [Server Plugin Documentation](https://tennu.github.io/plugins/server).

```javascript

var server = tennu.use("server");
console.log(util.inspect(server.capabilities));
```
Expand Down

0 comments on commit 3bd7061

Please sign in to comment.