-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathTODO
111 lines (92 loc) · 3.37 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
The todo list is broken down into the following sections:
Drivers: Specific drivers that need creating
Core: Items that affect the main framework
Dockerising: Things necessary for running sp0rkle in a container.
BoltDB Migration: Things remaining for the Great Mongo->Bolt migration.
Testability: Items surounding the test framework
Bugs: Known problems with current implementation
Drivers
=======
// There are probably more useful web services with JSON apis to wrap,
// these can all go in 'netdriver'
*WebServices
- soundcloud
follow particular bands/users to announce when they post new tracks
(would require API use since they don't expose simple RSS feeds)
*Remind
// Remind me, (or someone) about something at a certain point in the future
// Still TODO:
- repeating reminders -- daily, weekly, monthly. no shorter than hourly ;-)
- split tell stuff out to a notify driver
- add "ping me when x next says something" to notify driver
*urlsearch
//Keep a track of urls that are said and allow them to be searched (using regex)
// Still TODO:
- make consts configurable
- bad url strings
- max cache size
- auto shorten limit
- 404 checking of old URLs
*Quotes
// Still TODO: some...
- Multi-line quote add for copypasta win?
+ q(uote )?begin
+ record all lines said by Nick
+ q(uote )?end
- Multi-line quote storage? (means parsing logic in quoteimporter)
- Quote stats (use access counts)
- Help, unit tests, etc.
*Factoids
// Still TODO
- Permissions system:
+ each factoid has "owner" == creator initially
+ owner can set factoid read-only, prevents others modifying/deleting
+ need some mechanism for giving/taking ownership (someone needs "root")
- The ability to apply commands to something other than the last factoid seen
via "literal" to list then s/that/N/ in command to apply.
- The above but operating on all factoids associated with a key.
- Something that utilises the access count to help prune unseen factoids
- More unit tests
- Pruning of 404'd F_URL factoids
Core
====
* Admin commands like join/part/ignore (and perms)
* Push servemux-like command/handler dispatch up into a layer in goirc.
* Help: look into godoc -> wiki.git dumping
* Revisit the polling / async tasks stuff as it is terrible
* context.Context propagation now goirc supports it
* Proper dependency injection with https://github.com/google/wire
Dockerising
===========
* Ensure logging to STDOUT works ok
* Env var secrets
* Docker-compatible signal handling (more than just sigint)
* kill off "rebuilding"
BoltDB Migration
================
### Remaining collections
* reminders
* pushes
### Migration
* Change migration code to have more states
* MONGO_ONLY -- read/write to mongo only, don't expect bolt data
* MONGO_PRIMARY
* initial migration run complete + diffed
* write to both, read from both, diff, return mongo
* BOLT_PRIMARY
* run another complete diff to validate dual writes
* write to both, read from both, diff, return bolt
* BOLT_ONLY -- don't even open mongo connection on startup
* Migrate as far as BOLT_PRIMARY on current server
* Dockerise (see dockerising section)
* Set up new Dockerised servers without mongo
* Run BOLT_ONLY on new server
* Nuke all the migration code!
Testability
===========
(lol)
* Ensure all functions (where applicable) have unit tests
* mock/fake the DB connection
Bugs
====
Many, natch.