-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathTODO
170 lines (143 loc) · 7.7 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
-------------------------------------------------------------------
-- NNGS SERVER TODO LIST
-------------------------------------------------------------------
>>GENERAL
- get help docs etc. automatically installed
- get rid of Makefiles installed automatically by wildcard expansion
- ensure that default data files that are installed (ladder files?)
will not overwrite existing data files
- figure out how to REQUIRE things: crypt.h for example
>>INTERNATIONALIZATION
<CQ> can rxvt display chinese characters? if so, how?
<drow> CQ: rxvt-ml, IIRC
- allow language order (eg. chi jap eng) for fallback sequence
- <Lo-lan-do> CQ: http://www.cl.cam.ac.uk/~mgk25/unicode.html
- <Lo-lan-do> CQ: I'll be glad to provide details if/when you ask me.
- <Lo-lan-do> CQ: GNU recode
- <willy> oh, and man 7 utf-8 is good
- translate help files
- translate messages to other languages
>>BUGS
- see file 'BUGS'. Fix them. Send patches to the mailing list.
>>CODE
- clean up header files included all over the place
...get rid of stdincludes.h completely: just need to move ulong def.
- Read configuration from .cnf file at startup
<<-- 1.1.19 done!
- detach from ctty and fork twice to daemonise
<<-- 1.1.19 done!
- get rid off excessive logging
- clean up parray[].pstatus protostate - mess when restoring old games.
- change ALL date/time (in filenames ...) to UTC: avoid foldover at DST-changes.
<<-- 1.1.1x done!
>>FUNCTIONALITY
- change mail queue: don't invoke sendmail, run a cron job?
- for debug, don't use mailprog but give passwds out online?
- autodetect mailer from configure scripts
<<-- 1.1.19 done!
- for forgotten passwds, let people authenticate with user name and email
address and get the passwd automatically mailed to them.
- problem when entering dead groups in telnet mode
- call external program (Gnu Go ???) for final scoring.
- allow external program(gnugo) to estimate/recalculate final score.
This will add some extra steps to the game-state, because we can't
afford to wait() for the external process.
-------------------------------------------------------------------
-------------------------------------------------------------------
-- ENHANCEMENT SUGGESTIONS
-------------------------------------------------------------------
-------------------------------------------------------------------
-------------------------------------------------------------------
-------------------------------------------------------------------
-------------------------------------------------------------------
-------------------------------------------------------------------
Implement Network connectivity between NNGS servers
>> advantages
... unlimited uptime
... almost no lag (people can log in to a 'close' server)
.... each server timestamps the moves
... more opponents
>> disadvantages/issues to resolve
- where do files reside?
... player files
... game records
- is just synchronizing them enough?
- globalizing name spaces
- implement a DB backend somewhere?
This is a big problem that
- how to pass moves
... special 'server' accounts on each server?
- file locking must be implemented so several server processes can run on one machine or network
... this is a special case of the superserver
... file locking is not hard to implement
- communication
... take advantage of IRC code?
... have special communication daemons that the servers can fork?
The most interesting solution is to have a set of super-servers that just handle data. This data includes player data, games played, people logged in, etc. This is not difficult to implement because it's just another abstraction layer on top of all the file interfacing routines, login/logout routines, etc. This is probably the most workable solution.
AvK: IMO the best way to go would be :
- (1): split nngs into a "core" server, just handling lean data,
, and a "skin" server, doing all the formatting / converting.
The skin would be most subject to futile changes, but these could not
take down the core-server.
- (2) augment the core-servers to establish core<-->core connections.
Personally, I would like the core-server to be format-free. Some
"tagged" interchange format will do, (don't say XML ...).
There will always be problems wrt distribution of data, and with timing.
Distribution:
- let only one site keep an authorative copy of the players data.
Others can/may keep copies, but these should be considered cache.
- to avoid name-clashes, two-level names (avk@cosmic or avk.lgs) could be
introduced. One-level names could be permitted as long as they are
unambiguous.
Timing:
- Ignore. The net is getting faster. Netlag will always exist. It is
part of the game.
- extend the core-core protocol to establish and communicate the value
of the delays. wrt the core<-->user connection: ignore it.
-------------------------------------------------------------------
- untimed games: play one move whenever you log on
have one move per 2 days minumum or something
kind of like correspondence chess
-------------------------------------------------------------------
include bots:
- gobot
- livebot (by ooops on LGS telnet lgs.hinet.net 9696)
-------------------------------------------------------------------
These should come from a default channel title text file, or at least a header file.
PUBLIC void channel_init()
channel.c: carray[i].Title = mystrdup("Admins House");
channel.c: carray[i].Title = mystrdup("Tournament Players Lounge");
channel.c: carray[i].Title = mystrdup("Robin's hood");
channel.c: carray[i].Title = mystrdup("Easy conversation in Japanese");
channel.c: carray[i].Title = mystrdup("NNGS Bar and Grill");
channel.c: carray[i].Title = mystrdup("To set the channel title, see \"help ctitle\"");
channel.c: carray[i].Title = mystrdup("Den svenska kanalen (Swedish)");
channel.c: carray[i].Title = mystrdup("Der deutsche Kanal (German)");
channel.c: carray[i].Title = mystrdup("鷸{岅僠儍儞僱儖乿 (Japanese)");
channel.c: carray[i].Title = mystrdup("The Korean channel");
channel.c: carray[i].Title = mystrdup("中文频道 (Chinese)");
channel.c: carray[i].Title = mystrdup("The Girls Club / Happy Channel :-)");
channel.c: carray[i].Title = mystrdup("No Title");
-------------------------------------------------------------------
<eek> with plans of making NNGS clones from different continents connect to each other.
The advantage of connecting the servers would have been to increase the player pool and
at the same time diminish the effect of net lag which was worse than it is now.
Not that the games would go quicker,
but the loss of thinking time would be less, sich each user's time was measured against the closest server.
-------------------------------------------------------------------
Olaf Martens <[email protected]>
For now, I have only two suggestions. I would like that NNGS e-mails sgf
files as attachments to the user, not inside the e-mail message as text.
That would make it more convenient. Maybe it would also be useful to offer
a setting where the user can choose if he wants the file to be sent as
attachment or as text message.
-------------------------------------------------------------------
Olaf Martens <[email protected]>
We have an lchan command on NNGS. Would it be possible to have something
similar for tell? I frequently get disconnected from the internet because
the phone line dies or my ISP disconnects me. In this case I stay as
'ghost' on the server, and the person who is talking to me keeps sending me
tell messages without knowing I don't see them. When I get back online we
have to figure what message I got last, and the other person has to repeat
the rest. Would be easier just to type 'ltell' or similar and get the last
10-15 tells repeated like lchan does for channel messages.