Congrats on the finishing the refactor!
I still feel that the nucleus that is routing needs more resources. It is after all the make or break of this project. Without it working smoothly, most of this work is of little use. Crust stands second in its current state IMO (works well). Apps while extremely important for overall adoption could also stand to wait. Had this been done earlier, I believe we would be in a much better position.
My suggestion would be to work furiously on routing with ALMOST all available resources. Then after stability and efficiency is achieved, break away from routing and split the resources between API finalization and Crust maturity. If and when routing shows issues then resources can be allocated to it proportional to the perceived manpower deemed necessary to achieve stability. Otherwise this pattern of very slow but steady development until about august of every year then a major refactor or delay until the beginning of the following year will likely continue.
Without routing, we only have apps, API’s, and libraries that cannot connect together. So in effect it’s what we already have now in a world without SAFEnet. App development will be blazing fast when enthusiastic devs know with confidence that their work will undoubtedly hit a working network. These people will, because of their enthusiasm, join in on API development as it is nowhere near as hard as routing. At this pace I see at the very least another year of tweaking before the network is efficient enough to label it BETA.
Given how new the recent refactored routing code is, it stands to reason that it will take even longer when you consider the fact that the previous routing library had been “though out” long before its implementation. In that time the better design wasn’t realized until a new mind (Andreas) was introduced. Surely this will happen again and again. This is my reasoning behind my suggestion. Everyone on the Maidsafe team is very competent. Given a short crash course I’m sure they could get to a point where they can better scrutinize the code and provide invaluable ideas regardless to their lack of specialization. They could speed code review, testing, and translate chunks of pseudo code created during brainstorming sessions into something usable in rust.
Money is limited and Routing is draining the community however exuberant some pretend to remain. If routing were completed given all available resources, the rest would naturally come together as it all requires less advanced programming capabilities. Even limping along financially; the knowledge and experienced gained from the routing battle would make it a breeze to finish off the remainder. Routing being like the CPU of any system. Without it nothing comes alive. Crust being the motherboard as it allows all the components to connect to the CPU and as a result to each other. I’m preaching to the choir of course.
I’m sure this post won’t change things but I thought I’d try. If routing is not secure and 90% reliable by august, I see the same pattern repeating itself. While it might THEN be true that there will be a bunch of cool shiny app available. They will then sit on the backburner awaiting something that should have been there from the start. Without reliable storage and transmission there is little reason to move from current solutions like Freenet. Those future changes will introduce further unfamiliarity at a much later date than would have POTENTIALLY otherwise occurred. Then the cycles repeats itself. Reiteration and refactoring is inevitable but it can be handled more quickly.
I would rather have a rock solid network (routing) with a an incomplete API and buggy apps that can be worked out by the greater community, than a perfect API and great apps that can only provide a freenet equivalent experience due to the routing layer that can ONLY be matured by a handful of specialists. Honestly, if the team found itself with 3 - 4 months left of funds how would that be handled if no investors or further funding were on the horizon? Wouldn’t it be logical to then devote all resources to the most important aspect of the network? If so, why wait or rather why have us wait until then?
Again I fully grasp the importance of all the other work being done, but routing is too experimental to have be developed with nearly the same level of resources as SAFE specific version of things proven to already work. Even Crust is a matter of building transport layers that punch through routers. Not a trivial task but nowhere near as uncharted as the desired performance and state of routing. Without routing any experimental aspect of an app can’t be tested. The only thing that can be done as of yet is to build their shell (GUI, Functions, etc).
I’m not here to be negative. I just feel that priorities could use a little rearrangement. Ultimately it is up to you @dirvine. If you still disagree and continue forward on the same path then all I can say is good luck and godspeed. I’m ever hopeful and cheering for you all. May the universe provide you all with the strength and clarity to make this dream a reality.
Cheers,