News for hackers. Stuff that matters.
Re:Urbit: a personal cloud computer by amelius on Saturday November 08, 2014 @05:53PM (#8578400)
So let me get this straight. This project is going to define

1. A new computing model, similar to how combinators work.

2. A programming language which produces expressions involving these combinators.

3. An operating system built on the above.

4. A cloud computing environment built on the above.

Sorry, but while interesting, this sounds a little too ambitious, even by HN standards :)

Re:Urbit: a personal cloud computer by urbit on Saturday November 08, 2014 @06:24PM (#8578496)
Or as I sometimes say: "on the bottom it's a new kind of math, on the top it's a new kind of social network." This is kind of shameless hype but not as much as you might think.

Sounds like a 10-year research project, right? Actually I started working on Urbit in 2002, as a sort of "unsupervised PhD thesis." I figured it'd be done by 2008 or so.

We seeded a startup last fall and are busy turning a prototype into a product. You can now write a pretty decent web app in Urbit, but it's still too raw to stand the light of day. For instance, the network works, but we often run global flag days when we shut the whole planet down and change the protocol.

One of the main problems with Urbit is that extraordinary claims demand extraordinary evidence. If you're going to ship something this crazy, it has to work extremely well right out of the box. We had a sort of abortive non-launch last year when the project kind of got accidentally leaked, and decided we had to "unlaunch" and go back into quiet mode. I hate selling things I can't quite deliver.

Re:Urbit: a personal cloud computer by amelius on Saturday November 08, 2014 @06:31PM (#8578523)
But can you please explain why you couldn't use existing math (language and compiler) on the bottom layers (1 and 2) before replacing them by your own? That would help me understand the level of your ambition :)
Re:Urbit: a personal cloud computer by urbit on Saturday November 08, 2014 @07:16PM (#8578612)
Excellent question!

One, as we know from Church-Turing equivalence, lambda and infinitely many other models of computing have the same expressive power. That doesn't mean they have the same practical utility, though.

Lambda in its Lisp incarnation is actually a rather poor substrate for something like a Lisp machine, I think, because it doesn't layer very well. You can define quite a simple Lisp model, but when you want to turn it into a practical Lisp, you don't add another layer - you grow hair on top of the existing layer. You grow a little hair, you get Scheme; you grow a lot of hair, you get Common Lisp.

I've never seen a lambda model (Qi/Shen perhaps a partial exception, but even there the underlying model is not very simple) that layers a complex language on a simple kernel. I think this is because lambda defines abstractions like symbol tables and function calls, which are user-level language features, in the computational model. The bells and whistles get mixed up with the nice clean math.

Another example is the fact that a modern OS should present itself to the programmer as a single-level store, meaning effectively an ACID programming language in which every event is a transaction. So, you're not constantly moving data across an impedance mismatch from transient to persistent storage, each having its own very different type system and data model.

But, if you're building persistently stored data structures designed to snapshot efficiently and remain maintainable, you really want your data model to be acyclic and not require GC. This goes in a very different direction from almost all the dynamic language work of the last 50 years.

Or, for instance, if your system is designed to work and play well in a network world, it really ought to be able to be good at sending typed data over the network. And validating it when it gets to the other side. Your type system ought to be able to do the same job as an XML DTD or JSON schema or whatever. Well... this wasn't exactly a design requirement when people designed, say, Haskell.

I could go on - there's a lot of stuff like this that is built the way it is because it made very good sense in the 60s, 70s, 80s or 90s. But the requirements really have changed, I think.

Re:Urbit: a personal cloud computer by dasvadanya on Saturday November 08, 2014 @08:32PM (#8578761)
Can you, for example, spell out what you mean by "you really want your data model to be acyclic and not require GC"? What is cyclic about the "data model" in e.g. Go or Lua?
Re:Urbit: a personal cloud computer by Pxtl on Sunday November 09, 2014 @12:12AM (#8579179)
I can field that one. If a has A reference to B and B has a reference to C and C has a reference to A, then we have q cycle. Cycles play merry hell with garbage collectors and reference count destructors. Languages that force references to be a strict tree or DAG get cheap destruction in return - see C++ without pointers for example - I pop a local object off the stack and it's gone, along with all its children - no non-deterministic GC pause or delay, no Pythonic cycle check. Rust is built somewhat on this principle.
Re:Urbit: a personal cloud computer by urbit on Sunday November 09, 2014 @07:53PM (#8581488)
Right. The way I'd put it is: in system software, the iron law is that you don't make the programmer pay for anything she doesn't need to buy.

What you pay (GC) for the privilege of having pointer cycles in your data is grossly disproportionate to the benefit. Yes, there are a lot of things that are O(k) with pointer cycles and O(log n) without them. If what you buy from this optimization is worth the cost of GC, you are doing a lot of these things... a lot.

Re:Urbit: a personal cloud computer by pcmoore on Saturday November 15, 2014 @09:17AM (#8611710)
But looking through code there are lots of references to gc, mark and sweep. Even with acyclic data models memory has to be cleared.
Re:Urbit: a personal cloud computer by FreeFull on Sunday November 09, 2014 @08:08AM (#8579820)
Rust does let you do circular references with Cell<&T> or Rc<Weak<T>>, but yeah, the standard assumption is that there are no circular references.
Re:Urbit: a personal cloud computer by dasvadanya on Sunday November 09, 2014 @09:10AM (#8579923)
So "you really want your data model to be acyclic" means, "you want your programming language to forbid construction of cyclic data structures"? So, for example, connected graphs are not objects you can represent?
Re:Urbit: a personal cloud computer by urbit on Sunday November 09, 2014 @12:53PM (#8580359)
You can represent them symbolically, of course, as you do for instance in XML.
Re:Urbit: a personal cloud computer by Pxtl on Sunday November 09, 2014 @07:15PM (#8581398)
you can, but they become a special second-class type of reference separate from ownership.
Re:Urbit: a personal cloud computer by urbit on Monday November 10, 2014 @01:56AM (#8582328)
They do - but arguably being forced to define the distinction between direct hierarchical references, and symbolic links, helps constrain your data model and make it more rigorous.

Note that relational databases don't have back pointers either. All references between tables are symbolic. Last century, people tried to make databases that were general pointer graphs (google "network database" or "object database") - broadly speaking, it was a disaster.

Re:Urbit: a personal cloud computer by azeirah on Sunday November 09, 2014 @10:30AM (#8580053)
Did you mistype q cycle? I tried googling it, but found 0 relevant results.
Re:Urbit: a personal cloud computer by yebyen on Sunday November 09, 2014 @02:19PM (#8580576)
I have never heard of it either, but I know some hoon and it makes intuitive sense to me.

If I tell you a linked list of atoms (@) is made from this tile (type):

[p=@ q=*]

it becomes obvious, right?

[p=1 q=[p=2 ..]]

[p=1 q=[p=2 q=[p=3 q=[p=4 q=~]]]]

This should look like building a list from 1-4. There are no cycles, ~ is a terminator.

Q is the reference to the next item in the list.

This would constitute a cycle:

z=[p=1 q=[p=2 q=z]]

Re:Urbit: a personal cloud computer by yebyen on Sunday November 09, 2014 @02:22PM (#8580588)
My mistake, I think he meant to say "a cycle"
Re:Urbit: a personal cloud computer by Pxtl on Sunday November 09, 2014 @06:53PM (#8581343)
Oh, yeah. Sorry, typed that on phone. Just meant "a cycle".
Re:Urbit: a personal cloud computer by dasvadanya on Saturday November 08, 2014 @08:18PM (#8578733)
I love this comment, whether it is serious or satire.
Re:Urbit: a personal cloud computer by adamnemecek on Saturday November 08, 2014 @05:57PM (#8578413)
It also appears that the new language defines 0 as true and 1 as false: "A loobean, or just bean, is 0 or 1. 0 is yes, 1 is no:"

http://doc.urbit.org/doc/hoon/tut/1/

Reading this feels a lot like dropping acid.

That being said, I'm curious what will come out of this.

Re:Urbit: a personal cloud computer by tcdowney on Saturday November 08, 2014 @06:07PM (#8578445)
It's as if it were inspired by all of the bad parts of a Dan Friedman text. :)
Re:Urbit: a personal cloud computer by gojomo on Saturday November 08, 2014 @06:00PM (#8578420)
Here's an idea: maybe anyone accusing someone else of being "too ambitious" should share one of their own projects that demonstrates exactly the right level of ambition.
Re:Urbit: a personal cloud computer by pyre on Saturday November 08, 2014 @06:07PM (#8578442)
So in your opinion nothing is ever too ambitious? Or is it just that no one should every be allowed to utter the words "too ambitious?"
Re:Urbit: a personal cloud computer by gojomo on Saturday November 08, 2014 @06:47PM (#8578554)
No, some projects can be too ambitious, including even recklessly or dangerously ambitious. But I'd rather hear that judgement from someone with a reputation for appropriate, successful ambitiousness, and with some supporting reasoning.

The grandparent comment comes from a pseudonym linked to no evaluable projects. It offers a costless, totally-generic pooh-poohing of a real project as "too ambitious". But that project is actually shipping code that works, with 126 contributors, many with a known history of contributions in related spheres.

Against that, the comment even uses an appeal to "HN standards"! As if, we should all be discounting this sort of stuff, on its face.

I'd prefer "HN standards" encourage such ambition, backed with code – not casually mock it with a ascii-smiley.

Re:Urbit: a personal cloud computer by urbit on Sunday November 09, 2014 @06:15PM (#8581254)
Again, the contributor list in github is WAY misleading, because it accidentally somehow pulled in all the contributors of the libraries we bundled (eg, libuv). We need to fix this, I think.
Re:Urbit: a personal cloud computer by gojomo on Sunday November 09, 2014 @09:38PM (#8581786)
Thanks for the clarification; I hadn't noticed that caveat earlier.
Re:Urbit: a personal cloud computer by pyre on Sunday November 09, 2014 @12:53PM (#8580360)
> But that project is actually shipping code that works

I get that this is more than just vaporware, but getting past the vaporware stage doesn't necessarily prove that something isn't too ambitious. When something is attempting to enact a paradigm shift, the final goal is adoption/usage, not just a working/functional product.

Re:Urbit: a personal cloud computer by gojomo on Monday November 10, 2014 @03:51PM (#8586302)
You seem to be using "too ambitious" as a synonym for "unlikely to succeed". But that's something different.

"Too ambitious" implies someone shouldn't even be trying for this goal. That's a corrosive attitude, and I'd like it kept-in-check by a requirement that sources of such negativity show their reasoning/experience/work.

Re:Urbit: a personal cloud computer by urbit on Monday November 10, 2014 @01:45AM (#8582302)
+1 - I can't emphasize this too strongly.
Re:Urbit: a personal cloud computer by grayclhn on Sunday November 09, 2014 @12:48AM (#8579229)
I read less negativity into the comment than that.
Re:Urbit: a personal cloud computer by ctdonath on Saturday November 08, 2014 @06:13PM (#8578462)
That logic is like

X < Y => "oh, so X is always zero, huh?"

Re:Urbit: a personal cloud computer by pyre on Saturday November 08, 2014 @09:54PM (#8578949)
Nevermind the fact that the parent post believes its possible to quantify "exactly the right level of ambition," the poster believes that the only people that should be "allowed" to comment on whether or not something is too ambitious should be people that are currently undertaking ambitious projects themselves.

This smacks of privilege. Not everyone is or can be in a position to pursue ambitious projects. To say that these people should be barred from commentary is ridiculous.

Re:Urbit: a personal cloud computer by gojomo on Sunday November 09, 2014 @07:49AM (#8579777)
I've not suggested anyone be 'barred' from commentary.

Rather, if you want to dump generic negativity on a real, delivering project, you should justify why your negativity is relevant, for example by documenting your own related efforts.

If you want your cynicism to be respected, then yes, that's a privilege that needs to be earned. You can always say it, but it should be called-out as empty bullshit until backed with detailed reasoning or experience.

Re:Urbit: a personal cloud computer by GuiA on Saturday November 08, 2014 @05:54PM (#8578406)
s/This project is going to define/This project is defining/

There's code that you can run and can play with. It may sound super far fetched (and it is), but the guy behind it is putting sweat into it.

Re:Urbit: a personal cloud computer by amelius on Saturday November 08, 2014 @06:01PM (#8578423)
And what is the reason why an existing language and compiler doesn't suffice for 1 and 2?

For example, Haskell and GHC took decades to become what they are now (a powerful language and compiler). It seems quite wasteful to rebuild that work. If absolutely desired, Haskell can also be converted into combinator form, and vice versa, so why not use it? Seriously.

Re:Urbit: a personal cloud computer by cdcarter on Saturday November 08, 2014 @06:12PM (#8578457)
Because it's incredibly fun to work on? It's a brilliant VM once you wrap your brain around it, and the hackers behind it got to really try something new?
Re:Urbit: a personal cloud computer by implicit on Saturday November 08, 2014 @06:50PM (#8578562)
Judging by the documentation, Urbit looks to be less about leveraging pre-existing work and more about reinventing computer science and software engineering from the ground up.
Re:Urbit: a personal cloud computer by kazagistar on Sunday November 09, 2014 @04:52AM (#8579528)
They already basically have all of the above, as a working tech demo. They actually had it like a year ago or more, but bits are missing or in progress still.
Re:Urbit: a personal cloud computer by easytiger on Monday November 10, 2014 @06:34AM (#8583009)
Ambitious failures with technically brilliant visions have happened before. enlightenment is not easy.
Re:Urbit: a personal cloud computer by callahad on Saturday November 08, 2014 @05:54PM (#8578403)
Going to? All of those already exist and run, today. :)