Search Unity

Needle Mirror — all UPM packages mirrored to GitHub

Discussion in 'Package Manager' started by fherbst, Dec 30, 2020.

  1. fherbst

    fherbst

    Joined:
    Jun 24, 2012
    Posts:
    780
    Hello everyone,

    since Unity is working on making packages harder to use every day,
    I'm happy to announce the availablity of our (third-party, not affiliated with Unity Technologies) package mirror:




    Needle Mirror
    allows for a number of Really Great Things™ that we'd hoped Unity would provide at some point but didn't want to wait for any longer:
    1. Compare package versions right on GitHub, without having to download first and then see whether you actually need the changes.
      Example — Compare ARFoundation 3.1.3 to 4.0.0-preview.3

    2. Easily see the order in which packages are published, including branching (ever wondered why ARFoundation 3.0.1 and 4.1.2 work while 3.1.4 is broken in your project?)
      Example — ARFoundation branches

    3. Browse changelogs written by the devs. While the technical writers do a great job, the dev changelog is usually more fine-grained and, at least to us, more helpful.
      Example — Cinemachine Changelog

    4. Easy forking. You still can follow updates relatively easy by rebasing to a newer version occasionally.
      Try it now — Fork the XR Interaction Toolkit

    5. Release overview. The GitHub releases page makes it easy to skim through a lot of package versions and see what happened when.
      Example — ARFoundation Releases

    6. Search across all package code with ease, using GitHub's tools.
      Example — Search across all releases
    In general, the idea is that most developers start as pure consumers of packages, but during the lifetime of their project(s) they need to work with those same packages — understand when and why to update, understand package changes, and potentially modify what Unity has provided.

    While Unity has "ok" tooling for consuming packages, discovering updates and working with releases is a very manual and difficult process. We're here to change that!


    How it works

    Essentially, we're
    1. automatically watching changes on the package registry and elsewhere
    2. mirror all released versions to a GitHub organization, which gives access to all of GitHub's tools to compare, fork, diff, ... package versions
    3. provide an easy way to watch and follow new package releases through a Twitter bot and a good old RSS feed

    You can help!

    • Spotted a package that is missing? Open an issue on GitHub!

    • Follow the twitter bot to show both us and Unity that you care about packages and being able to work with them, not just "consume" them as seems to be the ideal world Unity is looking for.

    • Have a feature idea or found a bug for Mirror? Reply here or open an issue!
    • Are you trying to work with packages (Unity's and custom ones), building a package workflow, and need help or guidance? Contact us!

    Roadmap & Future Work

    • Support for Core packages
      e.g. the SRPs will move to core in 2021 and might not be released via package registry anymore
    • Package Manager Extension
      gives easy access to changelogs, diffs, and forking

      upload_2020-12-30_16-44-4.png
      Sneak peak, work in progress for PackMan extension

    • Package Statistics Visualization
      allows to see the "health" of a package — how often is it updated? Is it still maintained?

      upload_2020-12-30_16-46-41.png
      The Twitter bot already gives a good first idea of this:


    For us alone, building Mirror has saved tremendous amounts of time that we otherwise had spent swearing about undocumented and breaking changes, the inability to properly modify packages, and the general clumsiness of the package discovery process.

    We really hope it's as helpful for you as it is for us!

    All the best, let's make the best out of packages!
    Felix (@hybridherbst) and Marcel (@marcel_wiessler) from Needle Tools
     
    Last edited: Sep 21, 2021
    ghtz, dimmduh1, _slash_ and 13 others like this.
unityunity