What is mojo exactly?

1,939 views
Skip to first unread message

Alexis Menard

unread,
Jan 21, 2015, 7:53:27 AM1/21/15
to chromium-dev, blin...@chromium.org
Hi,

(Sorry for cross-posting, but I think this impacts Blink as well)

I believe non-Googler are very interested in figuring out what exactly Mojo is?

At the time it was announced, it was proposed as a better IPC system
for Chromium and some abstraction on processes/renderers in Chrome.
This was back in 2013.

These days we can find some mojo code in Chromium, however it hasn't
been very clear on how it's going to be integrated, what's the roadmap
for it (note that this is a potential big change that impact us
downstream pretty hard) and the overall scope.

According to http://www.chromium.org/developers/design-documents/mojo
, Mojo is doing much more than the original scope (there is a shell,
there is a concept of Mojo apps,...).

Then 4th hit on Google contains a github repository mentioning "mojo"
https://github.com/domokit/mojo and it seems to build something using
mojo and part of Chromium. It seems it drags a lot of requirements in
Mojo.

Overall the message is confusing for us. Can this be clarified?

Thanks.

Mike Frysinger

unread,
Jan 21, 2015, 8:08:35 AM1/21/15
to darkt...@gmail.com, chromium-dev, blink-dev


--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
    http://groups.google.com/a/chromium.org/group/chromium-dev

Darin Fisher

unread,
Jan 21, 2015, 1:28:13 PM1/21/15
to Alexis Menard, chromium-dev, blink-dev
Integration in Chromium has been somewhat dampened by incomplete multi-process support. A lot of progress has been made on that front, and you should see Mojo being used more in Chromium in the future.

Mojo is an IPC system and also an architecture for modularizing code. The "app" model is just that, a description of how to modularize code. You should expect to see it being used as infrastructure in Chromium. At the moment, however, you can also execute these modules outside of Chromium via what's call the mojo_shell. Think of it like content_shell, only mojo_shell is much more primitive.

Personally, I also think the IDL (.mojom files) used in Mojo IPC and the associated JS language bindings could be very useful over HTML5 message ports. I can imagine web sites taking advantage of it to have more structured communication between origins. This could get extra interesting with navigator.connect(), for example.

-Darin

Nelson Silva

unread,
Jan 28, 2015, 5:59:41 AM1/28/15
to chromi...@chromium.org, ale...@menard.io, blin...@chromium.org
Hi,

As a non-googler I just found out about Mojo a couple of days ago but from what I've seen so far it seems like a great approach to cross-platform modular polyglot app development.

The IPC enforces decoupling and I could certainly see myself developing GLES2 apps in JS/Dart and reusing the gpu services!

Could you please elaborate on the "At the moment, however, you can also execute these modules outside of Chromium via what's call the mojo_shell" bit ? Does this mean this is something that will be removed at a point or do you expect to make this available to everyone soon ?

Thank you!

Darin Fisher

unread,
Jan 28, 2015, 9:51:20 AM1/28/15
to Nelson Silva, Alexis Menard, blink-dev, chromi...@chromium.org

That was poorly worded on my part. What I meant was that today you can only run these modules using the standalone mojo_shell. I don't see that going away.

-Darin

Nelson Silva

unread,
Jan 28, 2015, 10:11:04 AM1/28/15
to chromi...@chromium.org, nelson...@gmail.com, ale...@menard.io, blin...@chromium.org
Nice.

I was also wondering if you'd be pushing mojo for usage outside Chromium or for now you're just focusing on Chromium's use case ?
I'm particularly interested in the GLES2 + command buffer which would solve my "issues" with the current single-threaded approach in existing JS / Dart bindings.
This would provide a very cool cross-platform framework for games and graphics programming.

Finally, regarding Android, I noticed that you currently need to be rooted to run the mojo_shell. Is this something that's permanent, meaning that mojo would have to be provided by the system itself, or is there a "workaround" that enables you to package and run a mojo app without root ?

Thanks,

  Nelson

Darin Fisher

unread,
Jan 28, 2015, 10:18:37 AM1/28/15
to Nelson Silva, Alexis Menard, blink-dev, chromi...@chromium.org

Probably best to move this thread over to mojo...@chromium.org. Please direct technical questions about mojo over there.

The system is being built for both standalone use and use by chromium. In an ideal world, chromium might even be built entirely on top of the standalone system, but it can also just use parts of the system as it does now.

-Darin

Reply all
Reply to author
Forward
0 new messages