diff --git a/.mega-linter.yml b/.mega-linter.yml index 6bf22fe3f2..cd9c595e0c 100644 --- a/.mega-linter.yml +++ b/.mega-linter.yml @@ -10,9 +10,9 @@ ENABLE_LINTERS: - MARKDOWN_MARKDOWNLINT - MARKDOWN_MARKDOWN_TABLE_FORMATTER - SPELL_CSPELL + - SPELL_LYCHEE - YAML_PRETTIER - YAML_YAMLLINT - - SPELL_LYCHEE SPELL_CSPELL_DISABLE_ERRORS: true SHOW_ELAPSED_TIME: true diff --git a/.projector/workItemTemplates/engineering-fundamentals.yml b/.projector/workItemTemplates/engineering-fundamentals.yml index f0822a936f..190efebc28 100644 --- a/.projector/workItemTemplates/engineering-fundamentals.yml +++ b/.projector/workItemTemplates/engineering-fundamentals.yml @@ -53,7 +53,7 @@ items: The process for design reviews should be documented and available to the whole team from the outset of the project. This story is to explicitly document that process in the team's [working - agreement](https://microsoft.github.io/code-with-engineering-playbook/agile-development/team-agreements/working-agreements/readme/) + agreement](https://microsoft.github.io/code-with-engineering-playbook/agile-development/team-agreements/working-agreement/) acceptanceCriteria: - Design review process is well-documented within the working agreement diff --git a/.projector/workItemTemplates/kubernetes-at-the-edge.yml b/.projector/workItemTemplates/kubernetes-at-the-edge.yml index ef20696968..853e10913c 100644 --- a/.projector/workItemTemplates/kubernetes-at-the-edge.yml +++ b/.projector/workItemTemplates/kubernetes-at-the-edge.yml @@ -55,7 +55,7 @@ items: description: Some container networking interfaces are only supported on certain OSes. There may also be special networking requirements - name: Evaluate CNI options type: task - description: Calico provides a full networking stack but support on Windows has some limitations (https://docs.projectcalico.org/getting-started/windows-calico/limitations) + description: Calico provides a full networking stack but support on Windows has some limitations (https://docs.tigera.io/calico/latest/getting-started/kubernetes/windows-calico/limitations) - name: As a cluster operator, I want to ensure the network design does not interfere with application networking requirements so that applications can function properly on the cluster type: story acceptanceCriteria: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9a6b395c0..442e57e2e4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,7 @@ If you are unsure if your content will match this playbook, you are welcome to c ## General guidance - Quality is more important than quantity -- Write in a way that you would want someone else to explain something to you. Use [`plain english`](http://www.plainenglish.co.uk/how-to-write-in-plain-english.html) +- Write in a way that you would want someone else to explain something to you. Use [`plain language`](https://www.plainlanguage.gov/) - Be friendly, technical, professional and concise - Communicate as engineers, not marketing; we want to share what we learned, not "sell" our ideas - Don't recreate introductory content, link to it diff --git a/docs/agile-development/advanced-topics/collaboration/pair-programming-tools.md b/docs/agile-development/advanced-topics/collaboration/pair-programming-tools.md index 80540a83d6..79f1be8ad0 100644 --- a/docs/agile-development/advanced-topics/collaboration/pair-programming-tools.md +++ b/docs/agile-development/advanced-topics/collaboration/pair-programming-tools.md @@ -20,7 +20,7 @@ With its cloud-based infrastructure, GitHub Codespaces presents a highly efficie ### Visual Studio Live Share -[Visual Studio Live Share](https://code.visualstudio.com/learn/collaboration/live-share) is specifically designed for pair programming and enables you to work on the same codebase, in real-time, with your team members. The arduous process of configuring complex setups, grappling with confusing configurations, straining one's eyes to work on small screens, or physically switching keyboards is not a problem with LiveShare. This solution enables seamless sharing of your development environment with your team members, facilitating smooth collaborative coding experiences. +[Visual Studio Live Share](https://learn.microsoft.com/en-us/visualstudio/liveshare/) is specifically designed for pair programming and enables you to work on the same codebase, in real-time, with your team members. The arduous process of configuring complex setups, grappling with confusing configurations, straining one's eyes to work on small screens, or physically switching keyboards is not a problem with LiveShare. This solution enables seamless sharing of your development environment with your team members, facilitating smooth collaborative coding experiences. Fully integrated into Visual Studio Code and Visual Studio, LiveShare offers the added benefit of terminal sharing, debug session collaboration, and host machine control. When paired with GitHub Codespaces, it presents a potent tool set for effective pair programming. @@ -29,6 +29,6 @@ Fully integrated into Visual Studio Code and Visual Studio, LiveShare offers the ## Resources * [GitHub Codespaces](https://code.visualstudio.com/docs/remote/codespaces). -* [VSCode Live Share](https://code.visualstudio.com/learn/collaboration/live-share). +* [VSCode Live Share](https://learn.microsoft.com/en-us/visualstudio/liveshare/). * [Create a Dev Container](https://code.visualstudio.com/docs/devcontainers/create-dev-container). * [How companies have optimized the humble office water cooler](https://www.inverse.com/innovation/how-companies-have-optimized-the-humble-office-water-cooler). diff --git a/docs/automated-testing/synthetic-monitoring-tests/README.md b/docs/automated-testing/synthetic-monitoring-tests/README.md index f07f29282e..cc795e5c39 100644 --- a/docs/automated-testing/synthetic-monitoring-tests/README.md +++ b/docs/automated-testing/synthetic-monitoring-tests/README.md @@ -84,7 +84,7 @@ Some organizations prefer running probes on existing infrastructure using known - [Application Insights availability](https://learn.microsoft.com/en-us/azure/azure-monitor/app/monitor-web-app-availability) - Simple availability tests that allow some customization using [Multi-step web test](https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-multistep) - [DataDog Synthetics](https://www.datadoghq.com/dg/apm/synthetics/api-test/) - [Dynatrace Synthetic Monitoring](https://www.dynatrace.com/platform/synthetic-monitoring/) -- [New Relic Synthetics](https://newrelic.com/products/synthetics) +- [New Relic Synthetics](https://newrelic.com/synthetics) - [Checkly](https://checklyhq.com) ## Conclusion diff --git a/docs/code-reviews/recipes/java.md b/docs/code-reviews/recipes/java.md index 8bcaf56ad3..f8882fb0a8 100644 --- a/docs/code-reviews/recipes/java.md +++ b/docs/code-reviews/recipes/java.md @@ -8,7 +8,7 @@ Developers should follow the [Google Java Style Guide](https://google.github.io/ We strongly believe that consistent style increases readability and maintainability of a code base. Hence, we are recommending analyzers to enforce consistency and style rules. -We make use of [Checkstyle](https://github.com/checkstyle/checkstyle) using the [same configuration used in the Azure Java SDK](https://github.com/Azure/azure-sdk-for-java/blob/master/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle.xml). +We make use of [Checkstyle](https://github.com/checkstyle/checkstyle) using the [same configuration used in the Azure Java SDK](https://github.com/Azure/azure-sdk-for-java/tree/main/eng/code-quality-reports). [FindBugs](http://findbugs.sourceforge.net/) and [PMD](https://pmd.github.io/) are also commonly used. diff --git a/docs/code-reviews/recipes/markdown.md b/docs/code-reviews/recipes/markdown.md index 6af308426d..917d81e7dd 100644 --- a/docs/code-reviews/recipes/markdown.md +++ b/docs/code-reviews/recipes/markdown.md @@ -152,7 +152,7 @@ Save your guidelines together with your documentation, so they are easy to refer - Use active voice - Spell check and grammar check the text - Always follow chronological order -- Visit [Plain English](https://plainenglish.co.uk/how-to-write-in-plain-english.html) for tips on how to write documentation that is easy to understand. +- Visit [Plain Language](https://www.plainlanguage.gov/) for tips on how to write documentation that is easy to understand. ### Document Organization diff --git a/docs/design/diagram-types/README.md b/docs/design/diagram-types/README.md index 1055575012..7142570a4f 100644 --- a/docs/design/diagram-types/README.md +++ b/docs/design/diagram-types/README.md @@ -32,4 +32,4 @@ Each of the above types of diagrams will provide specific resources related to i - [Visual Paradigm UML Structural vs Behavior Diagrams](https://www.visual-paradigm.com/cn/guide/uml-unified-modeling-language/uml-) - [PlantUML](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) - requires a generator from code to PlantUML syntax to generate diagrams - [C# to PlantUML](https://marketplace.visualstudio.com/items?itemName=pierre3.csharp-to-plantuml) - - [Drawing manually](https://towardsdatascience.com/drawing-a-uml-diagram-in-the-vs-code-53c2e67deffe) + - [Drawing manually](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) diff --git a/docs/design/diagram-types/class-diagrams.md b/docs/design/diagram-types/class-diagrams.md index 2edca9090b..c32f69f8b0 100644 --- a/docs/design/diagram-types/class-diagrams.md +++ b/docs/design/diagram-types/class-diagrams.md @@ -69,4 +69,4 @@ the customer hand-off approaches. - [PlantUML](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) - requires a generator from code to PlantUML syntax to generate diagrams - [PlantUML Syntax](https://plantuml.com/class-diagram) - [C# to PlantUML](https://marketplace.visualstudio.com/items?itemName=pierre3.csharp-to-plantuml) - - [Drawing manually](https://towardsdatascience.com/drawing-a-uml-diagram-in-the-vs-code-53c2e67deffe) + - [Drawing manually](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) diff --git a/docs/design/diagram-types/component-diagrams.md b/docs/design/diagram-types/component-diagrams.md index 09fe33c385..95ad8ff8f1 100644 --- a/docs/design/diagram-types/component-diagrams.md +++ b/docs/design/diagram-types/component-diagrams.md @@ -73,4 +73,4 @@ Depending on the tool being used, automatic versioning might be performed whenev - VS Code Plugins: - [PlantUML](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) - requires a generator from code to PlantUML syntax to generate diagrams - [PlantUML Syntax](https://plantuml.com/component-diagram) - - [Drawing manually](https://towardsdatascience.com/drawing-a-uml-diagram-in-the-vs-code-53c2e67deffe) + - [Drawing manually](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) diff --git a/docs/design/diagram-types/deployment-diagrams.md b/docs/design/diagram-types/deployment-diagrams.md index 162b01e90e..1db8216d44 100644 --- a/docs/design/diagram-types/deployment-diagrams.md +++ b/docs/design/diagram-types/deployment-diagrams.md @@ -64,4 +64,4 @@ The below approach can be used to assist the team on how often to update the pub - [Visual Paradigm](https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-deployment-diagram/) - [PlantUML](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) - requires a generator from code to PlantUML syntax to generate diagrams - [PlantUML Syntax](https://plantuml.com/deployment-diagram) - - [Drawing manually](https://towardsdatascience.com/drawing-a-uml-diagram-in-the-vs-code-53c2e67deffe) + - [Drawing manually](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) diff --git a/docs/design/diagram-types/sequence-diagrams.md b/docs/design/diagram-types/sequence-diagrams.md index 2cd46e9abd..9837a11a7d 100644 --- a/docs/design/diagram-types/sequence-diagrams.md +++ b/docs/design/diagram-types/sequence-diagrams.md @@ -121,4 +121,4 @@ the customer hand-off approaches. - VS Code Plugins: - [PlantUML](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) - requires a generator from code to PlantUML syntax to generate diagrams - [PlantUML Syntax](https://plantuml.com/sequence-diagram) - - [Drawing manually](https://towardsdatascience.com/drawing-a-uml-diagram-in-the-vs-code-53c2e67deffe) + - [Drawing manually](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml) diff --git a/docs/design/sustainability/README.md b/docs/design/sustainability/README.md index 93f6f23d46..1737ac15c7 100644 --- a/docs/design/sustainability/README.md +++ b/docs/design/sustainability/README.md @@ -36,7 +36,7 @@ If there are important nuances to consider, they will be linked in the `Disclaim | | | Consider caching data close to end users with a [CDN](https://en.wikipedia.org/wiki/Content_delivery_network) | [Networking](./sustainable-engineering-principles.md#networking) | [Benefits of a CDN](https://docs.microsoft.com/en-us/azure/frontdoor/front-door-overview#key-benefits) | [Understanding CDN tradeoffs](./sustainable-action-disclaimers.md#action-consider-caching-data-close-to-end-users-with-a-CDN) | | | | Send only the data that will be used | [Networking](./sustainable-engineering-principles.md#networking) | | | | | | Compress data to reduce the size | [Networking](./sustainable-engineering-principles.md#networking) | [Compressing and extracting files in .NET](https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-compress-and-extract-files) | | -| | When designing for the end user | Consider giving users visibility and control over their energy usage | [Electricity Consumption](./sustainable-engineering-principles.md#electricity-consumption) [Demand Shaping](./sustainable-engineering-principles.md#demand-shaping) | [Designing for eco-mode](https://principles.green/principles/demand-shaping/#heading-eco-modes) | | +| | When designing for the end user | Consider giving users visibility and control over their energy usage | [Electricity Consumption](./sustainable-engineering-principles.md#electricity-consumption) [Demand Shaping](./sustainable-engineering-principles.md#demand-shaping) | [Designing for eco-mode](https://learn.greensoftware.foundation/carbon-awareness/) | | | | | Design and test your application to be compatible for a wide variety of devices, especially older devices | [Embodied Carbon](./sustainable-engineering-principles.md#embodied-carbon) | [Extending device lifespan](https://medium.com/google-design/to-make-apps-accessible-make-them-compatible-with-different-devices-11298c6d3f06) [Compatibility Testing](https://www.techdim.com/what-is-compatibility-testing/) | | | | When selecting a programming language | Consider the energy efficiency of languages | [Electricity Consumption](./sustainable-engineering-principles.md#electricity-consumption) | [Reasoning about the energy consumption of programming languages](https://thenewstack.io/which-programming-languages-use-the-least-electricity/), [Programming Language Energy Efficiency (PDF)](https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf) | [Making informed programming language choices](./sustainable-action-disclaimers.md#action-consider-the-energy-efficiency-of-languages) | diff --git a/docs/design/sustainability/sustainable-engineering-principles.md b/docs/design/sustainability/sustainable-engineering-principles.md index a114505f61..215a6becc1 100644 --- a/docs/design/sustainability/sustainable-engineering-principles.md +++ b/docs/design/sustainability/sustainable-engineering-principles.md @@ -8,9 +8,7 @@ Most electricity is still produced through the burning of fossil fuels and is re Software consumes electricity in its execution. Running hardware consumes electricity even at zero percent utilization. Some of the best ways we can reduce electricity consumption and the subsequent emissions of carbon pollution is to make our applications more energy efficient when they are running and limit idle hardware. -## [Energy Proportionality](https://principles.green/principles/energy-proportionality/) - -![Illustrative graph showing a computer at 0% utilization draws 100 Watts, at 50% utilization it draws 180 Watts and at 100% utilization it draws 200 Watts. The relationship between power consumption and utilization is not linear and it does not cross the origin.](https://principles.green/assets/images/principles/energy-proportionality-1.png?v=e5febc24f5d4d4930ad43de3686aa856) +## [Energy Proportionality](https://learn.greensoftware.foundation/energy-efficiency/) The relationship between power and utilization is not proportional. @@ -18,17 +16,17 @@ The more you utilize a computer, the more efficient it becomes at converting ele An idle computer, even running at zero percent utilization, still draws electricity. -## [Embodied Carbon](https://principles.green/principles/embodied-carbon/) +## [Embodied Carbon](https://learn.greensoftware.foundation/hardware-efficiency/) Embodied carbon (otherwise referred to as "Embedded Carbon") is the amount of carbon pollution emitted during the creation and disposal of a device. When calculating the total carbon pollution for the computers running your software, account for both the carbon pollution to run the computer and the embodied carbon of the computer. Therefore a great way to reduce embodied carbon is to prevent the need for new devices to be manufactured by extending the usefulness of existing ones. -## [Demand Shaping](https://principles.green/principles/demand-shaping/) +## [Demand Shaping](https://learn.greensoftware.foundation/carbon-awareness/) Demand shaping is a strategy of shaping our demand for resources so it matches the existing supply. If supply is high, increase the demand by doing more in your applications. If the supply is low, decrease demand. This means doing less in your applications or delaying work until supply is higher. -## [Networking](https://principles.green/principles/networking/) +## [Networking](https://learn.greensoftware.foundation/) A network is a series of switches, routers, and servers. All the computers and network equipment in a network consume electricity and have [embedded carbon](#embodied-carbon). The internet is a global network of devices typically run off the standard local grid energy mix. diff --git a/docs/developer-experience/client-app-inner-loop.md b/docs/developer-experience/client-app-inner-loop.md index 86a0d6e613..0722b37a93 100755 --- a/docs/developer-experience/client-app-inner-loop.md +++ b/docs/developer-experience/client-app-inner-loop.md @@ -85,7 +85,7 @@ This approach also enables full fidelity integration testing without spinning up ### Stub / Fake Services -Lower fidelity approaches run stub services, that could be generated from API specs, or run fake servers like JsonServer ([JsonServer.io: A fake json server API Service for prototyping and testing.](https://www.jsonserver.io/)) or Postman. All these services would respond with predetermined and configured JSON messages. +Lower fidelity approaches run stub services, that could be generated from API specs, or run fake servers like JsonServer ([json-server: A fake REST API service for prototyping and testing.](https://github.com/typicode/json-server)) or Postman. All these services would respond with predetermined and configured JSON messages. ## How to Decide diff --git a/docs/non-functional-requirements/privacy/data-handling.md b/docs/non-functional-requirements/privacy/data-handling.md index c5bc7dc6a3..ba64bbd72d 100644 --- a/docs/non-functional-requirements/privacy/data-handling.md +++ b/docs/non-functional-requirements/privacy/data-handling.md @@ -15,7 +15,7 @@ both have the responsibility to help projects follow the guidelines outlined on Developers working on ISE projects should implement best practices and guidance on handling data throughout the project phases. This page is not meant to suggest how customers should handle data in their environment. **It does not override**: - [Microsoft's Information Security Policy](https://aka.ms/CTRMSsecppext) -- [Limited Data Protection Addendum](https://aka.ms/mpsldpa) +- [Limited Data Protection Addendum](https://download.microsoft.com/download/a/0/2/a0220b6f-a934-4f78-9128-6368af308985/Microsoft%20Professional%20Services%20Limited%20DPA%20-%20Sept%202022.pdf) - [Professional Services Data Protection Addendum](https://www.microsoft.com/licensing/docs/view/Microsoft-Products-and-Services-Data-Protection-Addendum-DPA) ## 5 W's of Data Handling diff --git a/docs/observability/observability-databricks.md b/docs/observability/observability-databricks.md index b657ac748c..05066fe815 100644 --- a/docs/observability/observability-databricks.md +++ b/docs/observability/observability-databricks.md @@ -34,7 +34,7 @@ note that Linux OMS Agent is not specific to Azure Databricks. ### Application Logging -Of all the logs collected, this is perhaps the most important one. [Spark Monitoring library](https://github.com/mspnp/spark-monitoring) collects metrics about the driver, executors, JVM, HDFS, cache +Of all the logs collected, this is perhaps the most important one. [Spark Monitoring library](https://learn.microsoft.com/en-us/azure/architecture/databricks-monitoring/) collects metrics about the driver, executors, JVM, HDFS, cache shuffling, DAGs, and much more. This library provides helpful insights to fine-tune Spark jobs. It allows monitoring and tracing each layer within Spark workloads, including performance and resource usage on the host and JVM, as well as Spark metrics and application-level logging. The library also includes ready-made Grafana dashboards that is a great starting point for building Azure Databricks dashboard. diff --git a/docs/observability/tools/loki.md b/docs/observability/tools/loki.md index 5dc82046df..441739ce7f 100644 --- a/docs/observability/tools/loki.md +++ b/docs/observability/tools/loki.md @@ -33,6 +33,6 @@ of the log itself, using less space than just storing the raw logs. ## Resources - [Loki Official Site](https://grafana.com/oss/loki/) -- [Inserting logs into Loki](https://grafana.com/docs/loki/latest/getting-started/get-logs-into-loki/) +- [Inserting logs into Loki](https://grafana.com/docs/loki/latest/get-started/) - [Adding Loki Source to Grafana](https://grafana.com/docs/grafana/latest/datasources/loki/#adding-the-data-source) - [Loki Best Practices](https://grafana.com/docs/loki/latest/best-practices/) diff --git a/docs/source-control/component-versioning.md b/docs/source-control/component-versioning.md index c0f069207a..fa403e6b10 100644 --- a/docs/source-control/component-versioning.md +++ b/docs/source-control/component-versioning.md @@ -79,7 +79,7 @@ This strategy allows projects to evolve at their own pace, without forcing all p `semantic-release` relies on commit messages to assess how codebase changes impact consumers. By adhering to structured conventions for commit messages, `semantic-release` autonomously identifies the subsequent semantic version, compiles a changelog, and releases the software. -[Angular Commit Message](https://gist.github.com/brianclements/841ea7bffdb01346392c) Conventions serve as the default for `semantic-release`. However, the configuration options of the @semantic-release/commit-analyzer and @semantic-release/release-notes-generator plugins, including presets, can be adjusted to modify the commit message format. +[Angular Commit Message](https://github.com/angular/angular/blob/main/CONTRIBUTING.md) Conventions serve as the default for `semantic-release`. However, the configuration options of the @semantic-release/commit-analyzer and @semantic-release/release-notes-generator plugins, including presets, can be adjusted to modify the commit message format. The table below shows which commit message gets you which release type when `semantic-release` runs (using the default configuration): diff --git a/lychee.toml b/lychee.toml index 2cdf5c0d5e..322c11c34d 100644 --- a/lychee.toml +++ b/lychee.toml @@ -94,6 +94,15 @@ exclude = [ "^https://machinelearningmastery.com", "^https://www.researchgate.net", "^https://github.com/marketplace/?$", + # Sites that block automated clients (TLS handshake / bot protection) but are + # valid in a browser: + "^https://www.postman.com", + "^https://blog.insightdatascience.com", + "^https://fate.fedai.org", + # Site with an expired TLS certificate (valid content, cert not renewed): + "^https://www.techdim.com", + # Valid but intermittently slow from CI (request timeouts): + "^https://www.gnu.org", # Other: "^https://opensource.org/license/", # works locally but fails with 403 on Github CI. ]