-
Notifications
You must be signed in to change notification settings - Fork 110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Some terminology and basic concepts #188
Comments
So, since many of the ongoing efforts in making gx/gx-go more user-friendly involve the use and modifications of paths I would like to arrive at a clear and homogeneous terminology. The tricky part is to keep in mind that Gx should be language agnostic and clearly reflect that in the documentation, which I'm not going to do at the moment, in my mental model The objective is to subdivide the normal path of an installed package into different components that would make sense when reasoning about the code:
@Mr0grog I'm not sure how familiarized you are with the Gx package manager or its code, but any feedback you could add here (just from your experience and common sense) will be very valuable. |
Note: We also rewrite the import paths in |
Not sure what "checked into" means in this context. |
Sorry, I mean that they're not added to IPFS in the rewritten state. I like to point this out as |
To add to the README. I'll keep updating the questions (and hopefully answers too) as I read through the code. Any additions/corrections are more than welcome.
Terms:
Package: Any directory published through the
gx publish
command with its corresponding hash. This needs to be clearly differentiated from the Go concept of package, even thoughgx
is language-agnostic its main consumer right now isgx-go
so those two terms could be mixed up.DVCS Import: (Distributed?) Version Control System Import. I've mostly seen this in
gx-go
: path (or URI?) to import a package through its normal language package system, e.g.,go get $DVCS_Import
, whereDVCS_Import=github.com/whyrusleeping/gx
. Is this more aligned with the language or with the VCS? In the it's the second the example should begit clone $DVCS_Import
. In simple terms: it's where I get the package other than through IPFS.package.json
: This files serves multiple purposes. It identifies a directory as agx
package and provides (all?) the information about it.Dependencies. It's also a package. Install vs Import.
Paths: The term package name is used for the name of directory that was published, but I would like to clarify what is its relevance in how packages are handled, as in the IPFS world everything is completely identified with hashes. The
linkPackage
functions uses the terms$GOPATH/src/gx/ipfs/$hash/$pkgname
. How is a package identified? How important is the name of the directory inside the hash directory (which already uniquely identified the package)? And how is agx
path distinguished from the$GOPATH/src/$dvcsimport
path, is that the DVCS Import path?gx-go
vsgx
install paths, the second one adds thegx/ipfs
suffix (always?),gx-go
tool, generic name,env
tool? Isenv
normally the language name?Random topics:
Can
gx
work alone, or does it always need a companion language specific tool likegx-go
?Dependency handling.
It would be nice to add some explanation of how are paths rewritten, how is
gx-go link
used.Attributes of the base
package.json
, how does it distinguishes from agx-go
package.json
file.How does IPFS fit into all this? Some explanation of the
go-ipfs-api/shell.Shell
structure is needed, doesgx
use a local IPFS repo or talks directly to the gateway? (SeegetLocalAPIShell()
).Many topics actually belong to the
gx-go
repo but it would be hard in the first iteration to write to separate but complementary documents as the two repos are tightly couple together (in the sense that presenting an example using only thegx
command doesn't seem so relevant).The text was updated successfully, but these errors were encountered: