Hacker News new | ask | show | jobs
by natrius 3648 days ago
My current pet theory is that they obfuscated Urbit so much because otherwise, the artificial scarcity of address space would be unenforceable. As it is, you have to make a huge investment in learning their tech to understand everything, and if you wanted to launch a competing network, no one would help you establish your network effect. Everyone else who has gone through the same elaborate hazing ritual has developed enough camaraderie to keep the defection rate low. The profitable strategy is to cooperate, buy a star, and build software people will want.

I have some skepticism, but if Urbit and its peer-to-peer network are actually useful things, the incentive system for building useful apps for it exists. It might be strong enough.

1 comments

I feel like at any point this functionality becomes desirable it would be trivial to implement in any language humans actually use.
There's no reason a more comfortable language can't be implemented on Hoon; it's just that no one has done it yet, because no one has come along who both understands Hoon well enough to do it and finds Hoon unpleasant enough to bother.

This may mean Hoon once learned is easier to cope with than it looks (which I doubt, because it looks like vaguely Lisp-flavored assembly) or it may just mean that nobody like that has come along yet.

Also:

* pretty much everything actually useful is implemented as a jet

* the jets often don't actually match the supposed code they're accelerating (e.g. the Markdown jet has different bugs)

Worse, there is no formal spec or particular commitment to either the jets or the means by which the VM communicates with its host environment or nodes communicate with each other; this makes it impossible, not just impractical, to replace the environment with an alternative rather than merely wrap what exists - Nock on its own is simply not enough to build on.

Instead of the stated intent of giving you control of your own environment, the actual goal appears to be the opposite.

Communication between urbits appears to be well defined, although my lack of close familiarity with the codebase makes it impossible for me to point at precisely where; ask someone at Tlon, or someone in Urbit :talk. Communication between an urbit and its host is precisely defined by the u3 implementation.

The C standard library lacked a formal specification for over a decade after its creation. Lisp lacked one for almost thirty years. At least one of these should be an argument in favor of "build it first, formalize it later".

Isn't that just the Markdown jet? Or are there other examples I haven't yet heard about?