KGS Wishlist / Technical
8. Technical/Other/Dunnos
Preface
Here we collect ideas for improvements and ideas concerning technical topics (e.g. network) around KGS CGoban 3
This page needs a cleaning: e.g. since CGoban3 most online settings (buddy list etc.) are saved on server side.
If you are new to KGS:
If you just used KGS for the first time, these wishlist pages may be quite confusing to you. Your experience, however, is very valuable and you can help to improve KGS by adding it to KGS First Time User Experience.
Unsorted ideas and requests
Game: have the client keep track of its own time
- Ellbur: For those who have a slow network connection or a really slow processor, it would be nice to have the client keep track of its own time. -
- Fwiffo: This is discussed a bit on KGS Bugs. I do not think it is possible to do this securely, i.e. if the protocol allowed for this, it would be possible to create a hacked version of the client that would let you cheat on time.
(topic belongs to [Timseal])
Game: determine the time a move was made on the client side
- Joseba? Netlag. I am playing over a DSL connection that does occasionally cause more than 1min interruption of the connection. So in fast games I play a move, and then a minute later I lost by time. One alternative would be to determine the time a move was made on the client side, ie. send it with the move instead of taking the time when the command arrives at the server. I understand that for some reasons this is not desirable, eg. it is open to manipulation and it may be unfair for the opponent. I propose to measure the netlag. Tell the netlag to the opponent thus giving the opportunity to be nice and addtime. When a game is lost by time, first ask the opponent whether they want to win by time, and at the same time informing about the netlag. This way netlag no longer affects fast games between trusting, friendly people while a the same time negative effects are very limited.
- Mef: This exists to some extent, you don't win on time until you either "Claim win" or your opponent tries to play.
(topic belongs to [Timseal])
Game, Editor: time between making a move and appearance on the board
- When making a move on a game, send the move to the server before handling all the graphical stuff.
- wms: Already works this way. As soon as I know that the mouse was clicked on a valid location, I send it to the server. Graphical changes don't happen until much after, in fact, until the move comes back from the server. I'm pretty puzzled by your request - obviously you saw something that you thought was a problem, and wrote this request as a result, so instead of trying to give the solution, could you state what the original problem was?
- The problem, which may be unsolvable, is that whenever I click on a point, it takes at least a minute before it finishes whatever it's doing. This gets progressively worse the longer I'm using CGoBan.
- wms: Aha, the problem is not the graphical stuff, it's your network. When you click, first the move is sent to the server; then the "ghost" cursor stone goes away to let you know that the click was recognized; then the server sends the move back to you, at which point the client is displayed on your board. The "1 minute delay" you are seeing is netlag. Somewhere between you and the server there is some bad network congestion that is making the client --> server --> back to client message take a minute. The only solution is to fix the congestion (probably not possible), or to move to a different point on the internet (probably not practical).
- But this happens even offline, and gets progressively worse. I think its the fault of my really old computer, but is there any way to use less memory?
- Hu: Possibly programmed around by strategic and more frequent garbage collection? When this happens on my older computer, the disk light goes on solid.
- wms: Ah, if it happens when offline, then must be something other than netlag. It might be, as hu implies, that your computer is thrashing its swap. More frequent garbage collection would mean it would use slightly less memory, but it would also slow everybody down by a lot, so probably not a good idea. If it is thrashing, then I don't know what to say, other than you need more RAM. :-(
- Anon: One cause of progressively using more and more memory occurs on linux systems when you have some IME like for example SCIM running.
Disconnection: deactivated scrollbars and buttons
- Reza Fathzadeh: when disconnecting from the go server CGoban inactivates all the scrollbars and buttons. It seems to be better if all these can still function because for example someone has not yet saved his game and a lot more examples which need the buttons to be still active. +
- Karl Knechtel: The current effect is quite visually jarring, and also adds a lot to the total lag my system experiences whenever I lose my internet connection.
[81] Discussion of Development Fundamentals
Connecting through a SOCKS server
- joel For CGoban2: add support for connecting through a SOCKS server. This would provide a simple, fast and standard way to connect to the goserver from within a corporate intranet.
- GutBucket? I second this idea. Support for a SOCKS server would be excellent.
Time of update ".cgoban2rc"
- Jochie: Is it possible to synchronise the ".cgoban2rc" file (or whatever it is on non-Unix systems) immediately instead of waiting until the program exits? [Or possibly hourly or anytime something changes, like a player is buddied, or a window size changed] I have kept it running for days if not weeks and would hate to lose changes to buddy lists and such if it crashed. +
Text based configuration file
- Jochie: Any reason not to use an text based configuration file? Hu: Text based, yes please! Or at least editable buddy lists to prune out deadwood of defunct accounts, +
Network ports besides the standard
- SirLyric: Other open ports besides the standard KGS (2379, I believe) to ease the way through firewalls. Suggest 21, 22, 23? For an example, many AOL Instant Messenger clones do exactly this because AIM's server listens on every port.
- Ectospheno: If your firewall allows outgoing connections on any port (regardless of port number) and you have a home computer then you can setup an ssh daemon on your home computer on that port. Then just ssh to your home computer while specifying an ssh local port forward from your work/school computer to KGS. Then configure KGS to connect to localhost at that port and you are done. Not a fix but certainly a useful work-around.
Proxy server support
- jhouse: Can proxy server support be added?
- wms: If you mean HTTP proxy, then no. HTTP proxies send a single request, then get and return a single response. KGS obviously needs many asynchronous messages to flow each way, so this wouldn't work. People have gotten KGS working using tcp-over-HTTP tunnelling, and with that a proxy could work, but the performance (netlag) would be poor and that needs no special support on KGS' part. You just need to have the HTTP tunnel set up on your system and one outside your firewall.
- Jerome: HTTP proxies all accept the CONNECT command which opens a pure bidirectional socket with the given server. This is used for SSL connections and for almost all network applications where a direct connection to a server is required. cgoban is really an exception here. It only requires connecting to the proxy, sending "CONNECT server:port", and proceeding as if it was a direct connection.
- EdwardHammerbeck: jhouse, I think you can google some instructions on how to do this. I have done so and found some ideas, but as I am not very technically inclined in the ways of networking, TCP/IP, HTTP, and so forth, I could never get it to work. And since I didn't want to enlist the support of my friendly neighborhood (i.e., work) network admin (because it was his firewall I was trying to subvert) I just let the issue drop. Consequence: I'm stuck playing IGS at work because I can play it in a terminal window using PuTTy, which has proxy support built in. Can you tell how thrilled I am with that? :)
Specs and documentation of the protocol
- juhtolv: Please, release specs and documentation of the protocol of KGS. It would be nice, if the KGS-client (CGoban2) and maybe even the KGS server was free software (also known as open source software). If you release at least specs and documentation of the KGS protocol, then other people can create free KGS clients as they want. In addition they could use any language and widget sets they want and we would not be bound to the virtual machine language called Java anymore. In the other words: KGS clients could be made even in compiled languages like C/C++ and those clients would be really fast. And if they don't like the GUI of CGoban2, they could create a GUI that fits better for their taste. But I do not want to pressure you; if I recall, you have promised to release at least the protocol, when it is stabilized enough. Hmmm... What if NNGS would implement the IGSCP protocol? That would be interesting.
- BaBoUnD?: You might regard this as a mere point of semantics, but I'd like to point out that free software != open-source. In fact, KGS is already "free", meaning it costs nothing. But it is not open-source. Which, I hasten to add, is not necessarily a bad thing.
- In this context "free software" does not usually mean software without monetary cost, see http://fsf.org for more information. KGS being proprietary (ie not open source) is most certainly a very bad thing.
- See below for Hu's comment!
Run CGoban under free Java implementations
- juhtolv: If you release CGoban2 as free software, then it would be nice, if it was possible to run it under free Java implementations (Kaffe, SableVM, GNU Classpath, GCJ etc.).
- Hu: Please read the explanations elsewhere at Sensei's Library why the protocol specification and code for CGoban2 and KGS will not be released anytime soon. This issue has been discussed extensively and somewhat exhaustively.
- Nonetheless it would be useful to make CGoban2 compatible with a JavaVM that is shipped with many GNU/Linux distributions, like GIJ (the bytecode interpreter of GCJ).
XML-RPC interface
- I'd like an XML-RPC interface (or something similar) to cgoban for polling data - specifically data about my challenges. I use a multiworkspace desktop, and if I change workspace while waiting I'd like to have an applet for warning me if someone accepted it (and perhaps who, being able to accept/decline from the applet would also be desirable but not necessary). It would be great if things like this could be done through some sort of RPC since the client can't possibly support all desktop systems - let other people help if they'd like this feature.
[82] Connection and Responsiveness
Reconnect from the main window
- Allow a reconnect from the main window. Instead of greying out the "Play on KGS" button, ask if the user wants to force a reconnect. + +
A command-line switch to automatically log in to the server
- A command-line switch that will automatically log in to the server with the last used username/password e.g. -autologon. ( Obviously prompt if no username/password exists ). i.e. this -autologon switch makes the assumption that the person wants to use the 'Play' option with the same username they last logged on with. +
- There is currently the "-connect" option, but that just pops up the login dialog, rather than using the cached details to login. For those who wanted it, this would avoid having to click on "Play on KGS". Also, some people may have little use for the Cgoban3 "Main Window", and may habitually close it afterwards.
- RueLue: The code for this is [PATH/]java -jar [PATH/]cgoban.jar -connect - but you need to download the jar-file beforehand (or possibly start the file from the internet path (files.gokgs.com/...)
Technical, installer
- (... It would also ...) enable a 3rd party to create a Windows installer that could create a more typical windows software installation experience. By the 3rd party installer checking for and installing java and an icon pointing to a local copy of the kgs AMcgoban.jnlp , naive Windows users would get exactly the experience they have been led to expect by other windows applications. By only pointing at the AMcgoban.jnlp, the KGS client would continue to be updated in a platform independent fashion. Essentially wms would be oblivious to the 3rd party tailoring for windows.
Window behaviour after disconnect
- Don't close all watched games that when it disconnects for inactivity. [Something like this has been implemented. Would like to be able to use scroll bars to read chats after disconnect.]
Reconnect
- When disconnecting for inactivity, why not give an option to reconnect to the server instead of closing the client ?+
Easier rejoin a game
- Easier ways to rejoin a game when returning from being disconnected. +
"KGS is refusing connections"
- Upon disconnection, provide a better reason than "KGS is refusing connections".
Optional disable idle disconnect
- Possibility to disable idle disconnect (for frequent users). +
Connect through a http proxy server
- Maybe it is possible to let CGoban connect through a http proxy server? This way many people behind restrictive firewalls could play go at work ;) or at university.+
- Ectospheno: It would be nice if the applet version of KGS used the http proxy specified in the browser settings.
- And use standard ports for comunications e.g. 8080 if 80 is not possible :)
Client doesn't recognize disconnect
- At least in Windows, the client sometimes seems to get stuck in some sort of half-connected state where it doesn't recognize that it's not connected but will not do anything useful either. In this state, it is impossible to close the client by normal means. It would be nice if there would be some kind of time-out period so you could at least close the client.
- Puzzler?:Yes, this happens to me at least once per game. I'll be waiting for my opponent to move, and after a minute or so, I realize that I'm effectively disconnected, but my client just doesn't know it. Perhaps "disconnected" is not the right term; it may be that the lag time is just so long that the client can't do anything, and after many minutes it eventually times out. I can determine that my client is in this non-responsive state by sending a test message in the chat window, but it doesn't show up. It's extremely frustrating because by the time I figure all this out and restart the client, my opponent has often given up on me and left. Long lag times and these frequent "hung" connections have forced me to give up on KGS for now. I hope this will be fixed soon.
- lola?: I have the same problem as Puzzler and lost a few games due to time and am afraid, that I might become marked as an escaper, even though I don't escape on purpose but the opponent leave in the time I need to realise I'm disconnected, close the client and restart everything.
- Kohistan?: Happens to me on mac as well, and way too often. This is very frustrating, as you say I seem like an escaper while it's just a connection problem.
Option to stay connected for plus members
- The option to stay connected all the time might be a nice perk for kgs plus members. +
Latency for moves (~timeseal)
- KGS seems to have higher latency for moves than e.g. IGS. Recording the time of a click immediately in the client, transmitting this to the server and having the server believe it would be a good solution (matters in blitz and especially ultra blitz games).
Seconding this. It is annoying to just wait for the other guys move. When it finally comes, it comes together with the message that I lost on time (even though at my end I still had several byo-yomi periods remaining). May be there should be sporadic round-trip checks, if the server does not want to believe the client end about the time that I actually spent thinking?
Latency test and warn against fast games
- Alternatively, build in some sort of latency test and warn when posting or accepting fast games if the observed latency is too high to make a fast game safe to play. For example, a byoyomi period of 30 seconds is probably not sufficient if the latency is 15 seconds, which something I frequently observe during peak usage times.
Or, always have a visual indication in some top-level window of measured lag, such as green, yellow, red, then the user can see if there is lag before setting up or accepting a game.
Server status window: response time min/max; ping button; system info
- RueLue: Have entries in the server stats window (menu file) for min/max of response time, possibly also average response time. A ping button for e.g.5 pings in a row ("Test connection") could make sense. Show system info (Java, OS etc.). This could also be in the configuration window. Using the console for getting the java version is very unfamiliar for most computer users.
Client windows, when disconnected
- RolandIllig: When the client is disconnected because of network problems, it should still be possible to use the client program as usual, just without getting any updates from the server. Currently, there is an error box and then all game and chat windows are closed.
Tournament transmission: accept moves at once
- RolandIllig: When broadcasting games from a tournament, it is very painful that each move has to be sent to the server, which sends it back, and only then it appears in the editor. On the last tournament, this round-trip time was more than one second, which makes it impossible to broadcast games where both players are in byo-yomi or they play a common joseki. It would be nice if one could select "{x} Do not wait for the server to accept moves".
Provide access on port 80
- Critter? I used to play KGS online at a favorite coffee shop, but they recently changed their Internet access to lock out all ports, except the standard web and email ports like port 80. To deal with this, I suggest that KGS also provide access port 80 at some url, as a backup. This could easily be implemented by a port forward on one of your firewalls. The GUI would have to know about it.
Some warning that the connection has been lost.
- PussyCat? I'm plagued by my connection to the server being lost even though I'm still connected to the internet. I've just nearly lost a game because I thought my opponent was thinking but in reality my clock was ticking. One way of seeing if the connection is still up is to watch a game room and if it stops moving then the connection is dead but I would prefer it if the client checked every few seconds that the connection was live and gave me a warning if it had died.
- RueLue: That seems a good idea: the usual "noise" of the connection (this calculated on client side) could be used to determine, if there is a problem possible. A coloured mark in the window of an own game could show the player, if she needs to be worried. More: if the player wants to offer/accept a blitz game, she gets a warning. This coloured mark can also be a part of the rooms window.
[83] Other Technical Issues
Screen updates take so long
Now the screen updates take so long it is impossible to play. Have tried the latest 1.5 and 1.4 java.
Force Garbage Collection (Java internal)
- Hu: Have a way to force Garbage Collection (Java internal issue). At least have the New Game dialogue or challenging an offer cause it to occur so that it does not happen right when you accept a game and the clock is ticking. +
- crux: Are you sure it's the garbage collection and not network lags you are seeing?
- Hu: Yes. My computer has a disk activity light and makes disk noises. When network lag occurs there is none of that.
- Evand: Hu, it may be possible to do this externally without wms doing anything. Does this matter enough that it would be worth my time to attempt? It should actually be reasonably simple, but would be easier with the source available, obviously
More powerful print option
- Nixihou: I would like to have a more powerful print option for games and sgf-files. Currently I miss the possibilities to define how many moves to display on the first diagram (e.g. 1-50 numbered) and how many additional moves for each following diagram until the end of game. And the possibility to say how many go-diagrams on one page. (and with or without the moverange as legend of the diagram, and a checkbox to print the game-informations etc. Many more printing features would be "nice to have".)
- rmsp: Second that. It would be nice to be able to print with captured stones, kos, etc. displayed underneath the diagram, i.e. at
- (Sebastian:) I disagree. There is an easy workaround - just invest a few dollars in commercial Go software, which does a much better job at this than CGoban2 ever can. There are many requests here for which there is no workaround - why reinvent the wheel, when there's so much else that only KGS can do?
Run cgoban for editing a sgf file from the command line
- blubb: Not sure, if this is the right place here, and, since I don't know anything serious about Java at all, this question may sound silly. Anyway: (How) can I run cgoban editing a sgf file from the command line? I'd like to make cgoban my standard sgf editor for being able to "click and see" any sgf file link I find on the web.
- glue: Use the -nosplash -edit file.sgf option.
- blubb: Sorry, I didn't mention, currently I use to start CGoban2 with Java WebStart (at a win9x system): "C:\Programme\Java Web Start\javaws.exe" "@C:\Programme\Java Web Start\.javaws\cache\indirect\indirect49789.ind". The indirect49789.ind file points to another local file which contains about 15 XML lines. Does the javaws command support any switches/options at all?
- wms: Nope. Java web start ignores all command line arguments other than the address of the JNLP file. This is the only reason that I still keep the other launchers around. Sun has indicated that Java 1.5's web start will let you associate MIME types with your application, but I haven't yet had a chance to dig around in the 1.5 beta and find out for sure. If it does, you can expect me to start deprecating the non-web start forms or cgoban 2!
- Neil: And what software is required for this "web start" to work?
- wms: Java. If you have Java 1.4 or later, you have Java web start. It is much more reliable than other systems for starting up CGoban 2, the only reason I keep other systems around is because it can't (yet) associate SGF files with the application. Hopefully that will change in the next release.
- Neil: I thought it might be some third party thing, but that must be something that only exists on the select platforms that Sun deigns to support, because it's not here on FreeBSD with JDK 1.4.1. Thanks for your answer.
- wms: Are you sure? My understanding is that Java web start is now part of Java, and that's that. It is there for Windows, Linux, and Mac OS X - and OS X is not one of the ones that Sun supports, so obviously it does exist outside of the Sun-developed versions of Java. If you're right then it pretty much sucks to be FreeBSD if you want Java I guess. The good news is, if you don't have Java web start, it still isn't hard to run the program. Java web start is really just a system for downloading, running, and cacheing the .jar file. Since the downloading part is done via HTTP, if you for some reason don't have Java web start, you can always just download it yourself and write a shell script with "java -jar ..." in it.
- Neil: I'm perfectly sure it's not here, and in fact I've found a FreeBSD Problem Report that proposes the addition of a web start service. It's good to know that the software will be available without it, though. I'm comfortable with the software the way it runs now.
KGS for handheld devices
- Rutabaga: This is probably impossible, but I'm just wondering if there's a way to make a KGS for handheld devices. CGoban_Pocket or something. You see, my computer crashed and I have become completely addicted to this wonderful invention of wms's, and the only way I could possibly get on KGS is through either a handheld device or a non-Java version.
Support for esound or alsa as audio output
- Support for esound as audio output (enable sound that is mixable on Linux (among others)). +
- pajaro Rather than esound, I'd prefer alsa support for linux. Some people use esd, some use arts, some use none of them. But most people use alsa, and it is mixable too.
- wms: I'm not going to use anything but java sound library. In java 1.5 it now supports ALSA, so if you want also get that, but I'm not going to be writing my own native linux-only sound library and bundling it with cgoban 2.
Separate volume control
- Separate volume control for CGoban2's own sounds. ++
Normalization for lecture audio
- anon: Normalization for lecture audio please! +
- Fwiffo: Or just some sort of amplification on the client side, sometimes the audio is impossibly quiet.
Memory effective thread handling
- jab: Some kind of memory effective thread handling. For example if I start CGoban2 and open three SGF files via the edit button I will have one main thread and many children, but if I open five SGF files via the web browser I will have 5 JVM's taking quite a bit of my 128MB away. I saw that, for example, Acrobat under Linux recognizes if a main instance is running already and then probably just connects via a well known socket to issue an open/edit file command. Maybe that is not too much effort to implement for CGoban2? I guess it would help CGoban2 users with old PCs.
- mgoetze: This is a problem with (a) your operating system, (b) your JVM or (c) your interpretation of certain numbers, and I'm betting on (c)...
- jab: I would appreciate it if your reply would be more constructive rather than plain assuming I am to dumb to interprete the numbers. Maybe you give it a own go at the KGS Issue - Client Memory Consumption. And if you agree with me there, I would suggest we delete this sidetalk from senseis as it is not beneficial.
Server crashes
- emk try to avoid the server crashes: i think some improvement should have priority over many other features. Maybe a hardware septeration of core features and the fancy other stuff helps.
USB port on ING clocks
- PinChiLei?: Handle USB port on new ING clocks to be able to see the clock time for demonstration games.
"The system 'goserver.gokgs.com' is refusing connections ..."
- BabaAesop?: I need help reconnecting to KGS. A few days ago when I tried to connect I got an error saying "The system 'goserver.gokgs.com' is refusing connections. The server is probably down..." However, the server is not down. I have made sure my firewall is not blocking java web start or the program itself and the ports being used, as well as reinstalling the Cgoban and using a guest account. I have no idea what could of happened. Another weird thing is that I cannot connect to IGS either. Please Help.....
"Offline" access or interface to "leave message"
- toadwarble: Can we have an "offline" access or interface to "leave message"? The BGA online league, which I've done the software for, could benefit if we could send "auto-reminders". Thanks.
- PeterHB: This would seem a useful addition as long as KGS adds some kind of control mechanism to the KGS server so that messages are only accepted under conditions KGS is happy with. There are many possible ways to achieve this I imagine. Its not obvious whether a separate messaging interface or an extension of the capabilities of GTP is the way to go, but hopefully wms will consider the idea and conjure up something. ( Declaration of interest/bias : toadwarble is a fellow St. Alban's club player with me.)