- Issue number: #42
Task Description
Only the net.splitcells.dem.environment.Cell
API should be used,
in order to manage and combine Dem#process
and Dem#serve
configurations.
This way, configs are handled declaratively. This simplifies and partially avoids handling dependencies between configs and prioritizes creating useful defaults for complex configs, in order to lessen the need for custom configs.
At the end, this avoids creating complex configurations by chaining multiple config functions by hand. Lately, this has proven to be not working and created severe configuration costs.
Tasks
- [ ] Extract Cell API tasks from the issue "Create game based on optimization networks".
- [ ] Isolate Cin
Dem#process
from currently mainDem#process
, in order to isolate data.- [ ] Create
net.splitcells.network.connect
.- [ ] Its main purposes is to connect multiple
Dem#process
. - [ ] Provides single point of entry for HTTP requests.
- [ ] Its main purposes is to connect multiple
- [ ] Create
- [ ] Define service builder interface in order to run and coordinate multiple Dem processes.
- [ ] Move this task to dedicated ticket, as this is a big task, with its own distinct goals. Link from this ticket to this new ticket instead.
- [ ] Explain why
CellFileSystemViews
was created and for what it is used. - [x] Discourage starting program via Dem process with a given runnable,
because such a program definition is not declarative and therefore combining multiple services or module into
one is harder.
-> This is not needed because
Dem#process
andDem#serve
are both equally valid use cases..- [x] Deprecate such
Dem#process
and create a copy with a longer name, in order to discourage its use. Note, that such a method is needed for non service things, like executing a test. ->Dem#process
is needed in order to calculate something with a given config. So it is not deprecated.
- [x] Deprecate such
- [ ] Enable all services etc. of a module via one single point of entry like a method,
where no extra arguments are required for the service to be working with a sane configuration.
Maybe a general module class/interface is needed.
- [x] Create entrypoint base. -> The interface
net.splitcells.dem.environment.Cell
is the basis for this. - [x] Make entrypoint base an option as well, as it is otherwise hard to declare dependencies between instances of such entry points.
- [x] Provide file system via cells by default.
- [x] Provide configurations for all modules and thereby understand all requirements.
- [x] New properties should be not be added to interface directly,
but should be added via the
Cell#accept
dynamically. For one, we want to avoid bloating the Cell interface. Furthermore, a mechanism is required whereby the values of the new properties can be replaced. For instance, a filesystem associated with a cell is a file system based on class resources by default. When a developer wants to edit the data of the filesystem, it would be efficient, if the developer could edit the source files and test the edit without an application restart. -> This is documented. - [x] Provide a FileSystemView for every Cell by default.
- [x] Create Cell version of WebsiteViaJar. -> It is called
net.splitcells.system.SystemCell
.- [x] ServerService does not start correctly.
- [x] Does not open port.
server.listen();
has no effect, although the server config seems to be correct. -> This was caused by a hidden error.
- [x] Does not open port.
- [x] Add all configs and resources to SystemCell.
- [x] ServerService does not start correctly.
- [x] Deprecate original WebsiteViaJar.
- [x] New properties should be not be added to interface directly,
but should be added via the
- [ ] Visualize cell dependencies.
- [ ] Provide way for cells to optionally declare their option dependencies. The dependency order will not be enforced yet.
- [ ] Visualize as graph like
https://splitcells.net/net/splitcells/network/overview.html
, but dynamically.
- [ ] Create Cell based launcher at
net.splitcells.martins.avots.distro.LiveDistroCell
and when it works removenet.splitcells.martins.avots.distro.LiveDistro
.- [ ] Use DistroCell.
- [ ] Deprecate all old style Distro classes of
net.splitcells.network.distro
. - [ ] Deprecate all old style Distro classes of
net.splitcells.network.martins.avots.distro
. - [ ] Deploy on live server.
- [x] Create entrypoint base. -> The interface
- [ ] Create launcher class for execution or configuration of the game.
- [ ] Create proof of concept launcher class at
net.splitcells.network.distro.DistroCell
, in order to ease the start. - [ ] Create proof of concept launcher class at
net.splitcells.martins.avots.distro
, in order to ease the start. -> The class CinDevDistro is used for that. - [ ] Only use web server as resource option.
- [ ] See
GelDev#configureForWebserver
.
- [ ] See
- [ ] Clean up existing configs.
- [ ] What is
net.splitcells.website.Projects
used for? - [ ] Consider
net.splitcells.cin.WorldService
, which contains former working code. - [ ] Consider
net.splitcells.martins.avots.distro.DevDistro
, which contains currently working code.
- [ ] What is
- [ ] Use GelDev as basis.
- [ ] Do not block web server start via game.
- [ ] Create proof of concept launcher class at
- [ ] Isolate Cin
- [ ] This is needed for the issue "Publish public website source code".
- [ ] Remove configuration code of any other way.