f-f / gogolica

Auto-generated Google APIs for Clojure
Eclipse Public License 1.0
2 stars 0 forks source link

Move all our utility namespaces into deeper namespace #16

Closed zudov closed 6 years ago

zudov commented 6 years ago

The namespaces of generated modules look like gogolica.storage.v1, and our utility namespaces are like gogolica.auth, gogolica.utils, gogolica.model and so on.

To distinguish between them, we should consider somehow distinguish our "operational" namespaces from the generated one. I like the names that we currently generate, so maybe we could move the operational modules a level deeper. Something like gogolica.gen.{auth,utils,model,...}.

However, gogolica.gen is boring, and maybe we should give a nice name to the thing that would be generating the actual user-facing gogolica. I propose either Viy (more evil), or Bulba (more epic). Then we can have gogolica.viy or gogolica.bulba.

zudov commented 6 years ago

"bulba" is "potato" in Belorussian, though. But I think "a potato" is very appropriate name for generator of codes.

f-f commented 6 years ago

Good points, I was thinking of this issue too some days ago 👍

I agree that we should move our "generational" namespaces (let's call it "compile time") a level deeper. This includes, at the moment of writing, core, generate, and model.

The remaining modules (currently auth and common) are not used at "compile time", but contain handwritten code that will be shared in all the generated namespaces - so code that pertains "runtime" - thus is not executed while we generate the stuff. We should probably move this code one level deeper too, but in a separate location, something like common.

WRT bikeshedding the name of this generational level, while I would love to call the project "a potato", I'm worried that this might confuse users accidentally stumbling on it. So for something as exposed as a namespace name a I would stick to the boring name gen, we can add more puns at code and documentation level 😛

So to recap, this is my view on it:

gogolica.core     -> gogolica.gen.core
gogolica.model    -> gogolica.gen.model
gogolica.generate -> gogolica.gen.codegen
gogolica.auth     -> gogolica.common.auth
gogolica.common   -> gogolica.common.util
zudov commented 6 years ago

For sure, let's go with gogolica.gen.* for all the stuff that's supposed to be run to generate the rest of the library.

gogolica.common.* can be used for stuff that's used by the generated code, and also imported and used by users. Also, how about going with gogolica.core.auth, gogolica.core.util instead of common? Quite similar to gogol-core and core is common to appear in clojure namespace names.

f-f commented 6 years ago

Sounds good 👍

So the final stance is:

gogolica.core     -> gogolica.gen.core
gogolica.model    -> gogolica.gen.model
gogolica.generate -> gogolica.gen.codegen
gogolica.auth     -> gogolica.core.auth
gogolica.common   -> gogolica.core.util
zudov commented 6 years ago

I'll move them around