• 
      

    Add draft release notes for Djblets 5.0.

    Review Request #13795 — Created April 25, 2024 and submitted

    Information

    Djblets
    release-5.x

    Reviewers

    This change adds the draft release notes for Djblets 5.0.

    Built HTML and checked the output.

    Summary ID
    Add draft release notes for Djblets 5.0.
    This change adds the draft release notes for Djblets 5.0. Testing Done: Built HTML and checked the output. Reviewed at https://reviews.reviewboard.org/r/13795/
    af58a57d04a851a928130a6220123530a1a52fad
    Description From Last Updated

    We also now require Spina 3.1.x. This impacts extensions and any code importing our TypeScript.

    chipx86chipx86

    We need to mention that Ink is now required for applications consuming Djblets, and what needs to be done there.

    chipx86chipx86

    We removed a custom $.delay in favor of the jQuery one.

    chipx86chipx86

    For configforms, we should document how TypeScript code is now expected to import from this (we flattened the namespace).

    chipx86chipx86

    We fixed a focus recursion crash when there are multiple modalboxes on the screen using $.fn.modalBox.

    chipx86chipx86

    For datagrids: We now longer provide age1 through age5, month, or summary column styles.

    chipx86chipx86

    Djblets UI elements now support dark mode.

    chipx86chipx86

    Missing items for registries: Registries are now thread-safe (we should explain the implications and which parts), using a reentrant lock. …

    chipx86chipx86

    Sounds like we're saying "expand" too many times, can take out the "to expand".

    maubinmaubin

    Might sound better to say "... methods that subclasses can ..."

    maubinmaubin

    Let's also indicate what versions we've dropped.

    chipx86chipx86

    We should specify explicitly that 3.2 support has been removed, since this is a major change.

    chipx86chipx86

    Missing some text after the version.

    chipx86chipx86

    I realized, we assume the presence of this setting in our code, but we don't ever force it into existence …

    chipx86chipx86

    We should be specific about this being an issue in the form.

    chipx86chipx86

    We should :py:class: this.

    chipx86chipx86

    Since this is a development library, we probably need to go more into detail on this subject, link to the …

    chipx86chipx86

    We need to specify where this applies to, so people can know where use_distinct is set.

    chipx86chipx86

    :mailheader: role (legacy naming aside, this is the correct role to use).

    chipx86chipx86

    Should use :pypi: for the reference. Also, single backticks in ReST don't produce template literals, just broken references.

    chipx86chipx86

    We should reference the thing include_bundles is on. Should use: :py:attr:`Class.attr <path.to.Class.attr>`. Otherwise the context will be lost.

    chipx86chipx86

    This should use :pypi:.

    chipx86chipx86

    Same here.

    chipx86chipx86

    These need :py:func:.

    chipx86chipx86

    Two blank lines before reference definitions.

    chipx86chipx86

    This should reference the filter with :py:func:.

    chipx86chipx86

    These should reference using :py:class:.

    chipx86chipx86

    This should reference using :py:func:.

    chipx86chipx86

    Typo: "a new new items".

    chipx86chipx86

    This seems to be missing something?

    chipx86chipx86

    We should mention the version we removed.

    chipx86chipx86

    Keeping with prior releases, the second sentence should go in the description area. Makes it easier to skim.

    chipx86chipx86

    Same note as above. Also, it's not just the JavaScript, but anything outputting HTML as well. So maybe "consuming parts …

    chipx86chipx86

    We should also say that what this defaults to, and maybe give an example of changing this.

    chipx86chipx86

    Let's link to Ink.

    chipx86chipx86

    We don't really need it in the static media bundles. We just need it on the page. We're distributing as …

    chipx86chipx86

    :py:class:

    chipx86chipx86

    Literals require two backticks in ReST.

    chipx86chipx86

    This is far too dense to comfortably follow. It'll help readability a lot if we take these code samples and …

    chipx86chipx86

    These should be :py:meth:. since they're pointing to methods on a class. As-is, we're going to see the function names …

    chipx86chipx86

    Description should be in its own paragraph. Summary lines should be concise and scannable.

    chipx86chipx86

    This feels more like description content. Let's give it a more concise summary stating that we added the field, then …

    chipx86chipx86

    We should reference the class.

    chipx86chipx86

    These should be :py:meth:.

    chipx86chipx86

    Can we link nose, so there's context for anyone not familiar?

    chipx86chipx86

    Should be django.core.files.File.

    chipx86chipx86

    :py:meth:

    chipx86chipx86

    :py:meth:

    chipx86chipx86

    Should be split into a summary / description.

    chipx86chipx86

    Should be split into a summary / description list.

    chipx86chipx86

    Summary / description. The description isn't correct, though. I fixed this due to hitting it in production with the confirmation …

    chipx86chipx86

    Installation is always the first section in the release notes.

    chipx86chipx86

    Two blank lines between content and reference declarations.

    chipx86chipx86

    This will be 5.x, rather than 5.0.

    chipx86chipx86

    Let's explicitly document 0.5.x.

    chipx86chipx86

    This comment was resolved earlier, but we don't need data-theme= for Ink.

    chipx86chipx86
    maubin
    1. Ship It!
    2. 
        
    david
    chipx86
    1. 
        
    2. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      Let's also indicate what versions we've dropped.

    3. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      Missing some text after the version.

    4. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      I realized, we assume the presence of this setting in our code, but we don't ever force it into existence anywhere. We either need to either make this a breaking requirement for all consumers, or we need to conditionalize access in some form (which is error-prone to do in every single case).

      Let's discuss on Slack. We need a solution to this.

    5. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      We should be specific about this being an issue in the form.

    6. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      We should :py:class: this.

    7. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      Since this is a development library, we probably need to go more into detail on this subject, link to the affected methods.

    8. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
       
       
       
      Show all issues

      We need to specify where this applies to, so people can know where use_distinct is set.

    9. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      :mailheader: role (legacy naming aside, this is the correct role to use).

    10. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      Should use :pypi: for the reference.

      Also, single backticks in ReST don't produce template literals, just broken references.

    11. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      We should reference the thing include_bundles is on. Should use:

      :py:attr:`Class.attr <path.to.Class.attr>`.
      

      Otherwise the context will be lost.

    12. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      This should use :pypi:.

    13. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      Same here.

    14. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
       
       
      Show all issues

      These need :py:func:.

    15. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
       
       
      Show all issues

      Two blank lines before reference definitions.

    16. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      This should reference the filter with :py:func:.

    17. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      These should reference using :py:class:.

    18. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      This should reference using :py:func:.

    19. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      Typo: "a new new items".

    20. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
       
       
       
       
       
      Show all issues

      This seems to be missing something?

    21. 
        
    chipx86
    1. 
        
    2. Show all issues

      We also now require Spina 3.1.x. This impacts extensions and any code importing our TypeScript.

    3. Show all issues

      We need to mention that Ink is now required for applications consuming Djblets, and what needs to be done there.

    4. Show all issues

      We removed a custom $.delay in favor of the jQuery one.

    5. Show all issues

      For configforms, we should document how TypeScript code is now expected to import from this (we flattened the namespace).

    6. Show all issues

      We fixed a focus recursion crash when there are multiple modalboxes on the screen using $.fn.modalBox.

    7. Show all issues

      For datagrids:

      • We now longer provide age1 through age5, month, or summary column styles.
    8. Show all issues

      Djblets UI elements now support dark mode.

      1. Is enabling this as simple as defining data-ink-color-scheme="dark" data-theme="dark" in the HTML element?

      2. Yeah, and including Ink CSS. We only need the data-ink-color-scheme. The data-theme is a holdover and can be ignored in Djblets.

        Since we lack Ink docs, we can't really point anyone to that, but we could mention that Ink supports light, dark, and system themes.

    9. Show all issues

      Missing items for registries:

      1. Registries are now thread-safe (we should explain the implications and which parts), using a reentrant lock.
      2. Subclasses can override pre/post handlers for populate(), register(), unregister(), and reset(). Subclasses must move to this instead of overriding these methods in order to ensure thread safety.
      3. The populated attribute is deprecated. We now have a state attribute.
      1. I'm not sure I have the full picture of this in my head. Mind writing this part?

      2. Yeah, assign me a task and I'll write something up in a bit.

      3. * Registries are now thread-safe.
        
          Previously, it was possible for two threads to perform modifications to the registry at the same time. This could include populating the registry, resetting it, registering items, or unregistering items. Depending on the order of operations, this could lead to bad registry data, missing or duplicate items, or crashes.
        
          Now only one thread may make changes to a registry at a time. Other registries are blocked on the operation until the work is completed, and will consider the operation a success if another thread has made the same change.
        
        * Added new thread-safe methods subclasses can override to customize registry operations.
        
          Subclasses are no longer encouraged to override :py:meth:`~djblets.registries.registry.Registry.populate`, :py:meth:`~djblets.registries.registry.Registry.register`, :py:meth:`~djblets.registries.registry.Registry.unregister`, or :py:meth:`~djblets.registries.registry.Registry.reset`. Doing so is now deprecated.
        
          Instead, they are expected to override any or all of the following thread-safe methods:
        
          * :py:meth:`~djblets.registries.registry.Registry.on_item_registering`
          * :py:meth:`~djblets.registries.registry.Registry.on_item_registered`
          * :py:meth:`~djblets.registries.registry.Registry.on_item_unregistering`
          * :py:meth:`~djblets.registries.registry.Registry.on_item_unregistered`
          * :py:meth:`~djblets.registries.registry.Registry.on_populating`
          * :py:meth:`~djblets.registries.registry.Registry.on_populated`
          * :py:meth:`~djblets.registries.registry.Registry.on_resetting`
          * :py:meth:`~djblets.registries.registry.Registry.on_reset`
        
        * The state of the registry is now accessible via :py:attr:`Registry.state <djblets.registries.registry.Registry.state>`.
        
          This replaces the now-deprecated :py:attr:`Registry.populated <djblets.registries.registry.Registry.populated>`. The new state information can inform the caller as to whether the registry is pending population, currently populating, or ready for use (populated). See :py:class:`~djblets.registries.registry.RegistryState` for the state documentation.
        

        (Should double-check the references work.)

    10. docs/releasenotes/5.0.rst (Diff revision 2)
       
       
      Show all issues

      We should specify explicitly that 3.2 support has been removed, since this is a major change.

    11. 
        
    david
    david
    chipx86
    1. 
        
    2. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      We should mention the version we removed.

      1. We didn't remove any python versions.

      2. Oh, I thought we dropped 3.7. You're right. We did that in 6.0.

    3. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      Keeping with prior releases, the second sentence should go in the description area. Makes it easier to skim.

    4. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
      Show all issues

      Same note as above.

      Also, it's not just the JavaScript, but anything outputting HTML as well. So maybe "consuming parts of Djblets that use JavaScript or provide HTML, ..."

    5. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
       
      Show all issues

      We should also say that what this defaults to, and maybe give an example of changing this.

    6. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      Let's link to Ink.

    7. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      We don't really need it in the static media bundles. We just need it on the page. We're distributing as compiled CSS/JS files that can be used directly.

      I'd say, "Assuming you have added the Ink CSS file to your page, ..."

    8. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      :py:class:

    9. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      Literals require two backticks in ReST.

    10. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
       
       
      Show all issues

      This is far too dense to comfortably follow. It'll help readability a lot if we take these code samples and turn them into code blocks.

    11. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
       
       
       
       
       
       
      Show all issues

      These should be :py:meth:. since they're pointing to methods on a class.

      As-is, we're going to see the function names and not the parent classes. That mixed with us talking about two classes makes this a bit confusing.

      I'd suggest we break this into two paragraphs, one per class, and add a reference for the class we're talking about. So, instead of "datagrid subclasses can ...", do a :py:class: with the DataGrid class. And then same with the Column class.

    12. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
      Show all issues

      Description should be in its own paragraph. Summary lines should be concise and scannable.

    13. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
      Show all issues

      This feels more like description content. Let's give it a more concise summary stating that we added the field, then explain the field.

    14. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      We should reference the class.

    15. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
      Show all issues

      These should be :py:meth:.

    16. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      Can we link nose, so there's context for anyone not familiar?

    17. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      Should be django.core.files.File.

    18. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
      Show all issues

      :py:meth:

    19. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
      Show all issues

      :py:meth:

    20. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
      Show all issues

      Should be split into a summary / description.

    21. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
       
       
      Show all issues

      Should be split into a summary / description list.

    22. docs/releasenotes/5.0.rst (Diff revision 4)
       
       
       
       
      Show all issues

      Summary / description.

      The description isn't correct, though. I fixed this due to hitting it in production with the confirmation dialog for deleting a review within the Review Dialog. It blew up with crashes in the JavaScript console. Still operational, but we've been spamming crashes when bringing up a second dialog for many versions now.

    23. 
        
    david
    maubin
    1. 
        
    2. docs/releasenotes/5.0.rst (Diff revisions 1 - 5)
       
       
      Show all issues

      Sounds like we're saying "expand" too many times, can take out the "to expand".

    3. docs/releasenotes/5.0.rst (Diff revisions 1 - 5)
       
       
      Show all issues

      Might sound better to say "... methods that subclasses can ..."

    4. 
        
    david
    maubin
    1. Ship It!
    2. 
        
    chipx86
    1. Looks good! A few small changes.

    2. docs/releasenotes/5.0.rst (Diff revision 6)
       
       
       
      Show all issues

      Installation is always the first section in the release notes.

    3. docs/releasenotes/5.0.rst (Diff revision 6)
       
       
       
       
      Show all issues

      Two blank lines between content and reference declarations.

    4. docs/releasenotes/5.0.rst (Diff revision 6)
       
       
      Show all issues

      This will be 5.x, rather than 5.0.

    5. docs/releasenotes/5.0.rst (Diff revision 6)
       
       
      Show all issues

      Let's explicitly document 0.5.x.

    6. docs/releasenotes/5.0.rst (Diff revision 6)
       
       
      Show all issues

      This comment was resolved earlier, but we don't need data-theme= for Ink.

    7. 
        
    david
    david
    chipx86
    1. Ship It!
    2. 
        
    david
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-5.x (4368a6c)