I’m making progress on building maidsafe. I have started to build the other subprojects and to study the dependencies of subprojects on each other as a method to get orientated as to who is doing what for whom.
To this end I found some layer diagrams in various documents:Im trying to reconcile these in my mind.
maidsafe layer diagram from “The Architecture of the SAFE Network”
These is also a layer diagram on http://maidsafe.net/core-developers that is somewhat different.
Based on my own experience, I know that in the development of any project of any size there are design shifts as the people get smarter. The first question I have is which one is newer or more accurately reflects the current thinking.
Is it safe to assume that a subproject and a architecture layer are roughly the same?
I have drawn a quick dependency tree from cdash to help in my edification.
There may be mistakes since I created it by hand by looking at cdash screens. Im not smart enough yet to derive the dependency data directly from git.
Below are two views of the same tree created from the cdash subproject dependency screens.
A couple of things have surprised me:
The “Third Party” subproject does not have any dependencies on any other subproject. I would have thought that it would use the top most subprojects or at least the API.
What is the role of CRUX? Is it an alternative to or refactor of; rudp and passport. I ask this based in where it is in the dependency tree.
Im confused about the subprojects vaultManager vs vault_manager; Note the underscore in the name. Is one the vestigial remains of a rename/refactor or a future version. Which is which?
I’m guessing that a subproject roughly corresponds to a layer and that common is not really a layer but a library of stuff used by all layers.
I am surprised at the amount of interconnection between subprojects. They seem more like functional islands and not really layers.
I wonder where the utilities are like local_network_controller?
How come only launcher has a dependency on encrypt? I would not have guessed that.
8)Could launcher be thought of as an third party app that is being done in house?
Are there any class diagrams or documentation, like javadoc or doxygen?
I guess it would actually be cppdoc:-)
So many question. I’m just starting to figuring out where maidsafe fits in the world of DAO, a new acronym to me, and where I might fit in maidsafe and in the DAO world in general.
sorry for the dump but thank you for your time.