JetBrains invites developers to join the Fleet Public Preview Program

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • skiko

    Kotlin MPP bindings to Skia

    Fleet does not use Compose, but it does use Skiko[1], which also provides binding for Skia[2] (the native graphics library also used by Chrome & Flutter).

    The main difference between the libraries is that Skija provides Java/JVM bindings for Skia, whereas Skiko provides Kotlin bindings for Kotlin/JVM, Kotlin/JS, and Kotlin/Native targets. Of course Skiko's Kotlin/JVM bindings can be used with other JVM languages, not just with Kotlin.

    [1] https://github.com/JetBrains/skiko

    [2] https://skia.org/

  • rust-analyzer

    A Rust compiler front-end for IDEs

    More to the point. Sadly I can't locate a great article outlining all the problems, bt these quotes will do

    From rust-analyzer's main contributor [1]

    === start quote ===

    The essential complexity for a server is pretty high. It is known that compilers are complicated, and a language server is a compiler and then some.

    First, like a compiler, a language server needs to fully understand the language, it needs to be able to distinguish between valid and invalid programs. However, while for invalid programs a batch compiler is allowed to emit an error message and exit promptly, a language server must analyze any invalid program as best as it can. Working with incomplete and invalid programs is the first complication of a language server in comparison to a compiler.

    Second, while a batch compiler is a pure function which transforms source text into machine code, a language server has to work with a code base which is constantly being modified by the user. It is a compiler with a time dimension, and evolution of state over time is one of the hardest problems in programming.

    Third, a batch compiler is optimized for maximum throughput, while a language server aims to minimize latency (while not completely forgoing throughput). Adding a latency requirement doesn’t mean that you need to optimize harder. Rather, it means that you generally need to turn the architecture on its head to have an acceptable latency at all.

    === end quote ===

    Rust analyzer uses a custom parser [2]

    === start quote ===

    a hand-written recursive descent parser, which produces a sequence of events like "start node X", "finish node Y". It works similarly to kotlin's parser, which is a good source of inspiration for dealing with syntax errors and incomplete input. Original libsyntax parser is what we use for the definition of the Rust language. TreeSink and TokenSource traits bridge the tree-agnostic parser from grammar with rowan trees.

    === end quote ===

    [1] https://matklad.github.io/2022/04/25/why-lsp.html

    [2] https://github.com/rust-lang/rust-analyzer/blob/master/docs/...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • prettier

    Prettier is an opinionated code formatter.

    This looks really promising. But by far the biggest moat that Jetbrains is going to have to cross to get into VSCode territory is the plugin ecosystem. Personally I work on React projects so my first thought was: "is there a Prettier[1] plugin?". Looking through the landing page it looks like Plugins are in the works but until that is implemented, it's going to be hard adopting it.

    ALSO I just noticed this but can someone (ideally from JetBrains) explain what this line means: "Requires login and periodic connection to JetBrains servers to verify the project". Quite frankly this line is extremely alarming, are you saying that you're scanning my project to make sure it's not a "professional" project? I'm going to assume this line means that they are checking the IDE and not your source but I won't be using this product until I get an explanation for this. You can find this at the very bottom in the licensing and pricing section.

    [1]: https://prettier.io/

  • Skija

    Java bindings for Skia (by HumbleUI)

    So for some extra context, but Fleet is using Skija[1] and Compose[2] as a rendering an engine. Skija is a java wrapper for Skia and still does not support the full API. Compose is still relatively new and has not had nearly the amount of man hours devoted to it as Swing. This is just a technical preview, I'm sure there will be plenty of optimizations to come. I think it's pretty exciting to see Skija being used for a mainstream project!

    [1] https://github.com/HumbleUI/Skija

  • compose-multiplatform

    Compose Multiplatform, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.

  • Skia

    Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

    Fleet does not use Compose, but it does use Skiko[1], which also provides binding for Skia[2] (the native graphics library also used by Chrome & Flutter).

    The main difference between the libraries is that Skija provides Java/JVM bindings for Skia, whereas Skiko provides Kotlin bindings for Kotlin/JVM, Kotlin/JS, and Kotlin/Native targets. Of course Skiko's Kotlin/JVM bindings can be used with other JVM languages, not just with Kotlin.

    [1] https://github.com/JetBrains/skiko

    [2] https://skia.org/

  • intellij-community

    IntelliJ IDEA Community Edition & IntelliJ Platform

    Yes, both are Apache 2 licensed: https://github.com/JetBrains/intellij-community#readme (pycharm is in the "python" subdirectory). It used to be painless to build them both, but the recently doubled down on jps and now it's hit-or-miss and a ton more complicated, but I can attest it is possible

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts