summary refs log tree commit diff
path: root/.github (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Fix complement tests using the wrong path (#12933)Michael Telatynski2022-06-011-1/+1
|
* Test Synapse against Complement with workers. (#12810)reivilibre2022-05-311-20/+40
| | | Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Use `docker/metadata-action` to generate docker image tags (#12573)Henry2022-05-051-19/+11
| | | | | | | Update the "Build docker images" GitHub Actions workflow to use `docker/metadata-action` to generate docker image tags, instead of a custom shell script. Signed-off-by: Henry <97804910+henryclw@users.noreply.github.com>
* Allow unused ignores in "bleeding edge" CI (#12576)David Robertson2022-04-292-0/+5
| | | | | | | | | | | | | | | | * Allow unused ignores in "bleeding edge" CI Where "bleeding edge" means the Twisted Trunk and Latest Deps jobs. Follow up from #12531. Resolves #12574. * Use `--extras all` in latest deps mypy CI Twisted trunk job already does this. Missed in #12531. * changelog
* Revert accidental direct-to-develop commits.David Robertson2022-04-282-5/+0
| | | | | | This reverts commit 5a320baa45b8e826e52bdd6cadadfad727ab0357. This reverts commit f282d5fc1185dde3f9ec31c49b630cff962545d7. This reverts commit ce6ecdd4b4939fd99418bc949b40c01d39480489.
* Use `--extras all` in latest deps mypy CIDavid Robertson2022-04-281-0/+1
| | | | | | Twisted trunk job already does this. Missed in #12531.
* Allow unused ignores in "bleeding edge" CIDavid Robertson2022-04-282-0/+4
| | | | | | | Where "bleeding edge" means the Twisted Trunk and Latest Deps jobs. Follow up from #12531. Resolves #12574.
* Remove unused `# type: ignore`s (#12531)David Robertson2022-04-271-6/+2
| | | | | | | | | | | | | | | | | | | | | | Over time we've begun to use newer versions of mypy, typeshed, stub packages---and of course we've improved our own annotations. This makes some type ignore comments no longer necessary. I have removed them. There was one exception: a module that imports `select.epoll`. The ignore is redundant on Linux, but I've kept it ignored for those of us who work on the source tree using not-Linux. (#11771) I'm more interested in the config line which enforces this. I want unused ignores to be reported, because I think it's useful feedback when annotating to know when you've fixed a problem you had to previously ignore. * Installing extras before typechecking Lacking an easy way to install all extras generically, let's bite the bullet and make install the hand-maintained `all` extra before typechecking. Now that https://github.com/matrix-org/backend-meta/pull/6 is merged to the release/v1 branch.
* Dump setuptools; correct pyproject version number (#12478)David Robertson2022-04-201-1/+1
|
* Add CI job to act as a canary for testing against latest dependencies (#12472)David Robertson2022-04-201-0/+156
| | | Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Use poetry lockfile in twisted trunk CI job (#12425)David Robertson2022-04-131-12/+34
| | | | | | Fixes #12458 Co-authored-by: Sean Quah <seanq@element.io> Co-authored-by: Dan Callahan <danc@element.io>
* Run "main" trial tests under poetry (#12438)David Robertson2022-04-121-13/+13
| | | | | | | | | | | * Run "main" trial tests under poetry Olddeps and twisted trunk tests are handled in separate PRs. The PyPy config is a best-effort only; it's completely untested. Pulled out from #12337. * Changelog
* Run lints under poetry in CI; remove lint tox jobs (#12434)David Robertson2022-04-121-13/+7
| | | Co-authored-by: Dan Callahan <danc@element.io>
* Poetry: select olddeps using `poetry` (#12407)David Robertson2022-04-121-2/+3
| | | Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Move complement setup stuff into the Synapse repo (#12404)Richard van der Hoff2022-04-111-17/+1
| | | | | | Fixes matrix-org/complement#330 (or it will, once we remove the old files). It's not quite a lift-and-shift: I've also taken the opportunity to get rid of the custom CA that we used to use to sign the TLS certs, which has been superceded by the CA exposed by Complement.
* CI: Fix the export-data job to run under poetry (#12418)David Robertson2022-04-081-2/+3
| | | Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* CI: Get the portdb job to run under poetry (#12412)David Robertson2022-04-081-1/+2
|
* Update mdbook to 0.4.17 (#12339)Andrew Morgan2022-04-051-1/+1
| | | Update mdbook (the tool used to render the documentation website) to version 0.4.17.
* Nuke the tox `packaging` job (#12334)David Robertson2022-03-311-1/+0
|
* Remove references to "msc2403" (#12165)Andrew Morgan2022-03-301-1/+1
|
* Re-enable test concurrency on Complement (#12283)kegsay2022-03-241-1/+1
|
* Fix CI not attaching source distributions and wheels to the GitHub releases. ↵reivilibre2022-03-081-1/+2
| | | | (#12131)
* Switch the `tests-done` job to an Action (#12161)Richard van der Hoff2022-03-071-21/+9
| | | | I've factored it out for easier use in other workflows.
* Changelog (#12153)David Robertson2022-03-041-0/+1
|
* Enable MSC2716 Complement tests in Synapse (#12145)Eric Eastwood2022-03-031-1/+1
| | | Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
* Enable MSC3030 Complement tests in Synapse (#12144)Eric Eastwood2022-03-031-1/+1
| | | | | The Complement tests for MSC3030 are now merged, https://github.com/matrix-org/complement/pull/178 Synapse implmentation: https://github.com/matrix-org/synapse/pull/9445
* Add suffices to scripts in scripts-dev (#12137)David Robertson2022-03-022-4/+4
| | | | | | | | | * Rename scripts-dev to have suffices * Update references to `scripts-dev` * Changelog * These scripts don't pass mypy
* Detox, part 1 of N (#12119)David Robertson2022-03-011-3/+10
| | | | * Don't use `tox` for `check-sampleconfig` * Don't use `tox` for check-newsfragment
* Tidy the building of sdists and wheels (#12051)David Robertson2022-02-222-28/+3
| | | | | * Don't build distribution pkgs in tests.yml * Run `release-artifacts` on release branches * Use backend-meta workflow for packaging
* Prepare for rename of default complement branch (#11971)Richard van der Hoff2022-02-111-3/+3
| | | use `HEAD` rather than hardcoding `master`
* Run Complement tests sequentially (#11910)kegsay2022-02-041-1/+1
| | | | | | | | | | | Since #11811 there has been general Complement flakiness around networking. It seems like tests are hitting the wrong containers. In an effort to diagnose the cause of this, as well as reduce its impact on this project, set the parallelsim to 1 (no parallelism) when running tests. If this fixes the flakiness then this indicates the cause and I can diagnose this further. If this doesn't fix the flakiness then that implies some kind of test pollution which also helps to diagnose this further.
* CI: run Complement on the VM, not inside Docker (#11811)kegsay2022-01-251-10/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * CI: run Complement on the VM, not inside Docker This requires https://github.com/matrix-org/complement/pull/289 We now run Complement on the VM instead of inside a Docker container. This is to allow Complement to bind to any high-numbered port when it starts up its own federation servers. We want to do this to allow for more concurrency when running complement tests. Previously, Complement only ever bound to `:8448` when running its own federation server. This prevented multiple federation tests running at the same time as they would fight each other on the port. This did however allow Complement to run in Docker, as the host could just port forward `:8448` to allow homeserver containers to communicate to Complement. Now that we are using random ports however, we cannot use Docker to run Complement. This ends up being a good thing because: - Running Complement tests locally is closer to how they run in CI. - Allows the `CI` env var to be removed in Complement. - Slightly speeds up runs as we don't need to pull down the Complement image prior to running tests. This assumes GHA caches actions sensibly. * Changelog * Full stop * Update .github/workflows/tests.yml Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> * Review comments * Update .github/workflows/tests.yml Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Skip the initial amd64-only Docker build (#11810)Richard van der Hoff2022-01-241-12/+2
| | | | | PyNaCl's recent 1.5.0 release on PyPi includes arm64 wheels, which means our arm64 docker images now build in a sensible amount of time, so we can skip the amd64-only build.
* Drop support for and remove references to EOL Python 3.6 (#11683)Shay2022-01-212-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * remove reference in comments to python3.6 * upgrade tox python env in script * bump python version in example for completeness * upgrade python version requirement in setup doc * upgrade necessary python version in __init__.py * upgrade python version in setup.py * newsfragment * drops refs to bionic and replace with focal * bump refs to postgres 9.6 to 10 * fix hanging ci * try installing tzdata first * revert change made in b979f336 * ignore new random mypy error while debugging other error * fix lint error for temporary workaround * revert change to install list * try passing env var * export debian frontend var? * move line and add comment * bump pillow dependency * bump lxml depenency * install libjpeg-dev for pillow * bump automat version to one compatible with py3.8 * add libwebp for pillow * bump twisted trunk python version * change suffix of newsfragment * remove redundant python 3.7 checks * lint
* Invite PR submitters to credit themselves (#11744)David Robertson2022-01-131-0/+1
| | | Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
* Use buildkit's cache feature to speed up docker builds (#11691)Richard van der Hoff2022-01-121-0/+2
| | | Having spent much of the last week attempting to run complement tests from somewhere with damp string instead of internet... something had to be done.
* Prettier complement logs (#11707)kegsay2022-01-101-1/+2
| | | | | * Prettier complement logs * Changelog
* Drop EOL python 3.6 from CI (#11595)Shay2021-12-211-6/+6
| | | | | | | | | | | * remove python 3.6 and postgres 9.6 from github workflow * remove python 3.6 env from tox * newsfragment * correct postgres version * add py310 to tox env list
* Support the stable /hierarchy endpoint from MSC2946 (#11329)Patrick Cloke2021-11-291-1/+1
| | | | | | This also makes additional updates where the implementation had drifted from the approved MSC. Unstable endpoints will be removed at a later data.
* Return the stable `event` field from `/send_join` per MSC3083. (#11413)Patrick Cloke2021-11-291-1/+1
| | | | | This does not remove the unstable field and still parses both. Handling of the unstable field will need to be removed in the future.
* Publish a `develop` docker image (#11380)Richard van der Hoff2021-11-191-1/+4
| | | | I'd find it helpful to have a docker image corresponding to current develop, without having to build my own.
* Update outdated links in `PULL_REQUEST_TEMPLATE.md` (#11225)Dirk Klimpel2021-11-011-4/+5
|
* Fix broken export-data admin command and add a test for it to CI (#11078)Hillery Shay2021-10-181-0/+29
| | | Fix broken export-data admin command and add a test for it to CI
* Always dump logs from trial during CI. (#11068)Patrick Cloke2021-10-122-0/+8
| | | Instead of only dumping them if trial passes.
* Fix CI to run the unit tests without optional deps (#11017)Erik Johnston2021-10-081-3/+6
| | | | | This also turns off calculating code coverage, as we didn't use it and it was a lot of noise
* Add the synapse-core team as code owners (#10994)Brendan Abolivier2021-10-061-0/+2
| | | Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
* Run CI with Python 3.10 and Postgres 14 (#10992)David Robertson2021-10-051-7/+7
|
* Clear our destination directories before copying files to GitHub pages. (#10869)Patrick Cloke2021-09-211-1/+0
| | | This should fix stale deleted files being still accessible.
* GHA: reintroduce an env var for `$GITHUB_HEAD_REF` (#10659)David Robertson2021-09-201-0/+1
| | | This should ensure GHA runs synapse against the same-named sytest branch
* Avoid duplicate issues from Twisted trunk failures (#10672)Dan Callahan2021-08-231-1/+2
| | | | | | | | | | | | | | | | | | Setting `update_existing: true` in the `create-an-issue` GitHub Action will avoid opening duplicate issues if an open issue already exists with an identical title. If no open issues match the title, then a new issue will be created. This helps avoid spamming our issue tracker should there be a failure when testing against Twisted's trunk. This PR also pins the SHA of the `create-an-issue` action to mitigate the risk of a malicious actor gaining access to JasonEtco's account. See GitHub's page on security hardening third party actions for more: https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions Signed-off-by: Dan Callahan <danc@element.io>
* Run a nightly CI build against Twisted trunk. (#10651)Richard van der Hoff2021-08-231-0/+89
| | | This creates a GHA workflow which runs at 8am every day, and runs mypy, trial and sytest against Twisted's current trunk. If any of the jobs fail, it opens an issue.
* Remove buildkite-era commentDavid Robertson2021-08-121-3/+0
|
* portdb also uses coverage, so provide $TOP thereDavid Robertson2021-08-121-0/+2
|
* set TOP in sytest containersDavid Robertson2021-08-111-0/+1
|
* Rename ci to .ciDavid Robertson2021-08-111-3/+3
|
* Remove buildkite from portdb CI testsDavid Robertson2021-08-101-7/+1
|
* Remove unused BUILDKITE_BRANCH env varDavid Robertson2021-08-101-1/+0
|
* Move sytest worker-blacklist to ci directoryDavid Robertson2021-08-101-1/+1
|
* check-newsfragment: pass pr number explicitlyDavid Robertson2021-08-101-4/+2
| | | | | use PULL_REQUEST_NUMBER instead of BUILDKITE_PULL_REQUEST remove the other user of BUILDKITE_PULL_REQUEST, namely merge_base_branch.sh
* Move test_old_deps.sh to new ci dirDavid Robertson2021-08-101-1/+1
|
* Don't fail CI when lint-newfile job was skipped (#10529)Erik Johnston2021-08-051-1/+6
|
* Fix the `tests-done` github actions step, again (#10512)Richard van der Hoff2021-08-021-9/+12
|
* Use new go test running syntax for complement. (#10488)Patrick Cloke2021-07-271-1/+1
| | | Updates CI and the helper script t ensures all tests are run (in parallel).
* Enable docker image caching for the deb build (#10431)Richard van der Hoff2021-07-261-4/+35
|
* Merge branch 'release-v1.39' into developErik Johnston2021-07-231-1/+1
|\
| * Fix an error in the docker workflow (#10461)Richard van der Hoff2021-07-221-1/+1
| |
* | Cancel redundant GHA workflows (#10451)Richard van der Hoff2021-07-222-0/+8
| |
* | Fix the tests-done Github Actions job (#10444)Richard van der Hoff2021-07-221-1/+18
|/
* Move the docker image build to Github Actions (#10416)Richard van der Hoff2021-07-211-0/+72
| | | | it's flaky on circleCI, and having to manage multiple CI providers is painful.
* Add a github actions job recording success of other jobs. (#10430)Richard van der Hoff2021-07-201-0/+12
|
* Make GHA config more efficient (#10383)Richard van der Hoff2021-07-142-15/+20
| | | | | | | | A few things here: * Build the debs for single distro for each PR, so that we can see if it breaks. Do the same for develop. Building all the debs ties up the GHA workers for ages. * Stop building the debs for release branches. Again, it takes ages, and I don't think anyone is actually going to stop and look at them. We'll know they are working when we make an RC. * Change the configs so that if we manually cancel a workflow, it actually does something.
* Github Actions workflow to attach release artifacts to release (#10379)Richard van der Hoff2021-07-131-1/+27
|
* Build the python release artifacts in GHA tooRichard van der Hoff2021-07-131-3/+23
|
* build debs in GHA (#10247)Richard van der Hoff2021-07-121-0/+44
| | | GHA workflow to build the debs
* Merge branch 'master' into release-v1.38Richard van der Hoff2021-07-071-30/+27
|\
| * build the docs for master (#10323)Richard van der Hoff2021-07-071-31/+28
| |
* | Create an index.html file when generating a docs build (#10242)Andrew Morgan2021-06-241-1/+6
|/ | | | | | | | | Currently when a new build of the docs is created, an `index.html` file does not exist. Typically this would be generated from a`docs/README.md` file - which we have - however we're currently using [docs/README.md](https://github.com/matrix-org/synapse/blob/394673055db4df49bfd58c2f6118834a6d928563/docs/README.md) to explain the docs and point to the website. It is not part of the content of the website. So we end up not having an `index.html` file, which will result in a 404 page if one tries to navigate to `https://matrix-org.github.io/synapse/<docs_version>/index.html`. This isn't a really problem for the default version of the documentation (currently `develop`), as [navigating to the top-level root](https://matrix-org.github.io/synapse/) of the website (without specifying a version) will [redirect](https://github.com/matrix-org/synapse/blob/a77e6925f26597958eccf0ef9956cb13c536e57e/index.html#L2) you to the Welcome and Overview page of the `develop` docs version. However, ideally once we add a GUI for switching between versions, we'll want to send the user to `matrix-org.github.io/synapse/<version>/index.html`, which currently isn't generated. This PR modifies the CI that builds the docs to simply copy the rendered [Welcome & Overview page](https://matrix-org.github.io/synapse/develop/welcome_and_overview.html) to `index.html`.
* Deploy a documentation version for each new Synapse release (#10198)Andrew Morgan2021-06-181-0/+33
| | | | | | | | | This PR will run a new "Deploy release-specific documentation" job whenever a push to a branch name matching `release-v*` occurs. Doing so will create/add to a folder named `vX.Y` on the `gh-pages` branch. Doing so will allow us to build up `major.minor` releases of the docs as we release Synapse. This is especially useful for having a mechanism for keeping around documentation of old/removed features (for those running older versions of Synapse), without needing to clutter the latest copy of the docs. After a [discussion](https://matrix.to/#/!XaqDhxuTIlvldquJaV:matrix.org/$rKmkBmQle8OwTlGcoyu0BkcWXdnHW3_oap8BMgclwIY?via=matrix.org&via=vector.modular.im&via=envs.net) in #synapse-dev, we wanted to use tags to trigger the documentation deployments, which I agreed with. However, I soon realised that the bash-foo required to turn a tag of `v1.2.3rc1` into `1.2` was a lot more complex than the branch's `release-v1.2`. So, I've gone with the latter for simplicity. In the future we'll have some UI on the website to switch between versions, but for now you can simply just change 'develop' to 'v1.2' in the URL.
* Use the matching complement branch when running tests in CI. (#10160)Patrick Cloke2021-06-111-5/+23
| | | | | | | | | | | This implements similar behavior to sytest where a matching branch is used, if one exists. This is useful when needing to modify both application code and tests at the same time. The following rules are used to find a matching complement branch: 1. Search for the branch name of the pull request. (E.g. feature/foo.) 2. Search for the base branch of the pull request. (E.g. develop or release-vX.Y.) 3. Search for the reference branch of the commit. (E.g. master or release-vX.Y.) 4. Fallback to 'master', the default complement branch name.
* Update Complement run with Synapse-supported MSC-related build tags (#10155)Andrew Morgan2021-06-091-1/+1
| | | | | This PR updates the build tags that we perform Complement runs with to match our [buildkite pipeline](https://github.com/matrix-org/pipelines/blob/618b3e90bcae8efd1a71502ae95b7913e6e24665/synapse/pipeline.yml#L570), as well as adding `msc2403` (as it will be required once #9359 is merged). Build tags are what we use to determine which tests to run in Complement (really it determines which test files are compiled into the final binary). I haven't put in a comment about updating the buildkite side here, as we've decided to migrate fully to GitHub Actions anyhow.
* Compile and render Synapse's docs into a browsable, mobile-friendly and ↵Andrew Morgan2021-06-031-0/+31
| | | | searchable website (#10086)
* github actions: summarize Sytest results in an easy-to-read format (#10094)Richard van der Hoff2021-06-021-2/+2
| | | ... using the script from matrix-org/sytest#1052
* Fix GitHub Actions lint for newsfragments (#10069)Dan Callahan2021-05-261-0/+6
| | | | | * Fix GitHub Actions lint for newsfragments Signed-off-by: Dan Callahan <danc@element.io>
* Fix port_db on empty db (#9930)Richard van der Hoff2021-05-101-1/+1
| | | | ... and test it.
* Proof of concept for GitHub Actions (#9661)Dan Callahan2021-04-091-0/+322
| | | Signed-off-by: Dan Callahan <danc@element.io>
* bug report template: move comments into comment (#8030)Richard van der Hoff2020-08-051-2/+2
|
* Make it clearer that #synapse:matrix.org is our support channel (#7379)Brendan Abolivier2020-05-012-3/+10
| | | | | | | This PR moves the "support is in #synapse:matrix.org" in the bug report template outside of the comment as some people seem to ignore what's in the comments, and phrase it a bit more like the support request template. It also adds a default issue template that says the same thing. It's also adding a notice about the security disclosure to both the default template and the bug report one. It also adds a badge to the top of the README with an alt text saying about the same message if the badge doesn't load (e.g. if matrix.org is slow). Fixes #6826
* Add tips for the changelog to the pull request template (#6663)Andrew Morgan2020-01-161-1/+5
|
* Markdownification and other fixes to CONTRIBUTING (#6461)Andrew Morgan2019-12-041-4/+4
|
* Add contributer docs for using the provided linters script (#6164)Jason Robinson2019-11-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Add lint dependencies black, flake8 and isort These are required when running the `lint.sh` dev scripts. Signed-off-by: Jason Robinson <jasonr@matrix.org> * Add contributer docs for using the providers linters script Add also to the pull request template to avoid build failures due to people not knowing that linters need running. Signed-off-by: Jason Robinson <jasonr@matrix.org> * Fix mention of linter errors correction Co-Authored-By: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> * Add mention for installing linter dependencies Co-Authored-By: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> * Remove linters from python dependencies as per PR review Signed-off-by: Jason Robinson <jasonr@matrix.org>
* Update the issue template for new way of getting server version (#6051)Richard van der Hoff2019-09-191-9/+13
| | | | | | cf #4878
* Merge remote-tracking branch 'origin/master' into release-v1.1.0Richard van der Hoff2019-07-022-5/+6
|\
| * Update github templatesRichard van der Hoff2019-06-251-2/+3
| |
| * Update SUPPORT.mdRichard van der Hoff2019-06-251-3/+3
| |
* | Liberapay is now officially recognised, update FUNDING.yml (#5386)Andrew Morgan2019-06-091-1/+2
| |
* | Add a sponsor button (#5382)Andrew Morgan2019-06-071-0/+3
|/ | | Add a sponsor button with links to matrixdotorg's patreon and liberapay accounts.
* Add zwsp in bug report template (#4811)Richard van der Hoff2019-03-061-6/+6
| | | | | Inserts a zero-width space in the `-->` which isn't supposed to close a comment. This used to be here but it got lost in d86826277d764217311d0d34a8e6143d09237a94.
* Update PR template to use absolute links (#4341)Aaron Raimist2019-01-021-2/+2
| | | | | | | | | | * Update PR template to use absolute links Signed-off-by: Aaron Raimist <aaron@raim.ist> * Add changelog Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Fix caseAaron Raimist2018-11-131-1/+1
| | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Add SUPPORT.mdAaron Raimist2018-11-131-0/+3
| | | | https://help.github.com/articles/adding-support-resources-to-your-project/
* Add a pull request template and add multiple issue templatesAaron Raimist2018-11-134-10/+53
| | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Update ISSUE_TEMPLATE.mdRichard van der Hoff2018-07-241-2/+3
| | | request backticks for logs
* Exclude the github issue template from our sdist (#2440)Richard van der Hoff2017-09-051-0/+47
PR #2413 added an issue template, but just adding files to the project directory upsets the packaging scripts: we need to explicitly include or exclude them. Move the template into a .github directory to make that easy, and to de-clutter the root a bit.