EasyRPG / Player

RPG Maker 2000/2003 and EasyRPG games interpreter
https://easyrpg.org/player/
GNU General Public License v3.0
991 stars 186 forks source link

RFC: Where to put shared utilities #1724

Open fmatthew5876 opened 5 years ago

fmatthew5876 commented 5 years ago

We are coming to a point where we have to consider where to put shared utilities between liblcf and player.

So far we have these:

I put these in liblcf because its the common root for all EasyRPG projects, but Ghabry was suggesting copying ScopeGuard into Player in #1628.

If we copy them, we have to maintain 2 copies whenever we fix one. There is also the possibility of name clashes.

Another option is yet another repo for EasyRPG common stuff, but then we have more dependency hell to manage. We don't have too many of these yet to make that option viable in my opinion.

Devs, your thoughts?

Ghabry commented 5 years ago

Extra repo is not an option imo and we have bad experience with submodules.

well enum_tags is required in the headers, so this can't be removed but would actually also fall in this category.

So lets use FlagSet and ScopeGuard as discussion point.

Imo liblcf should only provide stuff that has at least minimal connection to RPG Maker. FlagSet and ScopeGuard don't fulfill this requirement as they are only using liblcf as a common location to store stuff that could be useful for coding.

INI is already a corner case, the only use in liblcf is to read the "[EasyRPG] Encoding=XXXX" from the RPG_RT.ini but we use the exported ini lib everywhere in Player for other stuff. Maybe this should also become a part of Player instead.