# Forking Rust

**URL:** <https://internals.rust-lang.org/t/forking-rust/7874>\
**Category:** Uncategorized\
**Created:** [July 4, 2018, 6:58pm UTC](https://internals.rust-lang.org/t/forking-rust/7874 "2018-07-04T18:58:23Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Soni](https://avatars.discourse-cdn.com/v4/letter/s/a3d4f5/32.png) [@Soni](https://internals.rust-lang.org/u/Soni)\
**Post date:** [July 4, 2018, 6:58pm UTC](https://internals.rust-lang.org/t/forking-rust/7874/1 "2018-07-04T18:58:23Z")

</div>

would it be okay if I were to fork Rust? are there any guidelines about forking Rust?

I want to make a language in which Rust programs compile and run (so you benefit from everything in Cargo), but I don’t think my ideas would be a good fit for Rust proper.

(and forking is always a good thing, especially for big projects like Rust)

---

<div class="post-metadata">

**Author:** ![Ixrec](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/ixrec/32/6754_2.png) [@Ixrec](https://internals.rust-lang.org/u/Ixrec)\
**Post date:** [July 4, 2018, 7:00pm UTC](https://internals.rust-lang.org/t/forking-rust/7874/2 "2018-07-04T19:00:27Z")

</div>

> [@Soni](#):
>
> I want to make a language in which Rust programs compile and run (so you benefit from everything in Cargo)

If you want your language to be a strict superset of Rust, wouldn't the easiest and most productive way to prototype it be to write a wrapper around rustc and/or cargo that preprocesses all the .rs files, without actually forking anything?

(also, technically off-topic, but what sort of changes do you have in mind?)

---

<div class="post-metadata">

**Author:** ![mbrubeck](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/mbrubeck/32/174_2.png) [@mbrubeck](https://internals.rust-lang.org/u/mbrubeck)\
**Post date:** [July 4, 2018, 7:11pm UTC](https://internals.rust-lang.org/t/forking-rust/7874/3 "2018-07-04T19:11:40Z")

</div>

Legally speaking, the Apache License version 2.0 or the MIT license allows you to modify the code and distribute your modifications, as long as you follow the requirements in one of these licenses. (You can choose which one to use.) The Apache License includes both a **copyright** grant and a **patent** grant.

However, you cannot use the Rust [**trademarks**](https://www.rust-lang.org/en-US/legal.html) (including the name "Rust" and the Rust logo) to refer to modified versions of the Rust language without permission:

> Distributing a modified version of the Rust programming language or the Cargo package manager and calling it Rust or Cargo requires explicit, written permission from the Rust core team. We will usually allow these uses as long as the modifications are (1) relatively small and (2) very clearly communicated to end-users.

---

<div class="post-metadata">

**Author:** ![Soni](https://avatars.discourse-cdn.com/v4/letter/s/a3d4f5/32.png) [@Soni](https://internals.rust-lang.org/u/Soni)\
**Post date:** [July 4, 2018, 10:09pm UTC](https://internals.rust-lang.org/t/forking-rust/7874/4 "2018-07-04T22:09:41Z")

</div>

forking is good. I wanna remove (most) semicolons, and also have a strictly anti-discord (the s/texting app), pro-accessibility, pro-hacking (and by extension pro-forking) community.

---

<div class="post-metadata">

**Author:** ![kornel](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kornel/32/2711_2.png) [@kornel](https://internals.rust-lang.org/u/kornel)\
**Post date:** [July 5, 2018, 12:02am UTC](https://internals.rust-lang.org/t/forking-rust/7874/5 "2018-07-05T00:02:08Z")

</div>

If you want to have your own synax, I suggest adding ability to have syntax translators on top of Rust. It looks like a flavor of whole-module `proc_macro` could be it:

> [@Pre-RFC: first-class support for compile-to-Rust languages](https://internals.rust-lang.org/t/pre-rfc-first-class-support-for-compile-to-rust-languages/7610):
>
> There’s an ongoing meta discussion about accepting new language features. “Syntax sugar” (features that make Rust more pleasant to write, but don’t add anything that couldn’t be done with uglier syntax) seem to be the most common and the most controversial kind. JavaScript syntax had its catalyst in CoffeeScript. CoffeeScript was free to experiment with frivolous features that couldn’t have been added to JavaScript. Eventually JS distilled and adopted some of the most successful features (e.g. …

As for Discord, the Rust team is just trying it out. You don't need to use it either way, so forking the whole project over it seems overly dramatic.

---

<div class="post-metadata">

**Author:** ![Soni](https://avatars.discourse-cdn.com/v4/letter/s/a3d4f5/32.png) [@Soni](https://internals.rust-lang.org/u/Soni)\
**Post date:** [July 5, 2018, 2:21am UTC](https://internals.rust-lang.org/t/forking-rust/7874/6 "2018-07-05T02:21:48Z")

</div>

No, Rust doesn’t need extensible syntax, leading to centralization through uh [not sure the term for it, “dark design patterns” maybe?].

We need to decentralize Rust, to avoid the devs becoming too powerful.

We need forks.

---

<div class="post-metadata">

**Author:** ![gbutler](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/gbutler/32/3670_2.png) [@gbutler](https://internals.rust-lang.org/u/gbutler)\
**Post date:** [July 5, 2018, 2:34am UTC](https://internals.rust-lang.org/t/forking-rust/7874/7 "2018-07-05T02:34:52Z")

</div>

As near as I can tell the licenses permit forking. I don’t see why anyone would complain. If you make a better mouse-trap, you’ll catch more mouses. If you don’t, you’ll have dysfunctional traps and be out your time. If you don’t feel that the Rust community is meeting your needs, you can surely start your own fork. I doubt the Rust community forums would be much interested in hearing about it though, because, it would be “Off Topic” by definition.

---

<div class="post-metadata">

**Author:** ![gbutler](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/gbutler/32/3670_2.png) [@gbutler](https://internals.rust-lang.org/u/gbutler)\
**Post date:** [July 5, 2018, 2:37am UTC](https://internals.rust-lang.org/t/forking-rust/7874/8 "2018-07-05T02:37:24Z")

</div>

> [@kornel](#):
>
> As for Discord, the Rust team is just trying it out.

I'm sensing he meant discord in the sense of "sowing the seeds of discord" or a "discordant melody".

---

<div class="post-metadata">

**Author:** ![kornel](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kornel/32/2711_2.png) [@kornel](https://internals.rust-lang.org/u/kornel)\
**Post date:** [July 5, 2018, 8:39am UTC](https://internals.rust-lang.org/t/forking-rust/7874/9 "2018-07-05T08:39:27Z")

</div>

Haha, I forgot these services use real English words. I’ll cut him some Slack then 😉

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/system/32/14092_2.png) [@system](https://internals.rust-lang.org/u/system)\
**Post date:** [March 25, 2019, 8:30am UTC](https://internals.rust-lang.org/t/forking-rust/7874/10 "2019-03-25T08:30:28Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
