# Approval and merging process

**URL:** <https://forum.crystal-lang.org/t/approval-and-merging-process/2020>\
**Category:** Crystal Contrib\
**Created:** [April 28, 2020, 7:27pm UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020 "2020-04-28T19:27:42Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [April 28, 2020, 7:27pm UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/1 "2020-04-28T19:27:42Z")

</div>

Hey guys, some of you might have already noticed a delay in merging approved PRs lately. The idea is to ensure more stability and give more chances for additional reviewers to take a look at the proposed changes.

As before, a pull request still needs green CI and two approvals from core team members (one if the author is a member) to be accepted. Once accepted, it is added to the current milestone. But we won’t directly merge it on master. The milestoning signals the PR is scheduled to be merged soon and gives everyone a last chance for comments. The wait time is suppposed to be about a day at minimum but may depend on the gravity of the change. So please don’t ping every core team member 24 hours after the milestone was added. But feel free to bump the PR if a reasonable amount of time has passed without reactions.

This process is a guideline and not a strict rule so there might be occassional exceptions within reason. Urgent infrastructure fixes for example should be expected to skip the line.

---

<div class="post-metadata">

**Author:** ![ComputerMage](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/computermage/32/719_2.png) [@ComputerMage](https://forum.crystal-lang.org/u/ComputerMage)\
**Post date:** [April 29, 2020, 8:28pm UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/2 "2020-04-29T20:28:10Z")

</div>

BTW, how is the promotion process to Core Members works these days? 🙂  
More Core Members can increase development velocity.

---

<div class="post-metadata">

**Author:** ![IEatReturnValues4](https://avatars.discourse-cdn.com/v4/letter/i/ecae2f/32.png) [@IEatReturnValues4](https://forum.crystal-lang.org/u/IEatReturnValues4)\
**Post date:** [April 29, 2020, 11:17pm UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/3 "2020-04-29T23:17:54Z")

</div>

> [@ComputerMage](#):
>
> More Core Members can increase development velocity.

If/when new core members get added, I hope they follow the principles and core values set forth by the founders of this language.

---

<div class="post-metadata">

**Author:** ![ComputerMage](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/computermage/32/719_2.png) [@ComputerMage](https://forum.crystal-lang.org/u/ComputerMage)\
**Post date:** [April 29, 2020, 11:29pm UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/4 "2020-04-29T23:29:37Z")

</div>

> [@IEatReturnValues4](#):
>
> If/when new core members get added, I hope they follow the principles and core values set forth by the founders of this language.

This is what Code Guidelines for. Every reputable open source project has them.

---

<div class="post-metadata">

**Author:** ![IEatReturnValues4](https://avatars.discourse-cdn.com/v4/letter/i/ecae2f/32.png) [@IEatReturnValues4](https://forum.crystal-lang.org/u/IEatReturnValues4)\
**Post date:** [April 29, 2020, 11:57pm UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/5 "2020-04-29T23:57:12Z")

</div>

Not sure about that. Code guidelines are not really the same as core beliefs instilled into a language by its creators.

---

<div class="post-metadata">

**Author:** ![j8r](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/j8r/32/111_2.png) [@j8r](https://forum.crystal-lang.org/u/j8r)\
**Post date:** [April 30, 2020, 12:04am UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/6 "2020-04-30T00:04:28Z")

</div>

Thanks a lot for the communication @straight-shoota, really appreciated 🙂

This explanation or a link to them could be added in a PR template, in order not to discourage contributors, especially new ones.

I can propose a PR in this way. In parallel to this, may I suggest to move forward on [https://github.com/crystal-lang/crystal/pull/8934](https://github.com/crystal-lang/crystal/pull/8934) (please, core members can edit the PR)

---

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [April 30, 2020, 12:12am UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/7 "2020-04-30T00:12:59Z")

</div>

I don’t think this matters for the PR template. Let’s not complicate things there. Maybe we could explain the PR lifecycle somewhere (`CONTRIBUTING.md` ?) and that might be a place to reference this.

---

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [April 30, 2020, 10:45am UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/8 "2020-04-30T10:45:12Z")

</div>

> [@ComputerMage](#):
>
> BTW, how is the promotion process to Core Members works these days? 🙂

Essentially the core team looks for candidates and decides who is going to be invited.

> [@ComputerMage](#):
>
> More Core Members can increase development velocity.

It probably has some effect, but I think this is often overrated. You don’t need merge power for making great contributions, reviewing other’s PRs and taking part in discussions. Engaged non-core members can and do actually do a lot of work.  
Still helps to have more core team members, but I don’t think we should expect anyone to do more work just because joining the core team.

---

<div class="post-metadata">

**Author:** ![ComputerMage](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/computermage/32/719_2.png) [@ComputerMage](https://forum.crystal-lang.org/u/ComputerMage)\
**Post date:** [April 30, 2020, 12:36pm UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/9 "2020-04-30T12:36:37Z")

</div>

Ok. Got it. I just felt that sometimes it takes forever to get some core team approvals.  
But that is just how I felt when I was working on debugger.

---

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [April 30, 2020, 1:57pm UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/10 "2020-04-30T13:57:06Z")

</div>

Doing proper reviews is unfortunately an incredibly time-consuming task. Your work on the debugger was amazing! But it resulted in a huge PR with many changes to be reviewed and it progressed over time. It’s also a very specific topic. For example I have a very limited understanding of how all this debugging stuff works, so I couldn’t possibly do a substantial review on that.  
Honestly, I was quite a bit surprised by how fast it finally got to be merged. Unfortunately, there have been other precedents where it takes much more time to finish some bigger tasks.  
I’m not sure what’s the best way to improve on that. More reviews would certainly help and I might remind everyong that not only core team members can do reviews =)

---

<div class="post-metadata">

**Author:** ![jgaskins](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/jgaskins/32/2449_2.png) [@jgaskins](https://forum.crystal-lang.org/u/jgaskins)\
**Post date:** [May 1, 2020, 1:46am UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/11 "2020-05-01T01:46:04Z")

</div>

> [@ComputerMage](#):
>
> I just felt that sometimes it takes forever to get some core team approvals.

This may seem like a bad thing, but it’s actually really great. Changes to core APIs, the compiler, etc, require a lot of scrutiny because it has a massive influence on the entire ecosystem and can change how everyone works with Crystal. So I’m glad the core team takes the time to think this stuff through that deeply, even when their scrutiny impedes features I’m pushing to improve my own work.

I frequently have to be that person at work that asks the “what about …” questions to try to avoid shooting ourselves in the foot later, so I have a whole lot of appreciation for not only how important that is but also how thankless. 🙂

---

<div class="post-metadata">

**Author:** ![ComputerMage](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/computermage/32/719_2.png) [@ComputerMage](https://forum.crystal-lang.org/u/ComputerMage)\
**Post date:** [May 1, 2020, 2:05am UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/12 "2020-05-01T02:05:17Z")

</div>

I really like thoroughness of the approval process. I also know that core team is very busy with their day jobs, so I thought that more people will help doing it faster.

---

<div class="post-metadata">

**Author:** ![IEatReturnValues4](https://avatars.discourse-cdn.com/v4/letter/i/ecae2f/32.png) [@IEatReturnValues4](https://forum.crystal-lang.org/u/IEatReturnValues4)\
**Post date:** [May 1, 2020, 2:50am UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/13 "2020-05-01T02:50:26Z")

</div>

> [@jgaskins](#):
>
> Changes to core APIs, the compiler, etc, require a lot of scrutiny because it has a massive influence on the entire ecosystem and can change how everyone works with Crystal.

Would be nice if more open source projects followed this same principle

---

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [May 21, 2021, 11:08am UTC](https://forum.crystal-lang.org/t/approval-and-merging-process/2020/14 "2021-05-21T11:08:59Z")

</div>

The updated approval and merging process guidelines have been published to the contributing instructions ([#10683](https://github.com/crystal-lang/crystal/pull/10683)):

> <https://github.com/crystal-lang/crystal/blob/master/CONTRIBUTING.md#making-good-pull-requests>
