Skip to content

Community Guidelines

Andrew Johnson edited this page Nov 23, 2024 · 32 revisions

The LM community aims to be inclusive, but not smothering or over-bearing. When you are ready to interact with the larger community, here are some guidelines to set you up for success.

Respect Each Other And Each Others Time

LM is a loosely knit community. In such a diverse community it is important to set expectations to prevent us from wasting each others time. The most important resource in the LM community is the community members. Please try to be respectful of others and expect others to be respectful of you.

Fair Interactions

LM Core aims to create an environment where all stakeholders can build and thrive.

LM aims to provide a compiler backend that addresses the NxM problem of language frontends vs language backends. The LM project is written in LM and LSTS, but we try to avoid favoritism towards those languages. Similarly the LM project currently depends on an ANSI C backend and Posix APIs, but we try to limit the effect of those dependencies. LM aims to be nothing more than a fast well-typed macro assembler built on top of the logic of System F<: with Specialization.

When proposing to add support for a new frontend or a new backend, please consider:

  • who is going to write the new plugin?
  • who is going to maintain the new plugin?
  • does the plugin even need to be hosted inside the LM Core project? (can it live in an independent project?)
  • does the plugin require a code-commitment as to how things are structured inside LM Core?
  • what LM features does the plugin depend on?
  • what LM libraries does the plugin depend on?

When moving forward with a new plugin:

  • make sure that there are regression tests that cover the feature and library dependencies

Unlike [Net]Script

The first programming language to become widely adopted on internet browsers is what we now call JavaScript. While JS was being developed there was a corporate arms-race to add features but also to break the competitors interpreter. This mine-laying and sabotage created the often unfortunate feature set that we now call ECMAScript.

If LM contributors were transported back to that time, we may not be sure what to do differently. However, we are here now, and on friendly terms; so let's build something nice together.

Clone this wiki locally