UPDATE 2:
Toady has posted two detailed replies to explain his position. Here are links to
the first and
the second one. Personally I'm satisfied with his answer and that closes the discussion for me.
UPDATE:
Let's try to keep all the flaming out of this, ok? There's a lot of misunderstanding and not ready the context going on.
I may have been wrong in starting the thread on two topics at the same time. It did cause a lot of trolling. But as things are, currently we are discussing two things:
SUMMARY OF THE CURRENT TOPICS (also posted on page 12 of this thread):
1. Would third-party interfaces hurt or help DF and Toady, and in what aspects?
- Donations
- Fan base/User adoption
- Toady being able to concentrate on what he likes doing
- Better interface in the short and long run
My personal opinion: third-party interfaces will only please (and increase a bit) the hardcore fanbase Toady relies on for a living, and allow him to spend more time on developing all the gameplay features he's planning. On top of that, those interfaces will be a testing ground for what interface suits better DF, and then Toady can implement his own by picking what he likes left and right.
2. What's the best technical way to allow third-party interfaces?
- Let people hack at the game as it is now
- Client-server separations through sockets (seems inefficient and hard to achieve, from some comments)
- Client-server separation through making the client or server a DLL
- If we admit that a client-server-like separation is best, is it better to have a documented public API to the server, or make the client open-source so it's kind of self-documenting.
My personal opinion (after reading many interesting advices on this thread): the best way to go would be a client-server separation through making the client (interface part) or server (game logic part) a DLL. Since Toady fears that maintaining an API for people will be too much work, I think a self-documenting open-source client would be a good solution. Things will break between versions (as they do now), but since Toady will have his own working client as an example, third-party ones will be easily and quickly updated. Lastly I suggest a license similar to the GPL for the client, so that Toady has full access to the third-party interface source code, and can integrate whatever he wants in his reference version without asking permission to anybody.
-----------------------
I wanted to add this to what I posted above:
People are making worst-case scenarios, such as Toady losing all his work and the project failing and so on.
I personally believe that third-party interface clients would only help, not hurt, Dwarf Fortress.
But what if by some amazing and unlikely bad luck one of those worst-case scenarios comes true and Toady feels he's loosing control of the project?
Well he still has an emergency exit: stop the third-party client business by not supporting them anymore (i.e. stop updating his public API or not publishing the source code for the next version of his client). This would certainly anger a lot of fans who are relying on those clients, but he could still count on faithful hardcore fans who are more interested by the game than by any client. I know that if this situation came true, I would keep playing the game and following it's development, even with a bad interface like the current one.
In the case of an open-source client, the license could specify that Toady can use any code from derivative works without publishing his changes. Basically, people using the client source code would have to share copyrights with Toady. This would allow Tarn to use any source code from third-party clients he sees fit, but revert the license to closed-source for any future version at any time. Not that I think it will be necessary, but you can't be too safe in a case like this.
Still in this worst-case scenario, I think Toady could revert to the current third-party hacking difficulty by reverting to closed source and changing the source code quite a bit. He could reintegrate everything in a monolithic EXE. Hell, he could even obfuscate his binary (though I don't know much about those techniques). Of course he can't completely prevent people to make third-party clients like the ones that currently exists. Even though, if he officially (and therefore legally) forbade doing this, I doubt many people would disobey. True (read: donating) fans would be unlikely to use tools that don't have Toady's "benediction".
-----------------------
Original Post:
-----------------------
In
the interview on Kwanzoo, Toady mentions that "If a third party interface becomes popular, I think I might lose control of the project. I don’t want to be in a position where I have to accommodate and work with other people."
I think this is worth discussing as a community. I see two things that could be feared:
1. Third-party interface becomes so popular that people follow its development more than Dwarf Fortress development (thus drawing away from Toady's only source of income).
2. Third party interface becomes so popular that Toady has to modify DF just to allow new features in that interface - the devs of that interface would be a bit like the current modders who always say "Add more raws!". If he doesn't do it, he's hurting DF's popularity since people use mainly that client to play the game. So, he's just been forced to collaborate with the devs of this third-party client.
Personally, Toady, I think your fears are unfounded because:
- You're already accomodating and working with other people: asking for and discussing suggestions with people on the forum, doing some things so the game can be more moddable, and so on. You just have to set the rules clearly so things stay at a level where you feel comfortable.
- What people are really interested in is the cool gameplay features only you can add. While mods and third-party tools are interesting to follow, they revolve around making the experience of playing your game better. Your future plans for the game are so ambitious that they will easily dwarf* any interest in third-party development.
- One of the main barriers to DF adoption right now is the interface. However, all the time that you spend on improving the interface slows down the development of some amazing element of the Dev pages. Worse, the more you refine the interface, the more effort you have to spend to update it later.
- I believe what would help DF the most would be a model based on an open-source client and a closed-source server. Just to give an example of how this could work:
-- You separate the game into a client and a server that communicate through sockets.
-- The client asks the server each turn what it can see in a given "window", which can be a cube of X by Y by Z tiles.
-- The server returns a list of visible objects, and the client decides how to display them. This allows for 2d, isometric, 3d clients of any sort.
-- At any time, the client transmits to the server commands sent by the user interface, such as a 2d or 3d selection of objects together with the command "Select for dumping".
-- At any time, the server can inform the client that the game just paused, and similar game-interrupting stuff.
- To avoid collaborating with other people more than you want, you should set the following ground rules:
-- You only improve your base version of the client as much as you need it to be functional. (It could look exactly the same as the current interface...)
-- You provide no support whatsoever to third-party client makers: you can break external clients them every version, it's their job to adapt.
-- You provide no documentation, people have to read the client source code to know how to make their own.
-- You don't accept patches unless specifically asked for, and you reserve the right to integrate any code from third party clients any time you see fit. If you choose the GPL as your license it grants you that right anyways.
- About the client part: I follow a lot of open-source projects, and from what I can see, collaboration with external people depends largely on how the main devs set the rules. For example, in the roguelike Dungeon Crawl Stone Soup, there are two main devs, and about five people with commit access to SVN. The rest submit occasional patches, and otherwise discuss the game and make suggestions, just like DF players.
Since people generally respect you a lot, I think they'll have no problem accepting the idea that you're the only dev - forever. Even if the client is open-source.
I'd like to know what people think about all this, and especially what
you Toady think about my suggestions.
(*pun intended)