|
1 | 1 | ## Contributions ## |
2 | 2 |
|
3 | | -There's a lot of work that can be done. |
| 3 | +If you want to contribute, you are more than welcome to do so. |
4 | 4 |
|
5 | | -From most important to least important: |
| 5 | +Here are a list of some of the things that would be really nice to see |
| 6 | +contributions for, though you may also contribute in other ways. |
6 | 7 |
|
7 | 8 | ### Message Extensions ### |
8 | 9 |
|
9 | | -There's a lot of numerics and commands. Please add extensions, even partially complete |
10 | | -extensions, for any numerics you deal with. |
| 10 | +There's a lot of numerics and commands. Please add extensions, even partially |
| 11 | +complete extensions, for any numerics you want to deal with. Pull requests for |
| 12 | +these can even be taken without an accompanying test, though those with |
| 13 | +tests are even better. |
11 | 14 |
|
12 | 15 | ### IrcOutputSocket Commands ### |
13 | 16 |
|
14 | | -Tennu is missing most of the commands from IRC. If you want to add them, please |
| 17 | +Tennu is missing many commands from IRC. If you want to add them, please |
15 | 18 | do so. Just make sure to also add the method wrapper to the client class. |
16 | 19 |
|
17 | | -### Tests ### |
| 20 | +Another feature that is missing is the returning of a Promise when doing |
| 21 | +things. For instance, Client.join(chan) should return a Promise that |
| 22 | +succeeds when the channel is joined with the topic, names list, and |
| 23 | +channel name in the success object with an error case with the numeric |
| 24 | +that gives the reason for failure. |
18 | 25 |
|
19 | | -Either help port tests to Mocha, or add new tests. |
| 26 | +### Tests ### |
20 | 27 |
|
21 | | -(If you do port tests to Mocha, add Mocha to the devDependencies and place them in /test) |
| 28 | +Not everything is tested. If you add a feature, or change something, please |
| 29 | +attach to your pull request some tests that show your code is working. Or |
| 30 | +if you find a bug, a test case that shows the bug in action would be great. |
22 | 31 |
|
23 | 32 | ### Built In Modules ### |
24 | 33 |
|
25 | | -Please feel free to write the Server, User, and/or Channel modules. |
| 34 | +Please feel free to write and extend the Server, User, and/or Channel modules. |
| 35 | + |
| 36 | +They should really be the meat of the "IRC" framework, but like most |
| 37 | +parts of this framework that are IRC specific, they have been neglected. :( |
| 38 | + |
| 39 | +## Building ## |
| 40 | + |
| 41 | +Tennu is compiled from Sweet.js to ECMAScript. Sweet.js is a superset of |
| 42 | +ECMAScript 5 that adds macros. If you don't want to use macros, just write |
| 43 | +vanilla JavaScript. |
| 44 | + |
| 45 | +All the source files are located under `/src`. |
| 46 | + |
| 47 | +Just write `npm run build` and the project will be built, usually within |
| 48 | +five seconds. |
| 49 | + |
| 50 | +Note that `npm test` will first rebuild the project before running the |
| 51 | +tests, so if you are testing, there's no need to run build. |
| 52 | + |
| 53 | +## On Versioning ## |
| 54 | + |
| 55 | +Tennu follows SemVer like all npm packages should. |
| 56 | + |
| 57 | +While the version is greater than 1.0.0, I, Havvy, don't actually consider |
| 58 | +this feature complete, but I'm not working on it as much, and it is stable. |
| 59 | + |
| 60 | +The version number shouldn't really matter that much. Documentation, other |
| 61 | +than the changelog, will always focus on the latest version. Should a |
| 62 | +major rewrite of Tennu happen, it'll most probably be in another language |
| 63 | +(such as Elixir). |
| 64 | + |
| 65 | +Thus, when making a backards incompatible change, if it's possible to |
| 66 | +deprecate, deprecate the functionality instead, and then it can be removed |
| 67 | +two major releases later. If it's not possible to deprecate, the change |
| 68 | +may be put on hold. |
| 69 | + |
| 70 | +That said, do *not* change the version number yourself. Just give a |
| 71 | +heads up as to what you are doing so the version can be changed properly. |
| 72 | + |
| 73 | +## Format & Style ## |
| 74 | + |
| 75 | +Indent with four spaces. Not two spaces. Not tabs. |
26 | 76 |
|
27 | | -### 1.0.0 Release Checklist ### |
| 77 | +Define functions (both expressions and statements) like this: |
28 | 78 |
|
29 | | -Getting closer to 1.0.0 would be nice. |
| 79 | +```javascript |
| 80 | +function fnName (arg, list) { |
| 81 | + // body |
| 82 | +} |
| 83 | +``` |
30 | 84 |
|
31 | | -### ChunkedIrcMessageHandler ### |
| 85 | +Spaces go before and afer binary operators. For example: `2 + 2`, `(4 + 3) * 2` |
32 | 86 |
|
33 | | -Listens to the IrcMessageHandler, it chunks together list-like replies such |
34 | | -as whois and isupport numerics. For messages that aren't chunked, just pass |
35 | | -them through normally. |
| 87 | +Do not use `++` and `--` operators. Use `+= 1` and `-= 1` instead. If |
| 88 | +this means adding another statement, so be it. |
36 | 89 |
|
37 | | -Not a goal for 1.0.0 though. |
| 90 | +Tennu is built using Sweet.js, so we have access to macros. Where appropriate, |
| 91 | +you may add your own inline macros at the top of a file. You may also use |
| 92 | +macro packages for ES6 syntactic sugar, just one hasn't been added yet. |
| 93 | +Likewise, you can add in a macro package to remove parenthesis around block |
| 94 | +predicates. That just hasn't been added yet. |
38 | 95 |
|
39 | | -## Format ## |
| 96 | +## Documentation ## |
40 | 97 |
|
41 | | -* Four space indents |
42 | | -* Favor factories over constuctors. Where you do use a constructor, make |
43 | | - sure it works without being called in a `new` context. |
44 | | -* `function fnName (arg, list) {` |
45 | | -* Spaces around binary operators. Ex: `2 + 2`, `(4 + 3) * 2`. |
46 | | -* No harmony features. |
| 98 | +[https://tennu.github.io](Tennu's documentation) should be updated as |
| 99 | +necessary. Send a PR to the documentation repo, and it'll be accepted |
| 100 | +without question most of the time. There's also no real need to be clean |
| 101 | +about your commits to the documentation repo. |
0 commit comments