<commit_before># mum

Currently on version: 0.1.0

Modern Update Manager (for git only at this time)

Gathers dependencies NON-recursively from the target repository using information that matches semver version numbers to tags in git repositories.

In a future major release mum may support recursive dependency fulfilment.

Mum's dependency resolution is only a subset of, but based heavily on the rules defined for [Node JS package definitions](https://docs.npmjs.com/files/package.json#dependencies).
See also [Npm semver](https://docs.npmjs.com/misc/semver)<commit_msg>Updated the readme with information about the motivation driving the project and the project's goals.<commit_after># mum

Currently on version: 0.1.0

Modern Update Manager (for git only at this time)

## Motivation

Today's software is often comprised of many sub-components and it can be a challenge to manage those dependencies and ensure smooth installation and updates.

Also, if you're like me you don't work with a single "stack" of software anymmore. You might leverage PHP, Python, NodeJS, Go, C, C++, etc. across different server environments.

There are many installation and dependency resolution systems in the wild:

* apt (Debian)
* yum (CentOS / RedHat)
* npm (NodeJS)
* Composer (PHP)
* pip (Python)
* gopm (Go)

These systems all have their place and mum is **not** trying to actually replace them.

Instead, the goal of mum is to give you a way to wrangle all those separate tools into an automated workflow.

Additionally, some software may be stashed away in private access git repositories and so none of the tools above are a good fit there either.

The overarching goal for mum is to provide a single interface with a clean and efficient way to deploy code to any environment from local machines up to production servers for any languages you work with.

Please be aware that this does **not** mean mum is written in all languages. Mum will remain as a nodeJS package that is capable of installing from git repositories.

---

NPM is a popular package manager and chances are; if you found this mum package you already know how npm dependency resolution works.

Because of that fact, mum aims to support at least a subset of the dependency resolution behavior that npm uses. Please note that mum has some distinct differences from the way npm works so in those areas the mum dependency resolution will differ as required.

* [Node JS package definitions](https://docs.npmjs.com/files/package.json#dependencies).
* [Npm semver](https://docs.npmjs.com/misc/semver)

## Goals

* Provide an update manager that can run on *nix and Windows.
* Language independence. Use the same install tool and update manager for any repository you can access.
* Triggers. React to installation and update triggers within your own software packages.
* Support recursive dependencies with cyclic dependency prevention.
* Support conflict detection in dependency resolution.
* Operate quickly using concurrency where possible. (e.g. clone from multiple repositories at once)
{'fraction_non_alphanumeric': 0.053442622950819675, 'fraction_numerical': 0.0019672131147540984, 'mean_word_length': 4.587912087912088, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2573450', 'n_tokens_mistral': 772, 'n_tokens_neox': 717, 'n_words': 441}