BabylonJS Repository Viewer

Hello all :slight_smile:

When a question is asked on this forum, it’s very common that a member of the team forwards to the expert of the considered topic, commenting something like cc @sebavan , cc @RaananW or cc @Deltakosh etc… And that had me curious about who has worked on which part of the repo :grin:


Yesterday night, playing with parsing the whole git repository with a Python script, I ended up with some funny stats based on the git blame of each file of the source !

So, here it is, have fun ! :arrow_right: BabylonJS Repository Viewer :arrow_left:

It’s 100% using BabylonJS of course, GUI included :slight_smile:


A few comments about the structure :

  • It’s based on the HEAD of master on the official repo
  • It’s using only the files inside /src/ folder of each subfodler. Any other file is not considered (for now…)
  • It’s computed using the git blame of each file :
    • Considering that git blame gives commit hash and user of each line of a file, it means that if commit B replaces a line of commit A, then commit A doesn’t exist anymore for this line.
    • To make it simple, any code from the past which as been deleted is not considered, which is why the total ammount of commits is arround 16k while the official repos claims about 43k commits
    • It’s the same on a user stat : commit count is only referring to existing lines in the current state of the master HEAD
    • To sum it up, it’s not perfect, the last commit to edit a line (ex : linting) takes the line for the stat regardless of the past
    • The profile pictures are directly loaded from Github at run time (my python script retrieved the Github user and avatar direct URL using the commit hash and some Github API requests)

I Already like the tool :grin:
For example : issue with XR, and wonder who are the bosses of XR ? Just click the XR folder, and BOOM :

You have the list of the 29 contributors :stuck_out_tongue:
Also, a click on a user opens its commit history on the Github official repo


I hope you will like this little tribute to this awesome team and it’s impressive work ! :slight_smile:
++
Tricotou

17 Likes

Ahah that is a nice view !!! but please refrain on ever tagging us as we prefer to do it within the team. It can help us to be mindful of vacations and such :slight_smile:

Ah yes, no worries, the goal of this project was to have a look on contributions per project, but it was not meant to ping the right person each time we have a question :slight_smile: I let you guys do this within the team !

(Ahah and sorry for this ping which is indeed a ping, I should have let a space between the @ and the name to give my example without actually pinging :grin:)

++
Tricotou

1 Like

ahahah, no worries I was glad to be pinged on it :slight_smile:

1 Like

Dude, this absolutely amazing!! I love it! :heart_eyes_cat:

One thing which needs to be fixed is when I scroll any of the lists the camera zooms as well.

1 Like

You can use isPointerBlocker = true to get around this.

I don’t know what your code looks like, but I can inject this code into the console to fix the problem.

scene.layers[0].texture.rootContainer.children[0].isPointerBlocker = true

3 Likes

one extra point for creativity! :smiley:

2 Likes

Thanks :smiling_face:

Yeah I had figured out this issue without the time to fix the double trigger UI scroll + Camera Zoom

Perfect ! Thanks a lot for the time save :grin: solved and pushed :heavy_check_mark:

3 Likes

Dude! I love it! this is excellent!!!
All using GUI! nice work man!

@PirateJC / @PatrickRyan : can we mention it on our doc? Maybe forum template?

3 Likes

I can add it as an example in the GUI sections.

4 Likes

Wow ! It would be an honor :relieved: Thanks
Maybe I’ll rework and clean a bit the code then, because here all is in a single index.js file since it was (again ^^) just a test for fun, which ended up in a bigger project :grin:

2 Likes

@Tricotou, I can certainly link to your project in the docs for GUI, but it would be good if there were a playground or code sample on GitHub that users can follow. Do you have anything like that? If not, we can still highlight the project on our community demos page of our web site. And if you want to rework it before we post it, I can certainly wait until you are ready. Thanks!

1 Like

@PatrickRyan what I would propose is :

  • I rework a bit the code on my side so that it’s neat & clean if someone has a look
  • I provide a playground which just creates the Top N contributors (bottom right of my site) based on a lighter version of the JSON data, which would be included as a single line in the PG.

What do you think ?

2 Likes

@Tricotou, this sounds great. We really want to show usable examples of code in the docs and this is a great use of Babylon GUI so would be a great learning tool for the docs. Thanks for your work in prepping it for us!

1 Like

wow @Tricotou this is an impressive visualization! It’s interesting to see the commits by regions of code. Looks like some renamed files didn’t carry history over to new folders, but it’s not something really likely worthwhile focusing on - it’s the graphical breakdown and that alone is really interesting!! cheers.

good use of GUI. I like your registerBeforeRender for text rotation with ArcRotate. I’m going to borrow that on some of my sample code!! :smile:

1 Like

Hello all :slight_smile:

@PatrickRyan :

  • I’m done with refactoring the code (same link) so you can share the link in the doc
  • Here is a Playground with a light version :
    • Data from embedded one-lined JSON (line 34)
    • Toggle sort method
    • Scrollviewer
    • Profile pics from Github

++
Tricotou

3 Likes

PR is up… Adding example to GUI page by PatrickRyanMS · Pull Request #1148 · BabylonJS/Documentation (github.com)

2 Likes