Skip to content

Public dev‐meetings

Ulysse edited this page Jul 5, 2024 · 4 revisions

Next meeting: Thursday 25th of July at 5pm CEST

We have two talks scheduled 👀:

  • @octachron will present is work on structured compiler output
  • @nojb will present a tool used at Lexify to search by type in the codebase

Meeting notes of previous meetings

27/07/2024

Attendees

  • Ulysse (@voodoos)
  • Xavier (@xvw)
  • Pizzie (@PizieDust)
  • Sonja (@pitag-ha)
  • Florian Angeletti (@octachron)
  • Darius Foo (@dariusf)
  • Andrey Popp (@andreypopp)
  • Nicolas Ojeda Bär (@nojb).

Agenda

  • Introduction / Tour de table
  • Ongoing projects
  • project-wide occurrences demo
  • Issues/PR dicussion

Notes

Introduction / Tour de table

  • Ulysse: Lead maintainer on Merlin, contributes to OCaml LSP
  • Pizzie: Formerly intern in editor's team, now also a contributor
  • Sonja: Used to work on other OCaml tools, mostly ppxlib, has also worked on Merlin in the past, now does less technical work
  • Xavier: Has joined Tarides this year and is working on Merlin and OCaml LSP
  • Florian: Works on the compiler, particularly improving the error messages, also on tooling and integration
  • Andrey: Used to work on esy, has also worked on OCaml LSP. Thinks OCaml editor support is very good and is looking forward to contributing to some of the features.
  • Darius: PhD student in Singapore, generally interested in what's going on in the OCaml editors development. "It's in a very good state, much better state than a couple of years ago". Also seeing how to contribute.
  • Nicolas: Works at Lexify, where they are heavy users of OCaml, so they're interested in everything in OCaml.

Ongoing projects

LSP for text based editors
  • LSP is mostly primarily targeted on visual editors, but could also be very nice for text-based editors thanks to asynchronously and nice features.
  • However some UX work is required for this experience to be similar as the classic Merlin plugins, parts of the Merlin server API is more suitable for text-based editor's atm.
  • We want to enhance OCaml LSP to bridge that gap and eventually have extensions for the LSP plug-ins for Emacs and Vim, so that everyone can benefit from LSP.
Project-wide occurrences
  • Demo and presentation
  • Including the details that are still missing to implement a project-wide renaming feature.
  • We really encourage people to start using it! - dune build @build-index -w

More info can be found in the announce and wiki.

Q&A summary:

Q: What's the performance of building the index? Why does it not form part of the default build target?

A: We don't have extensive benchmarks. In the projects where we've benchmarked, there's no major performance issue. What makes it resource heavy: For every change, you don't only need to rebuild the unit's index, but also all its transitive dependency indexes. Planned: On running the occurrences query, Merlin could ask dune to rebuild.

Q: Big codebases: Dune takes about 20-30 secs to build, our monorepo about 5 min.

A: We are very interested on usability feedback for very large codebases!

Q: Does the shape result keep type information?

A: No

Q: What's the state of project-wide occurrences in Emacs?

A: The Merlin plug-ins have very basic support right now. merlin-project-occurrences in emacs and :MerlinOccurrencesProjectWide in vim.

PRs and issues discussion

What kind of features are people interested in?

Florian: Suggestion for next meeting: focus on structured compiler diagnostics

{
  "metadata" :
    { "version" : [1, 0], "valid" : "Invalid", "invalid_paths" : [[]]},
  "compiler_log" :
    {
      "error" :
        {
          "kind" : "Report_error",
          "main" :
            {
              "msg" :
                [["Open_box", ["V", 0]], ["Open_box", ["B", 0]],
                  ["Text", "This expression has type"],
                  ["Simple_break", [1, 2]], ["Open_tag", "Inline_code"],
                  ["Open_box", ["B", 0]], ["Text", "float"], "Close_box",

Sonja: Which part of the editor stack are Andrey and Darius intersted in contributing?

  • Andrey: At Ahref, they have both backend and frontend in OCaml, some of the code is shared between the two, Melange build frontend, OCaml builds backend. We'd love the editor tooling to understand which modality we're in. They've already done some work on dune's configuration on this. They've currently built an OCaml extension. Works very nicely with the whole Merlin stack. However, there are a few concrete feature use cases that fail. So I'd like to understand Merlin better to understand what's failing.

  • Darius: I'm interested in improving the interactions between editor support and toplevel. Also interested in the interaction with the debugger.

Ulysse: What do you think about these meetings?

  • Xavier: Very useful. Learned a lot about project-wide occurrences.

  • Florian: Yes, very nice, I'd like to see more of them. ( ❤️ )