Increase weight range for child pages in book outlines (Book module) When a child page is added to a book via "Add child page" (node/add/{content-type}), the Weight drop-down field in the Book Outline tab has a range of -/+ 15. This is due to line 191 in web/core/modules/book/src/BookManager.php:

$form['book']['weight'] = [
  '#type' =&gt; 'weight',
  '#title' =&gt; $this-&gt;t('Weight'),
  '#default_value' =&gt; $node-&gt;book['weight'],
  '#delta' =&gt; max(15, abs($node-&gt;book['weight'])), // line 191
  '#weight' =&gt; 5,
  '#description' =&gt; $this-&gt;t('Pages at a given level are ordered first by weight and then by title.'),
 ];


When a child node is initially added, $node->book['weight'] is always 0, resulting in a #delta value of 15. #delta controls the min and max values in the Weight drop-down field mentioned above. There is no way to assign a weight higher than 15.

To simplify the work of non-technical editors repetitively adding chapters to books, we tell them to set the Weight value to the chapter number. This doesn't work for books with more than 15 chapters (which happens).

QUESTION: What is the correct, non-core-hacking way to set the limit to say, 25 in Drupal 8? (see my answer below)

AMENDMENT ADDED 2018-11-24

In addition to the issue expressed above, a related issue is that on the book outline reorder page (admin/structure/book/{book-nid}) there is a drop-down field for the weight of each child page. Child pages with a current weight within the range -/+ 15 get a range of -/+ 15 in their drop-down fields. Child pages with weights outside that range get a drop-down with the range increased to include their current weight.

This is due to lines 202, 203, and 235 in web/core/modules/book/src/Form/BookAdminEditForm.php:

$count = count($tree); // line 202 - count of all child pages for the book
$delta = ($count &lt; 30) ? 15 : intval($count / 2) + 1; // line 203

$form[$id]['weight'] = [
  '#type' =&gt; 'weight',
  '#default_value' =&gt; $data['link']['weight'],
  '#delta' =&gt; max($delta, abs($data['link']['weight'])), // line 235
  '#title' =&gt; $this-&gt;t('Weight for @title', ['@title' =&gt; $data['link']['title']]),
  '#title_display' =&gt; 'invisible',
  '#attributes' =&gt; [
    'class' =&gt; ['book-weight'],
  ],
];


The challenge with varying the weight range based on current weight is that it's not possible to assign a weight greater than 15 to a child page whose current weight is 15 or less because its drop-down allows a maximum of 15. I can add several child pages with weight 0, but I can't change any of them to 16. Maybe I'm missing something in the current user interface?

All of this said, there seems to be a fairly straightforward solution to both of these problems, explained in my answer below. Not knowing every detail of how the Book module works, there may be flaws in what I suggest. I'm using it right now and it seems to work well, but I welcome corrections or suggestions for improvement.
Many people agree it's a big accessibility problem, but it isn't easy to solve and there always seem to be some obstacle. 

I just posted about this, possible duplicate, very relevant for this question because the listed issues mention various methods on how to approach solving this and the obstacles you might encounter: How to increase book weight range for a same-level chapters. 

The simplest way to solve it might be to rely on an outside sorting method, like Weight, and not on overriding the Book module. I don't have enough expertise to evaluate the difficulty level to modify the Book code, it just seems that way reading the lines and between them on those threads.