Open mammothbane opened 8 years ago
From our experience with our own internal Halite competition, many users end up rewriting the "library" part of the starter packages to fit their needs. We want to emphasize that you can do this.
Ok, sure, I suppose that makes sense, but why not provide a canonical implementation and make it clear that it can be modified, forked, or not used at all? It's much easier for someone to get started with an API in place than an amorphous blob of code that they don't have ownership over. If it's obvious that the boundary for is the stdout
communication protocol and this is well-documented, people can rewrite if they want, or they can fork the library.
It's not a huge deal, but as soon as I downloaded the scala package and figured out what everything was, I immediately started restructuring because I wanted my bot code namespaced away from the pre-written stuff.
Point taken. We'll consider concatenating library files into single headers/jars or putting them on package managers.
Why are there 'starter packages'? Mightn't this all just be provided as a bunch of normal pip/maven/nuget/cargo/etc. libraries (with a static lib for C++)?
The main reason to do this is that there is currently no namespacing or clear separation between library code and user code. Obviously it's not terribly difficult to figure this distinction out, but it's pretty ugly.