Browsing Chromium's algorithms

98 views
Skip to first unread message

Geoffrey Vion

unread,
Jul 22, 2016, 7:04:35 AM7/22/16
to Chromium-discuss
Dear Chromium community,

I am Geoffrey and I work for a French startup called Deep Algo. I allow myself to open a topic on this Group. I hope this is the appropriate way and place. :)

As you know, we talk more and more about algorithms and many of the biggest companies in the world are basing their business model on them. Sometimes they are open sourced, sometimes not. But most of the time, they seem to be "black boxes" for people.

This is why we have created a tool that automatically extracts all the algorithms from a source code.
We also wanted to build a graphic version of this tool so that anybody could understand what we do. This is how we began with Chromium.

We extracted all of Chromium's 5000 algorithms and arranged them so you can "browse the browser" (sorry I like the pun :p).
The free demo is available here.

What we are now looking for in Paris is feedbacks from skilled users. Whether you love it or hate it, we would be very happy to gather all your remarks about this demo. 

If you need any help on accessing the tool or whatever, feel free to ask me in the comments. :)

The dev team (and myself) really hope you'll have fun with it.

Thank you very much and once again, moderators, please let me know if I should change anything in this topic.

Cheers!

Primiano Tucci

unread,
Jul 22, 2016, 2:05:38 PM7/22/16
to geoffr...@deepalgo.com, Chromium-discuss
Is there any key example that shows the best of this DeepAlgo in action?
Since you advertise chromium as a key case on your website I imagine you have some key example to show?

The UI looks all nice and everything. I tried to play with it a bit but unfortunately and all I got are beautiful diagrams which seem to connect completely random pieces of the codebase.
Is there any doc / guide that explains what this is trying to achieve?
Is there any commented screenshot of one of the many diagrams inferred from chrome which explains what I am looking at?

For instance https://demo.deepalgo.com/#/project/chromium/algorithm/810676020/ioca?last_q=base this seems a collection of completely random bits of the codebase.


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

Geoffrey Vion

unread,
Jul 27, 2016, 4:53:47 AM7/27/16
to Chromium-discuss, geoffr...@deepalgo.com, jerome...@deepalgo.com
Hi Primiano,

Thank you so much for your feedback !

We are still in a beta version (release the 5th of July) and are clearly expecting many such information to make the first official release a success.

So let me answer to your questions (Jerome from our R&D gave me some help)

The aim of DeepAlgo is to 
  1. 100% automatically extract the major concepts of a codebase 
  2. and produce a comprehensive view of the algorithms (or at least as simple as the codebase allows to).

The displayed diagram you've picked correspond to one of the major concept you're dealing with Chromium codebase ("base").

It has to be read from "Right-to-Left" : 
1) the Output layer corresponds to where the keyword "base" is mostly used as output
2) the Out condition layer corresponds to all business rules that lead to such output
3) the Action layer corresponds to the activities/mehtods where the condition lies
4) the Act condition layer corresponds to the conditions that leads the activities
5) the Input layer corresponds to the necessary input of the activities 

The question we are trying to answer is :" Given a problem, what are the major business rules and activities that solve it?" 
In our understanding the solution to a problem is : 
> where the relevant output are produced.

Now, about your feeling of being lost in apparently randomly linked pieces of codebase clearly means that we have a great improvement margin :-) 
No worries, it is motivation source for our Dev Team ! 

We maybe find a more readable use case if you search for more detailed concepts: 
1) The first thing that the search results informs us on is that linux is mostly linked to glibc

Images intégrées 1
2) In the displayed diagram https://demo.deepalgo.com/#/project/chromium/algorithm/578418060?last_q=linux, what i see is that the linux specificities are mostly handled in initialization or startup activities/methods: which makes sense


Concerning your question about Documentation : 
To tell you the truth : we are focus on our release (every week :-) ).
But we start to create some Tuto and Documentation.
By the way, you cand find our 1st Tutorial about A Poker Game Algortihms : https://youtu.be/UAY4P9oN97Y

I hope Deep Algo has less secret for you.

I am really interesting to know what do you expect about this kind of Sotware ?
What is lacking for a better exploration of algorithms? 

We can also manage a 15/20 mins skype meeting with jerome if you want more information.



Geoffrey

Geoffrey Vion

unread,
Jul 27, 2016, 4:54:43 AM7/27/16
to Chromium-discuss, geoffr...@deepalgo.com, jerome...@deepalgo.com

Torne (Richard Coles)

unread,
Jul 27, 2016, 6:21:18 AM7/27/16
to geoffr...@codecasesoftware.com, Chromium-discuss, geoffr...@deepalgo.com, jerome...@deepalgo.com
On Wed, 27 Jul 2016 at 09:53 Geoffrey Vion <geoffr...@codecasesoftware.com> wrote:
Hi Primiano,

Thank you so much for your feedback !

We are still in a beta version (release the 5th of July) and are clearly expecting many such information to make the first official release a success.

So let me answer to your questions (Jerome from our R&D gave me some help)

The aim of DeepAlgo is to 
  1. 100% automatically extract the major concepts of a codebase 
  2. and produce a comprehensive view of the algorithms (or at least as simple as the codebase allows to).

The displayed diagram you've picked correspond to one of the major concept you're dealing with Chromium codebase ("base").

I'm not sure that "base" is a "major concept". "base" is what we call our generic library code that's used by all the other components. It's mostly a grab bag of largely unrelated utility functions. It only exists in the actual code at all for namespacing purposes - we could manage without having an explicit "base" namespace at all.
 
It has to be read from "Right-to-Left" : 
1) the Output layer corresponds to where the keyword "base" is mostly used as output
2) the Out condition layer corresponds to all business rules that lead to such output
3) the Action layer corresponds to the activities/mehtods where the condition lies
4) the Act condition layer corresponds to the conditions that leads the activities
5) the Input layer corresponds to the necessary input of the activities 

But "base" doesn't *do* anything. It's just a bunch of tools that are used by other components. I'm not sure what "activities" or "business rules" could possibly be involved in it.

The main impression I got from looking at this is that it seems like you have a very different understanding of what an algorithm is than I do :)

Primiano Tucci

unread,
Jul 27, 2016, 6:53:04 AM7/27/16
to to...@chromium.org, geoffr...@codecasesoftware.com, Chromium-discuss, geoffr...@deepalgo.com, jerome...@deepalgo.com
>2) In the displayed diagram https://demo.deepalgo.com/#/project/chromium/algorithm/578418060?last_q=linux, what i see is that the linux specificities are mostly handled in initialization or startup activities/methods: which makes sense
Doesn't make a lot of sense to me. I expect Chrome to hit "Linux specificities" at all the time, when we draw pixels, when we write files, when we start threads, when we take locks and so on.

> I am really interesting to know what do you expect about this kind of Sotware ? 
I genuinely don't know what to expect (which, to be clear, is not a bad thing). I've seen that you created a tool that allows somehow to navigate in a codebase. I am always intrigued by new tools and ideas and gave a shoot to that. I think my problem is that I fail to understand what is the use case of this very nice looking tool. Is it targeting people who approach the  codebase for the first time? Is it targeting experts who know the codebase and want to make queries / get information out of that in a easier way?

>What is lacking for a better exploration of algorithms? 
So I think that the problem here is that I am not sure what you mean with "algorithm". technically everything is an algorithm. most of the code of chrome just moves bytes around, transforms data types, and plumbs calls from different layers. Not sure what counts as an "algorithm" here. Is printf an algorithm? If base::File (The utility class we use to read/Write files) an algorithm? is a Lock an algorithm? Is File::ErrorToString() (that converts numers to string) an algorithm?

> Given a problem, what are the major business rules and activities that solve it?" 
I'm afraid I have no concrete idea about what a "business rule" is. Any concrete example that matches the code?


Jerome Foret

unread,
Jul 28, 2016, 10:03:26 AM7/28/16
to Chromium-discuss, to...@chromium.org, geoffr...@deepalgo.com, jerome...@deepalgo.com
Hi Primiano and Richard

We really appreciate your very concrete feedbacks, I totally agree with both all your remarks and questions. If it is not clear at first glance then we have to make it clearer.... We will work it out hard and let you updated hopping it will better meet your interrogations?

Just to give you an insight of what we understand by algorithm in a more technical way:
An algorithm is a set of sequences that you own and that solves a problem. Therefore, in our understanding what matters is when do you assign values (solve a problem) and what are the sequences (call and conditions (what we call business rules) that you've wrote) that lead to such an assignation. In end, printf() isn't an algorithm because you are not the owner of printf, However the sequence if(args[1] == "hello"){ msg = "Say hello";}else{ msg= "Say goodbye";} printf(msg);
constitutes an algorithm in the sense that the developer designed a sequence of instructions to decide what msg to print.

Thank's again for the time you spent helping us. It really helped us :-)

Regards
Reply all
Reply to author
Forward
0 new messages