1723 lines
565 KiB
HTML
1723 lines
565 KiB
HTML
|
||
|
||
|
||
|
||
|
||
|
||
<!DOCTYPE html>
|
||
<html
|
||
lang="en"
|
||
|
||
data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
|
||
data-a11y-animated-images="system" data-a11y-link-underlines="true"
|
||
|
||
>
|
||
|
||
|
||
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<link rel="dns-prefetch" href="https://github.githubassets.com">
|
||
<link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
|
||
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
|
||
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
|
||
<link rel="preconnect" href="https://github.githubassets.com" crossorigin>
|
||
<link rel="preconnect" href="https://avatars.githubusercontent.com">
|
||
|
||
<script type="importmap">{"imports":{"react":"https://github.githubassets.com/assets/react-e27d1b3e03961e68.js","react-dom":"https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js","react-dom/client":"https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js","react-is":"https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js","react-reconciler":"https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js","react/compiler-runtime":"https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js","react/jsx-dev-runtime":"https://github.githubassets.com/assets/react-jsx-dev-runtime-ea55d68667d559e5.js","react/jsx-runtime":"https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js","scheduler":"https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js"}}</script>
|
||
<meta name="react-profiling" content="0" data-turbo-transient="true" />
|
||
<meta name="react-import-map" content="react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@777f63f87cd0" data-turbo-track="reload" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-e27d1b3e03961e68.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js" />
|
||
|
||
|
||
|
||
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-79ad2ace604703b3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f4bf1142976e4bbf.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-f661b49995ba0bd8.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-0b38d22346321c92.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-f1c62c9e70259b9f.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-79ad2ace604703b3.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-f50cacf0a86b9929.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-e61d4f4ca17852c2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-39c10993d5603fac.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-73236c840c0c7d90.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-0de76f07cc035b10.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-fd1500c8744e40d6.css" />
|
||
|
||
<style type="text/css">
|
||
:root {
|
||
--tab-size-preference: 4;
|
||
}
|
||
|
||
pre, code {
|
||
tab-size: var(--tab-size-preference);
|
||
}
|
||
</style>
|
||
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-ed9ca172356fd545.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-adcabba7b5c5d221.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-552513ad07a183a1.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-11ee8a031c040c1a.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-2d56bdb0166c0238.css" />
|
||
|
||
|
||
|
||
<script type="application/json" id="client-env">{"locale":"en","featureFlags":["actions_enable_background_steps","actions_new_hosted_runner_image_select_sizes_and_versions","activity_diff_file_tree","activity_repos_file_tree","activity_repos_overview_header","activity_repos_overview_sidebar","agent_author_search_expansion","agent_author_search_expansion_ui_pulls","alternate_user_config_repo","billing_billable_licenses_cost_center_bucket_fix","billing_budget_expiration","billing_cost_center_list_assigned_resources","billing_discount_threshold_notification","cca_show_aic_usage_per_session","ccr_files_changed_model_picker","code_quality_enablement_banner_targeting","code_quality_remove_preview","code_view_raf_sticky_lines","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_automations_pagination","copilot_chat_clear_model_selection_for_default_change","copilot_chat_compact_tables","copilot_chat_header_reorder","copilot_chat_max_upsell","copilot_chat_minimize_contextual","copilot_chat_model_picker_promotions","copilot_chat_models_browser_cache","copilot_chat_new_topic_nudge","copilot_chat_reduce_quota_checks","copilot_chat_vision_dotcom_chat_ga_gate","copilot_chat_vision_preview_gate","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_ftp_hyperspace_upgrade_prompt","copilot_hide_hovercard","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_suggestion_pills","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_merge_fix_ci","copilot_mission_control_agent_merge_resolve_conflicts","copilot_mission_control_early_stop","copilot_mission_control_environment_list_icons","copilot_mission_control_managed_sandbox_environments","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_repo_hovercards","copilot_mission_control_sandbox_client_side_clone","copilot_mission_control_sandbox_remote_bypass","copilot_mission_control_session_filters","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_policy_page_focus_mode","copilot_pr_chat_enhancements","copilot_prominent_upgrade_button","copilot_resource_panel","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_automation_resource_scoped_writes","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_task_scoped_alive_channel","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_workbench_sunset","copilot_workbench_sunset_redirect","copilot_workbench_ubb","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_suite_disable_river_accordion_dither","glc_code_quality_repo_settings_workflow_config","hide_github_models_ui","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_fields_multi_select","issue_inline_avatars","issue_pinned_views","issue_pinned_views_optimistic_updates","issue_relative_time_micro","issues_dashboard_sso_structured_errors","issues_expanded_file_types","issues_hide_closed_sub_issues","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","labels_archiving","labels_archiving_info","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_lazy_hydrate_agent_tasks","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_queue_restricted_pushers_warning","merge_status_checks_refetch_dedupe","merge_status_header_feedback","oauth_authorize_clickjacking_protection","octocaptcha_origin_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","prs_copilot_app_open_action","prs_css_anchor_positioning","prs_new_conversation_comments_api","pull_request_copilot_attribution_header","pull_request_overview_panel_edit_description","pull_request_persister","pull_request_stacks_feedback_dialog","pull_request_stacks_rebase_conflict_instructions","pull_request_virtualization_image_estimate","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","pulls_dashboard_sidebar_layout","quick_search_lazy_suggestions","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_tanstack_allowed","react_query_props_with_key","react_sandbox_future_tanstack","repo_app_actions_workflows","repo_app_agents","repo_app_commits","repo_app_issues","repo_app_pull_requests","repo_app_turbo","repo_issues_sidebar_layout","repo_overview_ask_copilot","repo_pulls_dashboard_persistence","repos_contributors_limited_default_range","review_involves_filter","rule_ignored_file_paths","rulesets_actor_list_editor","sample_network_conn_type","security_center_artifact_filters_popover","see_who_reacted","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","set_sha256_on_repo_creation_form","site_banner_desktop_copilot_app","site_ghca_pixel_mona","site_github_app_ga_page","site_github_app_ga_page_highlight","site_github_app_mobile_native_share","site_global_banner_dev_days_attendee","site_global_banner_learn_copilot_sdk","site_global_nav_spark_models_removed","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","thread_resolution_reason","ui_service_referrer_metrics","update_issue_suggestions","viewscreen_sandbox","warn_inaccessible_attachments","webp_support","workbench_store_readonly","react_import_map","react_import_map"],"githubDomain":"https://github.com","copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"}</script>
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/high-contrast-cookie-e3d808ee18eb9784.js"></script>
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-runtime-c40ff75fa4b29faf.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-foundation-89338d13d121427c.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-runtime-79275629e212a8de.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fetch-utilities-ef80792c471f3488.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ser-564408e9198dff6d.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/environment-6301446d495cadb7.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-runtime.db39abd7070fb379.module.css" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/catalyst-86a8f5de995615f8.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/selector-observer-e88088f989b27670.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/relative-time-element-85cb37305f54dec4.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/by4-73006a52f155289f.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ja9-36f036c13c2e3a4c.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/kw-866fd9513ae95106.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/r1-b075aab3204f32f9.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jz5-7c5d1669717041f8.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hj-5126390ff433704d.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j05-dce4d588268f0f7e.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/github-elements-d5a098151cf3b06a.js" defer="defer"></script>
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/element-registry-e87c875160a83f53.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/runtime-helpers-f3f5d71440009c48.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aria-live-edd4f18194230d9e.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hotkey-5109c77d7ac61078.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-core-220b14bbb2e5a3aa.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/04-a76c47ec12c12e01.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ur-024971cb63acad59.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4t-9933bcccf9a9524f.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6ny-c969fbae697a356f.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/yhq-3a209035a30b1a09.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/z1v-da5b33b877bfa358.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wo-09f85d22a6c8931b.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/9y-81cfe57dc9040f3e.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j0-41a4cf04cbd99503.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0p-50de93b282dbc67c.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/behaviors-f18992dbb9345e7b.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-core.1d66df2418934e22.module.css" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/n9-97e2e5539969aaaf.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/codespaces-561e4c4d2ad2f91c.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ic-991f04433f366e7b.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/repositories-2a58c4a0d16cd356.js" defer="defer"></script>
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-menu-e333ef3cca1b9526.js" defer="defer"></script>
|
||
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/primer-react-7450ad822d7699b5.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-lib-3b03eb55bae46c70.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aq-ba5f008999aedbd0.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j6-363f0ebf4f62f310.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t7l-bf6f21d7e7a43c35.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fe-7576d9b281e2106a.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wsr-5fd3071e5a9061ab.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0n-27006551de0ea3c6.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xv-51cb34754bda73a9.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/n4u-6317ce1c31aed1db.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j8s-d05eedc69cebc200.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/la-de176c4ee471f2b3.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/pj-da0fc66367c63559.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/oo-ed8e4c10812fc721.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/50-3e117c4737ded7c8.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/5gq-0ecd117c4ccaf4f0.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/nsi-926ffbc13301c5b7.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3np-a0186ba63220b6ce.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/on-75d8015f7c16be87.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bi0-e2f78de823e39ca9.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b1-78b9e19270a36df1.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0l5-4e7d0bd60ed3a66a.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/c2z-702903d1c83e2892.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/f9-038758dcbfe08dab.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0k-b7df0a74912a42bf.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sp-2bbb73a69162e23b.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/og-93ae8b358505d372.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/q5-fc1f2b54f1d10663.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qod-79dedcb2e7d13687.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/du-dc47d4c63c11d935.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ql0-52233a028822e2ef.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/20-69395c63e3e4b526.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/dsj-4cca625a20b72565.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-2413e3416979956b.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/e84-4da7096eb6b55d6d.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0pz-9106948caa5e015a.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/7mh-23cfe0e4aeb0e064.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bsb-4f4ac8c20da73fac.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/46-90fb1c98afc2cd5a.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jga-3f6576d6f86d4e43.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/me-dfecacc72ba91157.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0dh-eb608edac481e761.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xc-f5d51b571cd317cb.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/7c-a3aa1fcc96ee2fd8.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4b-c63a3f3820a90d31.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qv-5ae49538d02f5979.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gtp-bb135af2e2127c94.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-view-bdd08a7c4b6a41ae.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/ql0.98d0f45ff87777ec.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/46.3e560835284be460.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/xc.13e027137438fd9f.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/4b.e524e9f270f17ecc.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/qv.9631adba022ab320.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-view.0fa77f65e2dd93f8.module.css" />
|
||
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hu-0d4aa5ab34269698.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/31k-472f1465ccb55aa9.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-bcafd20009b025c8.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.2bf6718a44c2b857.module.css" />
|
||
|
||
|
||
<title>GitHub - seifrajhi/awesome-platform-engineering-tools: A curated list of Platform Engineering Tools · GitHub</title>
|
||
|
||
|
||
|
||
<meta name="route-pattern" content="/:user_id/:repository" data-turbo-transient>
|
||
<meta name="route-controller" content="files" data-turbo-transient>
|
||
<meta name="route-action" content="disambiguate" data-turbo-transient>
|
||
<meta name="fetch-nonce" content="v2:c92538bd-9b40-c753-83bb-7c9cea7e4922">
|
||
|
||
|
||
<meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">
|
||
|
||
|
||
<meta name="request-id" content="E996:1AF9C5:15B4E4:257564:6AA4ECE8" data-pjax-transient="true"/><meta name="html-safe-nonce" content="820d381d162cf9ac63099466f7b514395b0e8b11264fb467a6df77d5f0d79351" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFOTk2OjFBRjlDNToxNUI0RTQ6MjU3NTY0OjZBQTRFQ0U4IiwidmlzaXRvcl9pZCI6IjM5NDI2OTkxNjU0MTI1NTE5MTIiLCJyZWdpb25fZWRnZSI6Indlc3R1czMiLCJyZWdpb25fcmVuZGVyIjoid2VzdHVzMyJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="3284c949638e30387c6a1c870fd6f335431b59daf519c7a999f9f5ef436147a2" data-pjax-transient="true"/>
|
||
|
||
|
||
<meta name="hovercard-subject-tag" content="repository:726614367" data-turbo-transient>
|
||
|
||
|
||
<meta name="github-keyboard-shortcuts" content="repository,copilot" data-turbo-transient="true" />
|
||
|
||
|
||
<meta name="selected-link" value="repo_source" data-turbo-transient>
|
||
<link rel="assets" href="https://github.githubassets.com/">
|
||
|
||
<meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">
|
||
|
||
<meta name="octolytics-url" content="https://collector.github.com/github/collect" />
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="analytics-location" content="/<user-name>/<repo-name>" data-turbo-transient="true" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="user-login" content="">
|
||
|
||
|
||
|
||
<meta name="viewport" content="width=device-width">
|
||
|
||
|
||
|
||
<meta name="description" content="A curated list of Platform Engineering Tools. Contribute to seifrajhi/awesome-platform-engineering-tools development by creating an account on GitHub.">
|
||
|
||
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
|
||
|
||
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
|
||
<meta property="fb:app_id" content="1401488693436528">
|
||
<meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/seifrajhi/awesome-platform-engineering-tools" />
|
||
|
||
<meta name="twitter:image" content="https://opengraph.githubassets.com/738667d1754c0a7d9a0272ba4b42d55ef3bd02e68611fba5246eab797289124a/seifrajhi/awesome-platform-engineering-tools" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="GitHub - seifrajhi/awesome-platform-engineering-tools: A curated list of Platform Engineering Tools" /><meta name="twitter:description" content="A curated list of Platform Engineering Tools. Contribute to seifrajhi/awesome-platform-engineering-tools development by creating an account on GitHub." />
|
||
<meta property="og:image" content="https://opengraph.githubassets.com/738667d1754c0a7d9a0272ba4b42d55ef3bd02e68611fba5246eab797289124a/seifrajhi/awesome-platform-engineering-tools" /><meta property="og:image:alt" content="A curated list of Platform Engineering Tools. Contribute to seifrajhi/awesome-platform-engineering-tools development by creating an account on GitHub." /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="GitHub - seifrajhi/awesome-platform-engineering-tools: A curated list of Platform Engineering Tools" /><meta property="og:url" content="https://github.com/seifrajhi/awesome-platform-engineering-tools" /><meta property="og:description" content="A curated list of Platform Engineering Tools. Contribute to seifrajhi/awesome-platform-engineering-tools development by creating an account on GitHub." />
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="hostname" content="github.com">
|
||
|
||
|
||
|
||
<meta name="expected-hostname" content="github.com">
|
||
|
||
|
||
<meta http-equiv="x-pjax-version" content="37045a1f63d0a2ad20afa416c72b63d666b66fb371c3e7720d263eb92dda33a7" data-turbo-track="reload">
|
||
<meta http-equiv="x-pjax-csp-version" content="f2311ccc2e94cef09d9c62c8c090301d08823a2fd66b86a913b7d968c86acb1a" data-turbo-track="reload">
|
||
<meta http-equiv="x-pjax-css-version" content="b7a4653359baeee3d827ca91d7c149e4962234557341efae58fad4aa5ce82a0a" data-turbo-track="reload">
|
||
<meta http-equiv="x-pjax-js-version" content="96efb01f6430a1ad6e22f9e0b8a04625dd76a461e93da809464e8d1f9c36c59c" data-turbo-track="reload">
|
||
|
||
<meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">
|
||
|
||
<meta name="turbo-cache-control" content="no-cache" data-turbo-transient>
|
||
|
||
<meta data-hydrostats="publish">
|
||
|
||
<meta name="go-import" content="github.com/seifrajhi/awesome-platform-engineering-tools git https://github.com/seifrajhi/awesome-platform-engineering-tools.git">
|
||
|
||
<meta name="octolytics-dimension-user_id" content="26981510" /><meta name="octolytics-dimension-user_login" content="seifrajhi" /><meta name="octolytics-dimension-repository_id" content="726614367" /><meta name="octolytics-dimension-repository_nwo" content="seifrajhi/awesome-platform-engineering-tools" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="726614367" /><meta name="octolytics-dimension-repository_network_root_nwo" content="seifrajhi/awesome-platform-engineering-tools" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="turbo-body-classes" content="logged-out env-production page-responsive">
|
||
<meta name="disable-turbo" content="false">
|
||
|
||
|
||
<meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
|
||
|
||
|
||
<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
|
||
|
||
<meta name="release" content="ee0d1b245383d5b08b4f8b7ecd18cda5bdccbbe4" data-turbo-track="reload">
|
||
<meta name="ui-target" content="full">
|
||
|
||
<link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
|
||
<link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
|
||
<link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon">
|
||
|
||
<meta name="theme-color" content="#1e2327">
|
||
<meta name="color-scheme" content="light dark" />
|
||
|
||
|
||
<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
|
||
|
||
</head>
|
||
|
||
<body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
|
||
<div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
|
||
<div id="__primerPortalRoot__" style="z-index: 1000; position: absolute; width: 100%;" data-turbo-permanent></div>
|
||
|
||
|
||
<div class="position-relative header-wrapper js-header-wrapper ">
|
||
<a href="#start-of-content" data-skip-target-assigned="false" class="px-2 tmp-py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>
|
||
|
||
<span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
|
||
<span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
|
||
</span>
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/l7j-a8c3c3ab9790e365.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-98c649c7176c489a.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.b5f61eada8ea05c6.module.css" />
|
||
|
||
<react-partial
|
||
partial-name="keyboard-shortcuts-dialog"
|
||
data-ssr="false"
|
||
data-attempted-ssr="false"
|
||
data-react-profiling="false"
|
||
>
|
||
|
||
<script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
|
||
<div data-target="react-partial.reactRoot"></div>
|
||
</react-partial>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/nvz-deeea5270ef3dfb4.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/mz-a6c5397389be3fff.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fz5-23f28c0f388769c9.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/lht-b91be4a9ea8a3210.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/p1-76a75a6081059b19.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3d-82c347d20a13fb90.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tua-81c88ff7e39af43c.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4s-854aef8a5dc4797a.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-header-b4f24b72e9c5634b.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/4s.795b697dd2335e43.module.css" />
|
||
|
||
<react-partial
|
||
partial-name="marketing-header"
|
||
data-ssr="true"
|
||
data-attempted-ssr="true"
|
||
data-react-profiling="false"
|
||
>
|
||
|
||
<script type="application/json" data-target="react-partial.embeddedData">{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E\u0026source=header-repo\u0026source_repo=seifrajhi%2Fawesome-platform-engineering-tools","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://github.com/seifrajhi/awesome-platform-engineering-tools\",\"user_id\":null}}","auth_hydro_click_hmac":"36b25834d241f7d00e8d8b5192ad4b7409c967df41cbd93c798f68f39e02d4f0","overlay":false,"fixed":false}}</script>
|
||
<div data-target="react-partial.reactRoot"><div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"><header class="MarketingHeader-module__root__Tk7n3 HeaderMktg header-logged-out" role="banner" data-marketing-header="true" data-color-mode="dark" data-light-theme="light" data-dark-theme="dark" data-is-top="true"><h2 class="MarketingHeader-module__visuallyHidden__sqKsl">Navigation Menu</h2><button type="button" class="MarketingHeader-module__backdrop__sw4RU" aria-label="Close navigation menu"></button><div class="MarketingHeader-module__bar__mBSyE"><div class="MarketingHeader-module__topRow__yeury"><div class="MarketingHeader-module__toggleSlot__hDxbh"><button type="button" class="HeaderMenuToggle-module__toggle__i8EiC" aria-label="Toggle navigation" aria-expanded="false"><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span></button></div><a href="/" aria-label="Homepage" class="HeaderLogo-module__logo__UFyHI" data-analytics-event="{"action":"homepage","tag":"link","context":"logo","location":"header","label":"homepage_link_logo_header"}"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path></svg></a><div class="AuthCTAs-module__mobileActions__NNzeV"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools" data-analytics-event="{"action":"sign_in","tag":"link","context":"auth_cta","location":"header","label":"sign_in_link_auth_cta_header"}" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/seifrajhi/awesome-platform-engineering-tools","user_id":null}}" data-hydro-click-hmac="36b25834d241f7d00e8d8b5192ad4b7409c967df41cbd93c798f68f39e02d4f0"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_3dd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_3dd_">Appearance settings</div></div></div><div class="MarketingHeader-module__menu__GIy3y"><div class="MarketingHeader-module__menuWrapper__owstH"><nav class="MarketingNavigation-module__nav__W0KYY" aria-label="Global"><ul class="MarketingNavigation-module__list__tFbMb"><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_nd_">Platform<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5knd_">AI CODE CREATION</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot" data-analytics-event="{"action":"github_copilot","tag":"link","context":"platform","location":"navbar","label":"github_copilot_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>GitHub Copilot</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Write better code with AI</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/ai/github-app" data-analytics-event="{"action":"github_copilot_app","tag":"link","context":"platform","location":"navbar","label":"github_copilot_app_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.766 11.328c-2.063-.25-3.516-1.734-3.516-3.656 0-.781.281-1.625.75-2.188-.203-.515-.172-1.609.063-2.062.625-.078 1.468.25 1.968.703.594-.187 1.219-.281 1.985-.281.765 0 1.39.094 1.953.265.484-.437 1.344-.765 1.969-.687.218.422.25 1.515.046 2.047.5.593.766 1.39.766 2.203 0 1.922-1.453 3.375-3.547 3.64.531.344.89 1.094.89 1.954v1.625c0 .468.391.734.86.547C13.781 14.359 16 11.53 16 8.03 16 3.61 12.406 0 7.984 0 3.563 0 0 3.61 0 8.031a7.88 7.88 0 0 0 5.172 7.422c.422.156.828-.125.828-.547v-1.25c-.219.094-.5.156-.75.156-1.031 0-1.64-.562-2.078-1.609-.172-.422-.36-.672-.719-.719-.187-.015-.25-.093-.25-.187 0-.188.313-.328.625-.328.453 0 .844.281 1.25.86.313.452.64.655 1.031.655s.641-.14 1-.5c.266-.265.47-.5.657-.656"></path></svg>GitHub Copilot app</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Direct agents from issue to merge</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/mcp" data-analytics-event="{"action":"mcp_registry","tag":"link","context":"platform","location":"navbar","label":"mcp_registry_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.52 1.12a3.578 3.578 0 0 1 6.078 2.98 3.578 3.578 0 0 1 2.982 6.08l-3.292 3.293a.252.252 0 0 0 0 .354l.843.843a.749.749 0 1 1-1.06 1.06l-.844-.843a1.75 1.75 0 0 1 0-2.474L13.52 9.12a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0L7.731 9.03A.75.75 0 0 1 6.67 7.97l2.85-2.85a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0l-4.799 4.8A.75.75 0 0 1 .72 5.92Z"></path><path d="M7.52 3.12a.749.749 0 1 1 1.06 1.06L5.731 7.03A2.079 2.079 0 0 0 8.67 9.97l2.85-2.85a.749.749 0 1 1 1.06 1.06l-2.849 2.85A3.578 3.578 0 0 1 4.67 5.97Z"></path></svg>MCP Registry</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Integrate external tools</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9knd_">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/actions" data-analytics-event="{"action":"actions","tag":"link","context":"platform","location":"navbar","label":"actions_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path></svg>Actions</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Automate any workflow</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/codespaces" data-analytics-event="{"action":"codespaces","tag":"link","context":"platform","location":"navbar","label":"codespaces_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg>Codespaces</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Instant dev environments</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/issues" data-analytics-event="{"action":"issues","tag":"link","context":"platform","location":"navbar","label":"issues_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg>Issues</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Plan and track work</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-review" data-analytics-event="{"action":"code_review","tag":"link","context":"platform","location":"navbar","label":"code_review_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg>Code Review</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Manage code changes</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-quality" data-analytics-event="{"action":"code_quality","tag":"link","context":"platform","location":"navbar","label":"code_quality_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codescan-checkmark NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.28 6.28a.75.75 0 1 0-1.06-1.06L6.25 8.19l-.97-.97a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.06 0l3.5-3.5Z"></path><path d="M7.5 15a7.5 7.5 0 1 1 5.807-2.754l2.473 2.474a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2.474-2.473A7.472 7.472 0 0 1 7.5 15Zm0-13.5a6 6 0 1 0 4.094 10.386.748.748 0 0 1 .293-.292 6.002 6.002 0 0 0 1.117-6.486A6.002 6.002 0 0 0 7.5 1.5Z"></path></svg>Code Quality</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enforce quality at merge</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dknd_">APPLICATION SECURITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{"action":"github_advanced_security","tag":"link","context":"platform","location":"navbar","label":"github_advanced_security_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Find and fix vulnerabilities</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/code-security" data-analytics-event="{"action":"code_security","tag":"link","context":"platform","location":"navbar","label":"code_security_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>Code security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Secure your code as you build</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{"action":"secret_protection","tag":"link","context":"platform","location":"navbar","label":"secret_protection_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M4 4a4 4 0 0 1 8 0v2h.25c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 12.25 15h-8.5A1.75 1.75 0 0 1 2 13.25v-5.5C2 6.784 2.784 6 3.75 6H4Zm8.25 3.5h-8.5a.25.25 0 0 0-.25.25v5.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25ZM10.5 6V4a2.5 2.5 0 1 0-5 0v2Z"></path></svg>Secret protection</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Stop leaks before they start</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ NavGroup-module__hasSeparator__FnMrN"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_hknd_">EXPLORE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_hknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/why-github" data-analytics-event="{"action":"why_github","tag":"link","context":"platform","location":"navbar","label":"why_github_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{"action":"documentation","tag":"link","context":"platform","location":"navbar","label":"documentation_link_platform_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog" data-analytics-event="{"action":"blog","tag":"link","context":"platform","location":"navbar","label":"blog_link_platform_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Blog</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog/changelog" data-analytics-event="{"action":"changelog","tag":"link","context":"platform","location":"navbar","label":"changelog_link_platform_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Changelog</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/marketplace" data-analytics-event="{"action":"marketplace","tag":"link","context":"platform","location":"navbar","label":"marketplace_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/features" data-analytics-event="{"action":"view_all_features","tag":"link","context":"platform","location":"navbar","label":"view_all_features_link_platform_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all features</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_17d_">Solutions<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_17d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5l7d_">BY COMPANY SIZE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise" data-analytics-event="{"action":"enterprises","tag":"link","context":"solutions","location":"navbar","label":"enterprises_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Enterprises</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/team" data-analytics-event="{"action":"small_and_medium_teams","tag":"link","context":"solutions","location":"navbar","label":"small_and_medium_teams_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Small and medium teams</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise/startups" data-analytics-event="{"action":"startups","tag":"link","context":"solutions","location":"navbar","label":"startups_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Startups</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{"action":"nonprofits","tag":"link","context":"solutions","location":"navbar","label":"nonprofits_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9l7d_">BY USE CASE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{"action":"app_modernization","tag":"link","context":"solutions","location":"navbar","label":"app_modernization_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">App Modernization</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{"action":"devsecops","tag":"link","context":"solutions","location":"navbar","label":"devsecops_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevSecOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devops" data-analytics-event="{"action":"devops","tag":"link","context":"solutions","location":"navbar","label":"devops_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{"action":"ci/cd","tag":"link","context":"solutions","location":"navbar","label":"ci/cd_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">CI/CD</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/use-case" data-analytics-event="{"action":"view_all_use_cases","tag":"link","context":"solutions","location":"navbar","label":"view_all_use_cases_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all use cases</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dl7d_">BY INDUSTRY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dl7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/healthcare" data-analytics-event="{"action":"healthcare","tag":"link","context":"solutions","location":"navbar","label":"healthcare_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Healthcare</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/financial-services" data-analytics-event="{"action":"financial_services","tag":"link","context":"solutions","location":"navbar","label":"financial_services_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Financial services</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{"action":"manufacturing","tag":"link","context":"solutions","location":"navbar","label":"manufacturing_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Manufacturing</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/government" data-analytics-event="{"action":"government","tag":"link","context":"solutions","location":"navbar","label":"government_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Government</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/industry" data-analytics-event="{"action":"view_all_industries","tag":"link","context":"solutions","location":"navbar","label":"view_all_industries_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all industries</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions" data-analytics-event="{"action":"view_all_solutions","tag":"link","context":"solutions","location":"navbar","label":"view_all_solutions_link_solutions_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all solutions</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_1nd_">Resources<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_1nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5lnd_">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=ai" data-analytics-event="{"action":"ai","tag":"link","context":"resources","location":"navbar","label":"ai_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">AI</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{"action":"software_development","tag":"link","context":"resources","location":"navbar","label":"software_development_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Software Development</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=devops" data-analytics-event="{"action":"devops","tag":"link","context":"resources","location":"navbar","label":"devops_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=security" data-analytics-event="{"action":"security","tag":"link","context":"resources","location":"navbar","label":"security_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources/articles" data-analytics-event="{"action":"view_all_topics","tag":"link","context":"resources","location":"navbar","label":"view_all_topics_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all topics</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9lnd_">EXPLORE BY TYPE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/customer-stories" data-analytics-event="{"action":"customer_stories","tag":"link","context":"resources","location":"navbar","label":"customer_stories_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer stories</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/events" data-analytics-event="{"action":"events__webinars","tag":"link","context":"resources","location":"navbar","label":"events__webinars_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Events & webinars</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/whitepapers" data-analytics-event="{"action":"ebooks__reports","tag":"link","context":"resources","location":"navbar","label":"ebooks__reports_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Ebooks & reports</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/executive-insights" data-analytics-event="{"action":"business_insights","tag":"link","context":"resources","location":"navbar","label":"business_insights_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Business insights</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://skills.github.com" data-analytics-event="{"action":"github_skills","tag":"link","context":"resources","location":"navbar","label":"github_skills_link_resources_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Skills</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dlnd_">SUPPORT & SERVICES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dlnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{"action":"documentation","tag":"link","context":"resources","location":"navbar","label":"documentation_link_resources_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://support.github.com" data-analytics-event="{"action":"customer_support","tag":"link","context":"resources","location":"navbar","label":"customer_support_link_resources_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer support</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/orgs/community/discussions" data-analytics-event="{"action":"community_forum","tag":"link","context":"resources","location":"navbar","label":"community_forum_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Community forum</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trust-center" data-analytics-event="{"action":"trust_center","tag":"link","context":"resources","location":"navbar","label":"trust_center_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trust center</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{"action":"partners","tag":"link","context":"resources","location":"navbar","label":"partners_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Partners</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources" data-analytics-event="{"action":"view_all_resources","tag":"link","context":"resources","location":"navbar","label":"view_all_resources_link_resources_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all resources</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_27d_">Open Source<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_27d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5m7d_">COMMUNITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/open-source/sponsors" data-analytics-event="{"action":"github_sponsors","tag":"link","context":"open_source","location":"navbar","label":"github_sponsors_link_open_source_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.586 1C12.268 1 13.5 2.37 13.5 4.25c0 1.745-.996 3.359-2.622 4.831-.166.15-.336.297-.509.438l1.116 5.584a.75.75 0 0 1-.991.852l-2.409-.876a.25.25 0 0 0-.17 0l-2.409.876a.75.75 0 0 1-.991-.852L5.63 9.519a13.78 13.78 0 0 1-.51-.438C3.497 7.609 2.5 5.995 2.5 4.25 2.5 2.37 3.732 1 5.414 1c.963 0 1.843.403 2.474 1.073L8 2.198l.112-.125a3.385 3.385 0 0 1 2.283-1.068L10.586 1Zm-3.621 9.495-.718 3.594 1.155-.42a1.75 1.75 0 0 1 1.028-.051l.168.051 1.154.42-.718-3.592c-.199.13-.37.235-.505.314l-.169.097a.75.75 0 0 1-.72 0 9.54 9.54 0 0 1-.515-.308l-.16-.105ZM10.586 2.5c-.863 0-1.611.58-1.866 1.459-.209.721-1.231.721-1.44 0C7.025 3.08 6.277 2.5 5.414 2.5 4.598 2.5 4 3.165 4 4.25c0 1.23.786 2.504 2.128 3.719.49.443 1.018.846 1.546 1.198l.325.21.076-.047.251-.163a13.341 13.341 0 0 0 1.546-1.198C11.214 6.754 12 5.479 12 4.25c0-1.085-.598-1.75-1.414-1.75Z"></path></svg>GitHub Sponsors</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Fund open source developers</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9m7d_">PROGRAMS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://securitylab.github.com" data-analytics-event="{"action":"security_lab","tag":"link","context":"open_source","location":"navbar","label":"security_lab_link_open_source_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security Lab</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://maintainers.github.com" data-analytics-event="{"action":"maintainer_community","tag":"link","context":"open_source","location":"navbar","label":"maintainer_community_link_open_source_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Maintainer Community</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://stars.github.com" data-analytics-event="{"action":"github_stars","tag":"link","context":"open_source","location":"navbar","label":"github_stars_link_open_source_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Stars</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://archiveprogram.github.com" data-analytics-event="{"action":"archive_program","tag":"link","context":"open_source","location":"navbar","label":"archive_program_link_open_source_navbar"}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Archive Program</span><svg focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dm7d_">REPOSITORIES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dm7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/topics" data-analytics-event="{"action":"topics","tag":"link","context":"open_source","location":"navbar","label":"topics_link_open_source_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Topics</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trending" data-analytics-event="{"action":"trending","tag":"link","context":"open_source","location":"navbar","label":"trending_link_open_source_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trending</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/collections" data-analytics-event="{"action":"collections","tag":"link","context":"open_source","location":"navbar","label":"collections_link_open_source_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_2nd_">Enterprise<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_2nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5mnd_">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise" data-analytics-event="{"action":"enterprise_platform","tag":"link","context":"enterprise","location":"navbar","label":"enterprise_platform_link_enterprise_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg>Enterprise platform</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">AI-powered developer platform</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9mnd_">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{"action":"github_advanced_security","tag":"link","context":"enterprise","location":"navbar","label":"github_advanced_security_link_enterprise_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade security features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot/copilot-business" data-analytics-event="{"action":"copilot_for_business","tag":"link","context":"enterprise","location":"navbar","label":"copilot_for_business_link_enterprise_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>Copilot for Business</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade AI features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise/premium-support" data-analytics-event="{"action":"premium_support","tag":"link","context":"enterprise","location":"navbar","label":"premium_support_link_enterprise_navbar"}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg>Premium Support</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade 24/7 support</span></span></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{"action":"pricing","tag":"link","context":"pricing","location":"navbar","label":"pricing_link_pricing_navbar"}" class="MarketingNavigation-module__navLink__hUomM">Pricing</a></li></ul></nav><div class="MarketingHeader-module__ctaContainer__tBmPz"><div class="HeaderSearch-module__searchSlot__oVOUS"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderSearch-module__trigger__zsF9q" type="button" aria-haspopup="dialog" aria-expanded="false" aria-label="Search or jump to, type / to search" data-analytics-event="{"action":"searchbar","tag":"input","context":"global","location":"navbar","label":"searchbar_input_global_navbar"}"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"><span class="HeaderSearch-module__content__kMpxU"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search HeaderSearch-module__icon__wcrHX" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg><span class="HeaderSearch-module__label__d1iWG">Search</span><kbd class="HeaderSearch-module__kbd__HNG0o" aria-hidden="true">/</kbd></span></span></span></button><div class="d-none"></div></div><div class="AuthCTAs-module__signInWrap__q2P60"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq AuthCTAs-module__desktopActionGap__UZuXT AuthCTAs-module__hiddenBelowLg__BfKBw" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools" data-analytics-event="{"action":"sign_in","tag":"link","context":"auth_cta","location":"header","label":"sign_in_link_auth_cta_header"}" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/seifrajhi/awesome-platform-engineering-tools","user_id":null}}" data-hydro-click-hmac="36b25834d241f7d00e8d8b5192ad4b7409c967df41cbd93c798f68f39e02d4f0"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a></div><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=seifrajhi%2Fawesome-platform-engineering-tools" data-analytics-event="{"action":"sign_up","tag":"link","context":"auth_cta","location":"header","label":"sign_up_link_auth_cta_header"}" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/seifrajhi/awesome-platform-engineering-tools","user_id":null}}" data-hydro-click-hmac="36b25834d241f7d00e8d8b5192ad4b7409c967df41cbd93c798f68f39e02d4f0"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-secondary___eJ0_a">Sign up</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_fbd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_fbd_">Appearance settings</div></div></div></div></div><div class="MarketingHeader-module__bottomBorder__uZT38" aria-hidden="true"></div></header></div></div>
|
||
</react-partial>
|
||
|
||
|
||
|
||
<div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">
|
||
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
|
||
<path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
|
||
</svg>
|
||
<span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
|
||
<span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
|
||
<span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
|
||
|
||
<button id="icon-button-3de77d26-e80e-48f5-b9a6-0dcc38f56b10" aria-labelledby="tooltip-a7091404-b438-4467-9de1-e531fd6b400c" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
|
||
<path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
|
||
</svg>
|
||
</button><tool-tip id="tooltip-a7091404-b438-4467-9de1-e531fd6b400c" for="icon-button-3de77d26-e80e-48f5-b9a6-0dcc38f56b10" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div id="start-of-content" class="show-on-focus"></div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div id="js-flash-container" class="flash-container" data-turbo-replace>
|
||
|
||
|
||
|
||
|
||
|
||
<template class="js-flash-template">
|
||
|
||
<div class="flash flash-full {{ className }}">
|
||
<div >
|
||
<button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
|
||
<path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
|
||
</svg>
|
||
</button>
|
||
<div aria-atomic="true" role="alert" class="js-flash-alert">
|
||
|
||
<div>{{ message }}</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div
|
||
class="application-main "
|
||
data-commit-hovercards-enabled
|
||
data-discussion-hovercards-enabled
|
||
data-issue-and-pr-hovercards-enabled
|
||
data-project-hovercards-enabled
|
||
>
|
||
<div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
|
||
<main id="js-repo-pjax-container" >
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div id="repository-container-header" class="tmp-pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace>
|
||
|
||
<div class="d-flex flex-nowrap flex-justify-end tmp-mb-3 tmp-px-3 tmp-px-lg-5" style="gap: 1rem;">
|
||
|
||
<div class="flex-auto min-width-0 width-fit">
|
||
|
||
<div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2 tmp-mr-2">
|
||
<path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path>
|
||
</svg>
|
||
|
||
<span class="author flex-self-stretch" itemprop="author">
|
||
<a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/seifrajhi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/seifrajhi">
|
||
seifrajhi
|
||
</a> </span>
|
||
<span class="mx-1 flex-self-stretch color-fg-muted">/</span>
|
||
<strong itemprop="name" class="mr-2 flex-self-stretch">
|
||
<a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/seifrajhi/awesome-platform-engineering-tools">awesome-platform-engineering-tools</a>
|
||
</strong>
|
||
|
||
<span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
<div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;">
|
||
<ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
|
||
|
||
|
||
|
||
<li>
|
||
<a href="/login?return_to=%2Fseifrajhi%2Fawesome-platform-engineering-tools" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/seifrajhi/awesome-platform-engineering-tools","user_id":null}}" data-hydro-click-hmac="0b6be31619864ad059a58ea2e1c26d11647a8f33c6007c5ec866c2a478145481" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2 tmp-mr-2">
|
||
<path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path>
|
||
</svg>Notifications
|
||
</a> <tool-tip id="tooltip-f0693d40-d717-4850-823a-085769e662a4" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<a icon="repo-forked" id="fork-button" href="/login?return_to=%2Fseifrajhi%2Fawesome-platform-engineering-tools" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":726614367,"auth_type":"LOG_IN","originating_url":"https://github.com/seifrajhi/awesome-platform-engineering-tools","user_id":null}}" data-hydro-click-hmac="96dfb8cb86dee8077a3645253181cc848b6abf5051ccfc13d4dd899c5859ac3c" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2 tmp-mr-2">
|
||
<path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path>
|
||
</svg>Fork
|
||
<span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="96" data-view-component="true" class="Counter">96</span>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<div data-view-component="true" class="BtnGroup d-flex">
|
||
<a href="/login?return_to=%2Fseifrajhi%2Fawesome-platform-engineering-tools" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":726614367,"auth_type":"LOG_IN","originating_url":"https://github.com/seifrajhi/awesome-platform-engineering-tools","user_id":null}}" data-hydro-click-hmac="ee617f65f96c44e4203b222d6c3a79f299fb43801c3caeb3ce606b7558d7cfa0" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2 tmp-mr-2">
|
||
<path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path>
|
||
</svg><span data-view-component="true" class="d-inline">
|
||
Star
|
||
</span> <span id="repo-stars-counter-star" aria-label="671 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="671" data-view-component="true" class="Counter js-social-count">671</span>
|
||
</a></div>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div id="responsive-meta-container" data-turbo-replace>
|
||
</div>
|
||
|
||
|
||
<nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 tmp-px-3 px-md-4 tmp-px-md-4 px-lg-5 tmp-px-lg-5">
|
||
|
||
<ul data-view-component="true" class="UnderlineNav-body list-style-none">
|
||
<li data-view-component="true" class="d-inline-flex">
|
||
<a id="code-tab" href="/seifrajhi/awesome-platform-engineering-tools" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /seifrajhi/awesome-platform-engineering-tools" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-command-id="repositories:go-to-code" data-react-nav="code-view" data-react-nav-anchor="code-view-repo-link" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Code","target":"UNDERLINE_NAV.TAB"}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected">
|
||
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline">
|
||
<path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path>
|
||
</svg>
|
||
<span data-content="Code">Code</span>
|
||
<span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>
|
||
|
||
|
||
|
||
</a></li>
|
||
<li data-view-component="true" class="d-inline-flex">
|
||
<a id="issues-tab" href="/seifrajhi/awesome-platform-engineering-tools/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /seifrajhi/awesome-platform-engineering-tools/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-command-id="repositories:go-to-issues" data-react-nav="issues-react" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Issues","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
|
||
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline">
|
||
<path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path>
|
||
</svg>
|
||
<span data-content="Issues">Issues</span>
|
||
<span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="4" data-view-component="true" class="Counter">4</span>
|
||
|
||
|
||
|
||
</a></li>
|
||
<li data-view-component="true" class="d-inline-flex">
|
||
<a id="pull-requests-tab" href="/seifrajhi/awesome-platform-engineering-tools/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /seifrajhi/awesome-platform-engineering-tools/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-command-id="repositories:go-to-pull-requests" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Pull requests","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
|
||
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline">
|
||
<path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path>
|
||
</svg>
|
||
<span data-content="Pull requests">Pull requests</span>
|
||
<span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="29" data-view-component="true" class="Counter">29</span>
|
||
|
||
|
||
|
||
</a></li>
|
||
<li data-view-component="true" class="d-inline-flex">
|
||
<a id="actions-tab" href="/seifrajhi/awesome-platform-engineering-tools/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /seifrajhi/awesome-platform-engineering-tools/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-command-id="repositories:go-to-actions" data-react-nav="actions-workflows" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Actions","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
|
||
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline">
|
||
<path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path>
|
||
</svg>
|
||
<span data-content="Actions">Actions</span>
|
||
<span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>
|
||
|
||
|
||
|
||
</a></li>
|
||
<li data-view-component="true" class="d-inline-flex">
|
||
<a id="projects-tab" href="/seifrajhi/awesome-platform-engineering-tools/projects" data-tab-item="i4projects-tab" data-selected-links="repo_projects new_repo_project repo_project /seifrajhi/awesome-platform-engineering-tools/projects" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g b" data-command-id="repositories:go-to-projects" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Projects","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
|
||
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline">
|
||
<path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path>
|
||
</svg>
|
||
<span data-content="Projects">Projects</span>
|
||
<span id="projects-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>
|
||
|
||
|
||
|
||
</a></li>
|
||
<li data-view-component="true" class="d-inline-flex">
|
||
<a id="security-and-quality-tab" href="/seifrajhi/awesome-platform-engineering-tools/security" data-tab-item="i5security-and-quality-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /seifrajhi/awesome-platform-engineering-tools/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-command-id="repositories:go-to-security" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Security and quality","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
|
||
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline">
|
||
<path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
|
||
</svg>
|
||
<span data-content="Security and quality">Security and quality</span>
|
||
<span id="security-and-quality-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>
|
||
|
||
|
||
|
||
</a></li>
|
||
<li data-view-component="true" class="d-inline-flex">
|
||
<a id="insights-tab" href="/seifrajhi/awesome-platform-engineering-tools/pulse" data-tab-item="i6insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /seifrajhi/awesome-platform-engineering-tools/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-command-id="repositories:go-to-insights" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Insights","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
|
||
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline">
|
||
<path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path>
|
||
</svg>
|
||
<span data-content="Insights">Insights</span>
|
||
<span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>
|
||
|
||
|
||
|
||
</a></li>
|
||
</ul>
|
||
<div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 tmp-pr-3 pr-md-4 tmp-pr-md-4 pr-lg-5 tmp-pr-lg-5 right-0"> <action-menu data-select-variant="none" data-view-component="true">
|
||
<focus-group direction="vertical" mnemonics retain>
|
||
<button id="action-menu-c022d989-4d44-4905-8730-2899da8d2951-button" popovertarget="action-menu-c022d989-4d44-4905-8730-2899da8d2951-overlay" aria-controls="action-menu-c022d989-4d44-4905-8730-2899da8d2951-list" aria-haspopup="true" aria-labelledby="tooltip-cd725061-b06f-4010-90af-b868b1f5c6c6" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item"> <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual">
|
||
<path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path>
|
||
</svg>
|
||
</button><tool-tip id="tooltip-cd725061-b06f-4010-90af-b868b1f5c6c6" for="action-menu-c022d989-4d44-4905-8730-2899da8d2951-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip>
|
||
|
||
|
||
<anchored-position data-target="action-menu.overlay" id="action-menu-c022d989-4d44-4905-8730-2899da8d2951-overlay" anchor="action-menu-c022d989-4d44-4905-8730-2899da8d2951-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true">
|
||
<div data-view-component="true" class="Overlay Overlay--size-auto">
|
||
|
||
<div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list>
|
||
<div data-view-component="true">
|
||
<ul aria-labelledby="action-menu-c022d989-4d44-4905-8730-2899da8d2951-button" id="action-menu-c022d989-4d44-4905-8730-2899da8d2951-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap">
|
||
<li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
|
||
|
||
|
||
<a tabindex="-1" id="item-a94e1521-ed7c-4481-81d6-f2e84a3c3be4" href="/seifrajhi/awesome-platform-engineering-tools" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
|
||
<span class="ActionListItem-visual ActionListItem-visual--leading">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code">
|
||
<path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path>
|
||
</svg>
|
||
</span>
|
||
|
||
<span data-view-component="true" class="ActionListItem-label">
|
||
Code
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
<li hidden="hidden" data-menu-item="i1issues-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
|
||
|
||
|
||
<a tabindex="-1" id="item-ca84e111-56fc-477a-ba99-e1d563b1f9c7" href="/seifrajhi/awesome-platform-engineering-tools/issues" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
|
||
<span class="ActionListItem-visual ActionListItem-visual--leading">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened">
|
||
<path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path>
|
||
</svg>
|
||
</span>
|
||
|
||
<span data-view-component="true" class="ActionListItem-label">
|
||
Issues
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
<li hidden="hidden" data-menu-item="i2pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
|
||
|
||
|
||
<a tabindex="-1" id="item-e8b63d12-efcb-4ed7-9310-d1b6282f8175" href="/seifrajhi/awesome-platform-engineering-tools/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
|
||
<span class="ActionListItem-visual ActionListItem-visual--leading">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request">
|
||
<path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path>
|
||
</svg>
|
||
</span>
|
||
|
||
<span data-view-component="true" class="ActionListItem-label">
|
||
Pull requests
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
<li hidden="hidden" data-menu-item="i3actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
|
||
|
||
|
||
<a tabindex="-1" id="item-3bb0601d-01c4-4775-830c-dccbee8e4d23" href="/seifrajhi/awesome-platform-engineering-tools/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
|
||
<span class="ActionListItem-visual ActionListItem-visual--leading">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play">
|
||
<path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path>
|
||
</svg>
|
||
</span>
|
||
|
||
<span data-view-component="true" class="ActionListItem-label">
|
||
Actions
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
<li hidden="hidden" data-menu-item="i4projects-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
|
||
|
||
|
||
<a tabindex="-1" id="item-59c75010-7e7c-4021-9086-ecd941b51450" href="/seifrajhi/awesome-platform-engineering-tools/projects" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
|
||
<span class="ActionListItem-visual ActionListItem-visual--leading">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table">
|
||
<path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path>
|
||
</svg>
|
||
</span>
|
||
|
||
<span data-view-component="true" class="ActionListItem-label">
|
||
Projects
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
<li hidden="hidden" data-menu-item="i5security-and-quality-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
|
||
|
||
|
||
<a tabindex="-1" id="item-116730ed-2eef-4f8d-9888-c752e5e0c511" href="/seifrajhi/awesome-platform-engineering-tools/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
|
||
<span class="ActionListItem-visual ActionListItem-visual--leading">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield">
|
||
<path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
|
||
</svg>
|
||
</span>
|
||
|
||
<span data-view-component="true" class="ActionListItem-label">
|
||
Security and quality
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
<li hidden="hidden" data-menu-item="i6insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
|
||
|
||
|
||
<a tabindex="-1" id="item-846073fd-67c8-45e3-8f61-5dca5883131c" href="/seifrajhi/awesome-platform-engineering-tools/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
|
||
<span class="ActionListItem-visual ActionListItem-visual--leading">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph">
|
||
<path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path>
|
||
</svg>
|
||
</span>
|
||
|
||
<span data-view-component="true" class="ActionListItem-label">
|
||
Insights
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
</ul>
|
||
</div></action-list>
|
||
|
||
|
||
</div>
|
||
|
||
</div></anchored-position> </focus-group>
|
||
</action-menu></div>
|
||
</nav>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class="">
|
||
<div id="repo-content-pjax-container" class="repository-content " >
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<react-app
|
||
app-name="code-view"
|
||
initial-path="/seifrajhi/awesome-platform-engineering-tools"
|
||
style="display: block; min-height: calc(100vh - 64px);"
|
||
data-attempted-ssr="true"
|
||
data-ssr="true"
|
||
data-lazy="false"
|
||
data-alternate="false"
|
||
data-data-router-enabled="true"
|
||
data-react-profiling="false"
|
||
>
|
||
|
||
<script type="application/json" data-target="react-app.embeddedData">{"payload":{"codeViewRepoRoute":{"path":"/","refInfo":{"name":"main","listCacheKey":"v0:1788474049.0","canEdit":false,"refType":"branch","currentOid":"28625fe1e7b4dafb0f909d4becce04c28b03fd5c"},"tree":{"items":[{"name":".github/workflows","path":".github/workflows","contentType":"directory","hasSimplifiedPath":true},{"name":".husky","path":".husky","contentType":"directory"},{"name":"content","path":"content","contentType":"directory"},{"name":"img","path":"img","contentType":"directory"},{"name":"overrides","path":"overrides","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".lintstagedrc","path":".lintstagedrc","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"mkdocs.yml","path":"mkdocs.yml","contentType":"file"},{"name":"package.json","path":"package.json","contentType":"file"},{"name":"requirements.txt","path":"requirements.txt","contentType":"file"}],"totalCount":14,"templateDirectorySuggestionUrl":null,"readme":null,"showBranchInfobar":false},"userNameDisplayConfiguration":null,"treeExpanded":false,"symbolsExpanded":false,"copilotSWEAgentEnabled":false,"copilotAccessAllowed":false,"isOverview":true,"overview":{"banners":{"shouldRecommendReadme":false,"isPersonalRepo":false,"showUseActionBanner":false,"actionSlug":null,"actionId":null,"showProtectBranchBanner":false,"requiredCustomPropertyValuesMissingCount":0,"transactionalMessageBanner":null,"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_repo","releasePath":"/seifrajhi/awesome-platform-engineering-tools/releases/new?marketplace=true","showPublishActionBanner":false},"interactionLimitBanner":null,"showInvitationBanner":false,"inviterName":null,"actionsMigrationBannerInfo":{"releaseTags":[],"showImmutableActionsMigrationBanner":false,"initialMigrationStatus":null},"copilotSurveyBanner":null,"showSpammyBanner":false,"blockedContributorsBanner":null,"codespacesSurveyBanner":null},"codeButton":{"contactPath":"/contact","isEnterprise":false,"local":{"protocolInfo":{"httpAvailable":true,"sshAvailable":null,"httpUrl":"https://github.com/seifrajhi/awesome-platform-engineering-tools.git","showCloneWarning":null,"sshUrl":null,"sshCertificatesRequired":null,"sshCertificatesAvailable":null,"ghCliUrl":"gh repo clone seifrajhi/awesome-platform-engineering-tools","defaultProtocol":"http","newSshKeyUrl":"/settings/ssh/new","setProtocolPath":"/users/set_protocol?protocol_type=clone"},"platformInfo":{"cloneUrl":"https://desktop.github.com","showVisualStudioCloneButton":false,"visualStudioCloneUrl":"https://windows.github.com","showXcodeCloneButton":false,"xcodeCloneUrl":"xcode://clone?repo=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools","zipballUrl":"/seifrajhi/awesome-platform-engineering-tools/archive/refs/heads/main.zip"}},"newCodespacePath":"/codespaces/new?hide_repo_select=true\u0026repo=726614367"},"popovers":{"rename":null,"renamedParentRepo":null},"commitCount":"267","overviewFiles":[{"displayName":"README.md","repoName":"awesome-platform-engineering-tools","refName":"main","path":"README.md","preferredFileType":"readme","tabName":"README","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAwesome Platform Engineering Tools \u003ca href=\"https://awesome.re\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/134ee8ed89374cd2c151ed27c000717b7ea0694fcfe1408da27380651ba9e4dc/68747470733a2f2f617765736f6d652e72652f62616467652d666c61742e737667\" alt=\"Awesome\" data-canonical-src=\"https://awesome.re/badge-flat.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/h1\u003e\u003ca id=\"user-content-awesome-platform-engineering-tools-\" class=\"anchor\" aria-label=\"Permalink: Awesome Platform Engineering Tools \" href=\"#awesome-platform-engineering-tools-\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\n\u003cp dir=\"auto\"\u003eA curated list of Platform and Production Engineering tools - Maintained by \u003ca href=\"https://twitter.com/RajhiSaifeddine\" rel=\"nofollow\"\u003eSaif Rajhi\u003c/a\u003e\u003c/p\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003e\n \u003ca href=\"https://github.com/seifrajhi/awesome-platform-engineering-tools\"\u003e\n \u003cimg src=\"/seifrajhi/awesome-platform-engineering-tools/raw/main/img/platform.jpeg\" title=\"\" alt=\"\" style=\"max-width: 100%;\"\u003e\n \u003c/a\u003e\n\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContents\u003c/h2\u003e\u003ca id=\"user-content-contents\" class=\"anchor\" aria-label=\"Permalink: Contents\" href=\"#contents\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#awesome-platform-engineering-tools-\"\u003eAwesome Platform Engineering Tools\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#contents\"\u003eContents\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#articles-and-presentations-and-books\"\u003eArticles and Presentations and Books\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#newsletters-chats-and-podcasts\"\u003eNewsletters, Chats and Podcasts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#specifications\"\u003eSpecifications\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reference-architecture\"\u003eReference Architecture\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ai-powered-platform-tools\"\u003eAI powered platform tools\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#development\"\u003eDevelopment\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#source-code-management\"\u003eSource Code Management\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#feature-flags-and-change-management\"\u003eFeature flags and change management\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#project-management--issue-tracking-software\"\u003eProject Management \u0026amp; Issue Tracking Software\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#bug--defect-tracking-software\"\u003eBug / Defect Tracking Software\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#code-editors-and-ides\"\u003eCode Editors and IDE's\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#continuous-testing\"\u003eContinuous Testing\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#continuous-integration\"\u003eContinuous Integration\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#build\"\u003eBuild\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#integration\"\u003eIntegration\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#continuous-delivery\"\u003eContinuous Delivery\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#deployment\"\u003eDeployment\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#automation-and-collaboration\"\u003eAutomation and Collaboration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#infrastructure-orchestration\"\u003eInfrastructure orchestration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#container\"\u003eContainer\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#container-registry\"\u003eContainer Registry\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#container-orchestration\"\u003eContainer Orchestration\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#continuous-monitoring\"\u003eContinuous Monitoring\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#incident-management--incident-response--it-alerting--on-call\"\u003eIncident Management / Incident Response / IT Alerting / On-Call\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#it-service-management\"\u003eIT Service Management\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#incident-communication\"\u003eIncident Communication\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#security\"\u003eSecurity\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#internal-developer-portal\"\u003eInternal Developer Portal\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#path-to-senior-platform-engineer-handbook\"\u003ePath to senior platform engineer handbook\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#miscellaneous-and-related\"\u003eMiscellaneous and Related\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#notions-and-concepts\"\u003eNotions and concepts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#stargazers-over-time\"\u003eStargazers over time\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#licence\"\u003eLicence\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://private-user-images.githubusercontent.com/26981510/382561750-92219814-b0d3-44e7-ae6d-0c5719c8959e.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zODI1NjE3NTAtOTIyMTk4MTQtYjBkMy00NGU3LWFlNmQtMGM1NzE5Yzg5NTllLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIyNmRmYzg3YzQyNjM2NTA5Y2Q5YmM5YjY3YzY0MjUwNWNhNDk1NmFhOGQ2ZjZiNGJkZDljZDRjYmJlMzgyZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Nak4qInIu8n5QMsXpnyKI6z03ITHNAgOuEvVfEhMgOQ\"\u003e\u003cimg width=\"1274\" alt=\"image\" src=\"https://private-user-images.githubusercontent.com/26981510/382561750-92219814-b0d3-44e7-ae6d-0c5719c8959e.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zODI1NjE3NTAtOTIyMTk4MTQtYjBkMy00NGU3LWFlNmQtMGM1NzE5Yzg5NTllLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIyNmRmYzg3YzQyNjM2NTA5Y2Q5YmM5YjY3YzY0MjUwNWNhNDk1NmFhOGQ2ZjZiNGJkZDljZDRjYmJlMzgyZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Nak4qInIu8n5QMsXpnyKI6z03ITHNAgOuEvVfEhMgOQ\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eArticles and Presentations and Books\u003c/h2\u003e\u003ca id=\"user-content-articles-and-presentations-and-books\" class=\"anchor\" aria-label=\"Permalink: Articles and Presentations and Books\" href=\"#articles-and-presentations-and-books\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://theprogressivearchitect.substack.com/p/chances-are-you-dont-need-a-platform\" rel=\"nofollow\"\u003eChances are you don't need a platform team\u003c/a\u003e - How to minimize your platform and maximize user value by \u003ca href=\"https://github.com/bschaatsbergen\"\u003e@bschaatsbergen\u003c/a\u003e \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/watch?v=Rg98GoEHBd4\" rel=\"nofollow\"\u003eHow To Create A Complete Internal Developer Platform (IDP)?\u003c/a\u003e - It's time to build an internal developer platform (IDO) with Crossplane, Argo CD, SchemaHero, External Secrets Operator (ESO), GitHub Actions, Port, and a few others by \u003ca href=\"https://gist.github.com/vfarcic\"\u003e@vfarcic\u003c/a\u003e \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\" alt=\"YouTube video views\" data-canonical-src=\"https://img.shields.io/youtube/views/Rg98GoEHBd4\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/watch?v=1RInP-77iyE\" rel=\"nofollow\"\u003eWhat does it take to become a Platform Engineer?\u003c/a\u003e \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\" alt=\"YouTube video views\" data-canonical-src=\"https://img.shields.io/youtube/views/Rg98GoEHBd4\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/watch?v=p6D-NYkVp9E\" rel=\"nofollow\"\u003ePlatform Engineering How Did We Get Here \u003c/a\u003e \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\" alt=\"YouTube video views\" data-canonical-src=\"https://img.shields.io/youtube/views/Rg98GoEHBd4\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/watch?v=DhtYf05dvQY\" rel=\"nofollow\"\u003eCan we say that Platform Engineering is DevSec(Rel)Ops?\u003c/a\u003e \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\" alt=\"YouTube video views\" data-canonical-src=\"https://img.shields.io/youtube/views/Rg98GoEHBd4\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.getport.io/guide\" rel=\"nofollow\"\u003eThe Practical Guide to Internal Developer Portals\u003c/a\u003e - The next big thing in DevOps is platform engineering, and the main tool it uses is the internal developer portal. Read this guide to understand what can be done with portals and why they matter \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.manning.com/books/platform-engineering-on-kubernetes\" rel=\"nofollow\"\u003ePlatform Engineering on Kubernetes\u003c/a\u003e - A book that teaches how to build custom platforms on top of Kubernetes using open-source tools such as Dapr, Knative, Argo CD and Rollouts, and Tekton. It explores the tools and techniques needed to overcome common cloud-native challenges and is suitable for readers with different expertise levels \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thenewstack.io/build-your-idp-at-light-speed-with-a-platform-reference-architecture/\" rel=\"nofollow\"\u003eBuild Your IDP at Light Speed with a Platform Reference Architecture\u003c/a\u003e - Now organizations have a standard, proven, scalable, and repeatable pattern for internal developer platforms that’s applicable to any tooling choice \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://spacelift.io/blog/what-is-platform-engineering\" rel=\"nofollow\"\u003eWhat Is Platform Engineering? Role, Principles \u0026amp; Benefits\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://blog.container-solutions.com/how-to-design-an-internal-developer-platform\" rel=\"nofollow\"\u003eHow to Design an Internal Developer Platform\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thenewstack.io/a-platform-team-product-manager-determines-devops-success/\" rel=\"nofollow\"\u003eA Platform Team Product Manager Determines DevOps Success\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/wise-engineering/platform-engineering-kpis-6a3215f0ee14\" rel=\"nofollow\"\u003ePlatform Engineering KPIs\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/contino-engineering/creating-your-internal-developer-platform-part-2-65ff217cecd6\" rel=\"nofollow\"\u003ePlatform Engineering: Creating your Internal Developer Platform\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/@rphilogene/the-10-platform-engineering-tools-to-use-in-2022-c2cbf2561f77\" rel=\"nofollow\"\u003eThe 10 Platform Engineering Tools To Use in 2022\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/engineering-at-palo-alto-networks/platform-engineering-at-palo-alto-networks-part-2-315bd7b0fbfa\" rel=\"nofollow\"\u003ePlatform Engineering at Palo Alto Networks\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/agorapulse-stories/platform-engineering-part-1-why-the-evolution-of-developer-cognitive-load-9f36f5cc2888\" rel=\"nofollow\"\u003ePlatform Engineering story from a CTO: WHY, WHAT, HOW\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://developer.hashicorp.com/terraform/tutorials/applications/preview-environments-vercel\" rel=\"nofollow\"\u003eCreate Preview Environments with Terraform, GitHub Actions, and Vercel\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.getport.io/blog/guide-to-internal-developer-portals\" rel=\"nofollow\"\u003eGuide To Internal Developer Portals\u003c/a\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.aquasec.com/blog/introducing-kbom-kubernetes-bill-of-materials/?trk=article-ssr-frontend-pulse_little-text-block\" rel=\"nofollow\"\u003eIntroducing KBOM – Kubernetes Bill of Materials\u003c/a\u003e \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thenewstack.io/platform-engineering-is-not-just-about-the-tools/\" rel=\"nofollow\"\u003ePlatform Engineering Is Not Just about the Tools\u003c/a\u003e - Platform engineering isn’t solely about the tools and components but also about alignment within the organization and a special focus on understanding user needs \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thenewstack.io/platform-engineering-rules-the-day-eight-key-themes/\" rel=\"nofollow\"\u003ePlatform Engineering Rules the Day\u003c/a\u003e - Eight Key Themes \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/google-cloud/how-to-start-platform-engineering-practice-to-improve-developer-experience-48bc3e9c96de\" rel=\"nofollow\"\u003eWwhat is Platform Engineering and why it is important for better developer experience\u003c/a\u003e - Some of the core tenets of Platform Engineering.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cloud.google.com/blog/products/application-development/common-myths-about-platform-engineering\" rel=\"nofollow\"\u003e5 myths about platform engineering: what it is and what it isn’t\u003c/a\u003e - Five common myths about platform engineering\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.eficode.com/platform-engineering?utm_campaign=DevOps\u0026amp;utm_content=189322221\u0026amp;utm_medium=social\u0026amp;utm_source=linkedin\u0026amp;hss_channel=lcp-741299\" rel=\"nofollow\"\u003eThe ultimate guide to platform engineering\u003c/a\u003e - Stay competetive: embrace platform engineering \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/beyond-the-code-by-typo/top-platform-engineering-kpis-you-need-to-monitor-b14a405b4eb7\" rel=\"nofollow\"\u003eTop Platform Engineering KPIs You Need to Monitor\u003c/a\u003e - A curated list of top platform engineering KPIs that software teams must monitor \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://newsletter.cote.io/p/platform-engineering-problems-can\" rel=\"nofollow\"\u003eCan ops actually do product management\u003c/a\u003e - Platform engineering problems: can ops actually do product management?.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.pulumi.com/blog/scale-ai-innovation-with-platform-engineering/\" rel=\"nofollow\"\u003ePulumi Platform Engineering\u003c/a\u003e - Accelerate, Scale and Secure AI Innovation with Pulumi Platform Engineering \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.gartner.com/en/infrastructure-and-it-operations-leaders/topics/platform-engineering\" rel=\"nofollow\"\u003eInsights to enable your platform engineering team to improve agility and customer focus\u003c/a\u003e - A Platform engineering that empowers users and reduces risk \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.informationweek.com/it-leadership/can-your-developers-benefit-from-platform-engineering-\" rel=\"nofollow\"\u003eCan Your Developers Benefit from Platform Engineering?\u003c/a\u003e - Will designing tools and workflows to bring self-service to software development help developers work more efficiently? \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.amazon.com/dp/B0DJPYQB5X/\" rel=\"nofollow\"\u003ePlatform Engineering: A Guide for Technical, Product, and People Leaders\u003c/a\u003e - This book guides you on adopting a developer-centric approach to platform engineering, understanding and building platform teams, automating infrastructure, and managing platform scalability and team dynamics. It also covers the role of a platform product manager and improving developer experience through self-service infrastructure \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/4134d692e0a70748e2e79e95cab0c98fa6a4afa4971fc8212b26a70bb68e4e6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f626f6f6b2d616374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/4134d692e0a70748e2e79e95cab0c98fa6a4afa4971fc8212b26a70bb68e4e6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f626f6f6b2d616374697665\" alt=\"Book Status\" data-canonical-src=\"https://img.shields.io/badge/book-active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.manning.com/books/effective-platform-engineering\" rel=\"nofollow\"\u003eEffective Platform Engineering\u003c/a\u003e - Learn to design and build platforms and tools that maximize developer efficiency \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/4134d692e0a70748e2e79e95cab0c98fa6a4afa4971fc8212b26a70bb68e4e6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f626f6f6b2d616374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/4134d692e0a70748e2e79e95cab0c98fa6a4afa4971fc8212b26a70bb68e4e6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f626f6f6b2d616374697665\" alt=\"Book Status\" data-canonical-src=\"https://img.shields.io/badge/book-active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.resourcely.io/post/the-road-to-simplicity\" rel=\"nofollow\"\u003eThe Road to Simplicity\u003c/a\u003e - What platform engineering can learn from automobile design \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://earthly.dev/blog/platform-engineering-tools/\" rel=\"nofollow\"\u003eTop 7 Platform Engineering Tools\u003c/a\u003e - Key platform engineering tools for developers \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.platformengineeringpod.com/\" rel=\"nofollow\"\u003ePlatform Engineering Podcast\u003c/a\u003e - This podcast caters to professionals and enthusiasts passionate about the intricacies of platform architecture, cloud operations, and scaling DevOps practices \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/0b0817c40e55842f88e3d3d89138bcee662f0fc3e92e5773f04f86091aabc464/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706f64636173742d616374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/0b0817c40e55842f88e3d3d89138bcee662f0fc3e92e5773f04f86091aabc464/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706f64636173742d616374697665\" alt=\"podcast Status\" data-canonical-src=\"https://img.shields.io/badge/podcast-active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://orkohunter.net/blog/a-brief-history-of-platform-engineering/\" rel=\"nofollow\"\u003eA brief history of Platform Engineering\u003c/a\u003e - How the shift to cloud native applications gave rise to a new practice called Platform engineering \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.solo.io/blog/platform-engineering-essential-tools/\" rel=\"nofollow\"\u003ePlatform Engineering Essential Tools\u003c/a\u003e - Key Platform Engineering tools \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.syntasso.io/platform-as-a-product\" rel=\"nofollow\"\u003ePlatform as a Product\u003c/a\u003e - Platform as a Product: What, Why, and How? \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thenewstack.io/the-2024-state-of-platform-engineering-fledgling-at-best/\" rel=\"nofollow\"\u003eState of Platform Engineering\u003c/a\u003e - The 2024 State of Platform Engineering? Fledgling at Best \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/live/eDbQ18Fx0qU\" rel=\"nofollow\"\u003e4000 microservices, 8 million customers, 1 Internal Developer Platform\u003c/a\u003e The story of how Sicredi, a credit union, with over 8 million clients, 2700 branches, and over 45,000 employees embarked on building an Internal Developer Platform to serve its thousands of developers - \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434\" alt=\"YouTube video views\" data-canonical-src=\"https://img.shields.io/youtube/views/Rg98GoEHBd4\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thenewstack.io/platform-engineering-a-workshop-to-help-map-your-strategy/\" rel=\"nofollow\"\u003ePlatform Engineering: A Workshop to Help Map Your Strategy\u003c/a\u003e - Stakeholders from across an organization can decide together what their internal developer platform should do \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://platformengineering.org/blog/platform-engineering-with-crossplane-and-argocd\" rel=\"nofollow\"\u003eCombining practical Platform Engineering with Crossplane and ArgoCD\u003c/a\u003e - A hands-on look into tools and their integrated usage can help kickstart your knowledge about Platform Engineering patterns. Therefore let's dive into two top frameworks when it comes to Platform Engineering today: Crossplane \u0026amp; ArgoCD. Both alone can already be great choices, but combining their powers can unlock a whole new level \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://platformengineering.org/platform-tooling\" rel=\"nofollow\"\u003ePlatform tooling landscape\u003c/a\u003e - Based on 100s of platform engineering setups in organizations of all sizes, this landscape distills the best practices in designing Internal Developer Platforms. \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.xenonstack.com/blog/platform-engineering-reduces-risk\" rel=\"nofollow\"\u003eHow Platform Engineering Empowers Users and Reduces Risk?\u003c/a\u003e - This blog focuses on how platform engineering reduces complexity, enhances user autonomy, and minimizes risks in modern tech ecosystems. \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.pulumi.com/blog/why-every-platform-engineer-should-care-about-kubernetes-operators/\" rel=\"nofollow\"\u003eWhy Every Platform Engineer Should Care About Kubernetes Operators from Pulumi Blog\u003c/a\u003e - Platform Engineer should konw that successful Kubernetes-powered platform is the use of Kubernetes Operators, as they are a great way to automate operational tasks and the lifecycle of complex applications and services on Kubernetes. \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.linkedin.com/pulse/principal-engineer-roles-framework-mai-lan-tomsen-bukovec-142df/\" rel=\"nofollow\"\u003ePrincipal Engineer Roles Framework\u003c/a\u003e - The Principal Engineer Roles Framework by Mai-Lan Tomsen Bukovec outlines six distinct roles (Sponsor, Guide, Catalyst, Tie Breaker, Catcher, and Participant) to optimize impact, support skills development, and maintain clarity and alignment in fast-paced environments. \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665\" alt=\"Blog Status\" data-canonical-src=\"https://img.shields.io/badge/Blog-Active\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eNewsletters, Chats and Podcasts\u003c/h2\u003e\u003ca id=\"user-content-newsletters-chats-and-podcasts\" class=\"anchor\" aria-label=\"Permalink: Newsletters, Chats and Podcasts\" href=\"#newsletters-chats-and-podcasts\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.cncf.io/announcements/2024/11/15/cloud-native-computing-foundation-expands-certification-to-platform-engineering-and-more/\" rel=\"nofollow\"\u003ePlatform Engineering Certification\u003c/a\u003e - Cloud Native Computing Foundation Expands Certification to Platform Engineering.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://platformengineering.org\" rel=\"nofollow\"\u003ePlatform Engineering\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://internaldeveloperplatform.org\" rel=\"nofollow\"\u003eInternal Developer Platform\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thenewstack.io/\" rel=\"nofollow\"\u003eThe New Stack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://internalplatforms.com\" rel=\"nofollow\"\u003eResources about Internal Platform teams and products\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://humanitec.com/blog\" rel=\"nofollow\"\u003eHumanitec (Platform Engineering) Blog\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.infoq.com/platformengineering/\" rel=\"nofollow\"\u003eInfoQ Platform Engineering Articles\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.getport.io/blog\" rel=\"nofollow\"\u003ePort Blog\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://platformweekly.com/\" rel=\"nofollow\"\u003ePlatform weekly\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://platformengineering.org/slack-rd\" rel=\"nofollow\"\u003ePlatformengineering.org Slack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.listennotes.com/podcasts/the-new-stack/whats-platform-engineering-uoN5mXizUpP/\" rel=\"nofollow\"\u003eWhat's Platform Engineering? And How Does It Support DevOps?\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.listennotes.com/podcasts/the-new-stack-podcast-the-new-stack-2tdxfCmwZr6/\" rel=\"nofollow\"\u003eThe New Stack Podcast\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://sites.libsyn.com/419861/platform-engineering-with-nicholas-eberts?trk=article-ssr-frontend-pulse_little-text-block\" rel=\"nofollow\"\u003ePlatform Engineering with Nicholas Eberts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSpecifications\u003c/h2\u003e\u003ca id=\"user-content-specifications\" class=\"anchor\" aria-label=\"Permalink: Specifications\" href=\"#specifications\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://oam.dev/\" rel=\"nofollow\"\u003eOAM: One Application Model\u003c/a\u003e - An open model for defining cloud native apps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.argonaut.dev/\" rel=\"nofollow\"\u003eArgonaut\u003c/a\u003e - Deploy apps and infrastructure on your cloud in minutes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://devtron.ai/\" rel=\"nofollow\"\u003edevtron\u003c/a\u003e - An open source Internal Developer Platform for Kubernetes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://roadie.io/\" rel=\"nofollow\"\u003eSaaS Backstage Roadie\u003c/a\u003e - SaaS Backstage. Simple, safe, and more powerful.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.zymr.com/product-platform-engineering-services\" rel=\"nofollow\"\u003eZYMR\u003c/a\u003e - We excell at Platform engineering.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cto.ai/platform\" rel=\"nofollow\"\u003eCTO: platform for platform teams\u003c/a\u003e - The platform for platform teams : Easily implement your vision for the perfect developer platform without having to build everything from scratch. We’re more than just a CI/CD pipeline. We’re an intelligent automation platform for all of your development workflows.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://score.dev\" rel=\"nofollow\"\u003escore\u003c/a\u003e - One easy way to configure all your workload. Everywhere.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://kubevela.io/\" rel=\"nofollow\"\u003ekubevela\u003c/a\u003e - Make shipping applications more enjoyable.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://kusionstack.io/\" rel=\"nofollow\"\u003ekusionstack\u003c/a\u003e - Open Tech Stack to build self-service, collaborative, reliable and sustainable Internal Developer Platform.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cnoe.io/\" rel=\"nofollow\"\u003eCloud Native Operational Excellence (CNOE)\u003c/a\u003e - CNOE will enable organizations to navigate tooling sprawl and technology churn by coordinating contributions, offering tools, and providing neutral guidance on technology choices to deliver IDPs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://opengitops.dev/\" rel=\"nofollow\"\u003eOpenGitOps\u003c/a\u003e - OpenGitOps is a set of open-source standards, best practices, and community-focused education to help organizations adopt a structured, standardized approach to implementing GitOps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://opea.dev\" rel=\"nofollow\"\u003eOpen Platform for Enterprise AI\u003c/a\u003e - An ecosystem orchestration framework to integrate performant GenAI technologies \u0026amp; workflows leading to quicker GenAI adoption and business value.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/KusionStack/karpor\"\u003ekarpor: Intelligence for Kubernetes.\u003c/a\u003e - World's most promising Kubernetes visualization Tool for developer and platform engineering teams.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eReference Architecture\u003c/h2\u003e\u003ca id=\"user-content-reference-architecture\" class=\"anchor\" aria-label=\"Permalink: Reference Architecture\" href=\"#reference-architecture\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wso2/reference-architecture/tree/master\"\u003eThe Reference Architecture for Agility is a technology-neutral logical architecture based on a disaggregated cloud-based model\u003c/a\u003e - A proven approach to helping every development organization become an integration agile organization.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CloudGeometry/cg-devx-core\"\u003eCloudGeometry Reference Architecture\u003c/a\u003e - CloudGeometry Reference Architecture for simplifying the creation and management of DevOps and Cloud resources.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/humanitec-architecture/reference-architecture-aws\"\u003eAWS Reference Architecture implementation\u003c/a\u003e - How to spin up your Humanitec AWS Reference Architecture.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/humanitec-architecture/reference-architecture-gcp\"\u003eGCP Reference Architecture implementation\u003c/a\u003e - How to spin up your Humanitec Google Cloud Reference Architecture Implementation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/humanitec-architecture/reference-architecture-azure\"\u003eAzure Reference Architecture implementation\u003c/a\u003e - How to spin up your Humanitec Azure Reference Architecture.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/IBM/ibm-cloud-reference-architectures\"\u003eIBM Cloud Reference Architecture\u003c/a\u003e - IBM Infrastructure Automation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simskij/awesome-software-architecture\"\u003eAwesome Software Architecture\u003c/a\u003e - A curated list of resources on software architecture.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAI powered platform tools\u003c/h2\u003e\u003ca id=\"user-content-ai-powered-platform-tools\" class=\"anchor\" aria-label=\"Permalink: AI powered platform tools\" href=\"#ai-powered-platform-tools\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://infrastack.ai/\" rel=\"nofollow\"\u003eInfraStack AI\u003c/a\u003e - AI-Powered Observability Copilot.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.transposit.com/\" rel=\"nofollow\"\u003eAI-Powered Incident Management\u003c/a\u003e - A solution that combines an on-call AI copilot and end-to-end automation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.monolithai.com/\" rel=\"nofollow\"\u003eMonolith\u003c/a\u003e - No-code AI software built for engineers.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.viktor.ai/\" rel=\"nofollow\"\u003eViktor\u003c/a\u003e - Implement AI in your engineering workflow.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.initializ.ai/\" rel=\"nofollow\"\u003einitializ.ai\u003c/a\u003e - AI-Driven Unified DevSecOps Platform.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDevelopment\u003c/h2\u003e\u003ca id=\"user-content-development\" class=\"anchor\" aria-label=\"Permalink: Development\" href=\"#development\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSource Code Management\u003c/h3\u003e\u003ca id=\"user-content-source-code-management\" class=\"anchor\" aria-label=\"Permalink: Source Code Management\" href=\"#source-code-management\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://git-scm.com/\" rel=\"nofollow\"\u003eGit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/\"\u003eGitHub\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://about.gitlab.com/\" rel=\"nofollow\"\u003eGitlab\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://bitbucket.org/\" rel=\"nofollow\"\u003eBitbucket\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.fossil-scm.org/\" rel=\"nofollow\"\u003eFossil\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.mercurial-scm.org/\" rel=\"nofollow\"\u003eMercurial\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.perforce.com/products/helix-core/\" rel=\"nofollow\"\u003ePerforce Helix Core\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://subversion.apache.org/\" rel=\"nofollow\"\u003eSubversion (SVN)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://neovim.io/\" rel=\"nofollow\"\u003eNvim\u003c/a\u003e - hyperextensible Vim-based text editor.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Unleash/unleash\"\u003eUnleash\u003c/a\u003e - Open-source feature management solution built for developers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeature flags and change management\u003c/h3\u003e\u003ca id=\"user-content-feature-flags-and-change-management\" class=\"anchor\" aria-label=\"Permalink: Feature flags and change management\" href=\"#feature-flags-and-change-management\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature#welcome-to-the-openfeature-project-\"\u003eOpenFeature: community-developed specification to standardise feature flag management\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://launchdarkly.com/\" rel=\"nofollow\"\u003eLaunchdarkly: feature flags paid service\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mokkapps.de/blog/how-to-automatically-generate-a-helpful-changelog-from-your-git-commit-messages/\" rel=\"nofollow\"\u003eGit Guide: Generate A Changelog From Your Git Commit Messages\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovatebot/renovate\"\u003eUpdate NPM, pip, Gem etc. dependencies\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.jhipster.tech/upgrading-an-application/#-upgrading-an-application\" rel=\"nofollow\"\u003eUpgrade microservices\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/jscodeshift\"\u003eUpgrade JavaScript or TypeScript codebases\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://hub.qovery.com/guides/tutorial/getting-started-with-preview-environments-on-aws-for-beginners/\" rel=\"nofollow\"\u003eGit Qovery: PR/Commit Preview Environments Platform (paid)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.bunnyshell.com/\" rel=\"nofollow\"\u003eBunnyshell: production replica environments for dev, QA and Staging\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/localstack/localstack\"\u003eLocalStack: A fully functional local AWS cloud stack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.gitpod.io/\" rel=\"nofollow\"\u003eGitpod: cloud development environments\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.okteto.com/\" rel=\"nofollow\"\u003eokteto: spin up dev and preview environments\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eProject Management \u0026amp; Issue Tracking Software\u003c/h3\u003e\u003ca id=\"user-content-project-management--issue-tracking-software\" class=\"anchor\" aria-label=\"Permalink: Project Management \u0026amp; Issue Tracking Software\" href=\"#project-management--issue-tracking-software\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.atlassian.com/software/jira\" rel=\"nofollow\"\u003eJira\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://trello.com/\" rel=\"nofollow\"\u003eTrello\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.zoho.com/sprints/\" rel=\"nofollow\"\u003eZoho Sprints\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://taiga.io/\" rel=\"nofollow\"\u003eTaiga\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.wrike.com/\" rel=\"nofollow\"\u003eWrike\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://asana.com/\" rel=\"nofollow\"\u003eAsana\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://monday.com/\" rel=\"nofollow\"\u003eMonday.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://clickup.com/\" rel=\"nofollow\"\u003eClickup\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://basecamp.com/\" rel=\"nofollow\"\u003eBasecamp\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.broadcom.com/products/software/value-stream-management/rally\" rel=\"nofollow\"\u003eRally\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.teamwork.com/\" rel=\"nofollow\"\u003eTeamwork\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.redmine.org/\" rel=\"nofollow\"\u003eRedmine\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.freedcamp.com/\" rel=\"nofollow\"\u003eFreedcamp\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.shortcut.com/\" rel=\"nofollow\"\u003eShortcut\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://azure.microsoft.com/en-us/products/devops/boards/\" rel=\"nofollow\"\u003eAzure Boards\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/features/project-management\"\u003eGitHub Projects\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.gitlab.com/ee/user/project/issue_board.html\" rel=\"nofollow\"\u003eGitLab Boards\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://bitbucket.org/product/features/issues\" rel=\"nofollow\"\u003eBitbucket Issues\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://linear.app/\" rel=\"nofollow\"\u003eLinear\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug / Defect Tracking Software\u003c/h3\u003e\u003ca id=\"user-content-bug--defect-tracking-software\" class=\"anchor\" aria-label=\"Permalink: Bug / Defect Tracking Software\" href=\"#bug--defect-tracking-software\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.bugzilla.org/\" rel=\"nofollow\"\u003eBugzilla\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.bugsee.com/\" rel=\"nofollow\"\u003eBugsee\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://instabug.com/\" rel=\"nofollow\"\u003eInstabug\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.zoho.in/bugtracker/\" rel=\"nofollow\"\u003eZoho BugTracker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://bugasura.io\" rel=\"nofollow\"\u003eBugasura\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.mantisbt.org/\" rel=\"nofollow\"\u003eMantis Bug Tracker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.github.com/en/issues/tracking-your-work-with-issues\"\u003eGithub Issues\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCode Editors and IDEs\u003c/h3\u003e\u003ca id=\"user-content-code-editors-and-ides\" class=\"anchor\" aria-label=\"Permalink: Code Editors and IDEs\" href=\"#code-editors-and-ides\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.gnu.org/software/emacs/\" rel=\"nofollow\"\u003eGNU Emacs\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://notepad-plus-plus.org/\" rel=\"nofollow\"\u003eNotepad++\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://atom.io/\" rel=\"nofollow\"\u003eAtom\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://code.visualstudio.com/\" rel=\"nofollow\"\u003eVisual Studio Code\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.sublimetext.com/\" rel=\"nofollow\"\u003eSublime Text\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.vim.org/\" rel=\"nofollow\"\u003eVim\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.eclipse.org/downloads/\" rel=\"nofollow\"\u003eEclipse\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.nano-editor.org/\" rel=\"nofollow\"\u003eGNU Nano\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.ultraedit.com/\" rel=\"nofollow\"\u003eUltraEdit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://macromates.com/\" rel=\"nofollow\"\u003eTextMate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.gnome.org/GNOME/gedit/\" rel=\"nofollow\"\u003egedit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.jetbrains.com/webstorm/\" rel=\"nofollow\"\u003eWebStorm\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.jetbrains.com/idea/\" rel=\"nofollow\"\u003eIntelliJ IDEA\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.jetbrains.com/pycharm/\" rel=\"nofollow\"\u003ePyCharm\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.eclipse.org/che/\" rel=\"nofollow\"\u003eEclipse Che\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContinuous Testing\u003c/h2\u003e\u003ca id=\"user-content-continuous-testing\" class=\"anchor\" aria-label=\"Permalink: Continuous Testing\" href=\"#continuous-testing\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.seleniumhq.org/\" rel=\"nofollow\"\u003eSelenium\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://junit.org/\" rel=\"nofollow\"\u003eJUnit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://testng.org/doc/index.html\" rel=\"nofollow\"\u003eTestNG\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://nunit.org/\" rel=\"nofollow\"\u003eNUnit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://testsigma.com/\" rel=\"nofollow\"\u003eTestSigma\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.microfocus.com/en-us/products/unified-functional-automated-testing/overview\" rel=\"nofollow\"\u003eUnified Functional Testing (UFT)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.tricentis.com/products/automate-continuous-testing-tosca/\" rel=\"nofollow\"\u003eTricentis Tosca\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.ibm.com/in-en/marketplace/rational-functional-tester\" rel=\"nofollow\"\u003eIBM Rational Functional Tester\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://smartbear.com/product/testcomplete/overview/\" rel=\"nofollow\"\u003eTestComplete\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://watir.com/\" rel=\"nofollow\"\u003eWaitr\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.getzephyr.com/\" rel=\"nofollow\"\u003eZephyr\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.accelq.com/\" rel=\"nofollow\"\u003eaccelQ\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://jmeter.apache.org/\" rel=\"nofollow\"\u003eApache jMeter\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://appium.io/\" rel=\"nofollow\"\u003eAppium\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.steadybit.com/\" rel=\"nofollow\"\u003esteadybit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://k6.io/\" rel=\"nofollow\"\u003ek6\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://jmeter.apache.org/\" rel=\"nofollow\"\u003eApache JMeter\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gatling.io/\" rel=\"nofollow\"\u003eGatling\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.cypress.io/\" rel=\"nofollow\"\u003eCypress\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.gurock.com/testrail/\" rel=\"nofollow\"\u003eTestRail\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContinuous Integration\u003c/h2\u003e\u003ca id=\"user-content-continuous-integration\" class=\"anchor\" aria-label=\"Permalink: Continuous Integration\" href=\"#continuous-integration\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBuild\u003c/h3\u003e\u003ca id=\"user-content-build\" class=\"anchor\" aria-label=\"Permalink: Build\" href=\"#build\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://ninja-build.org/\" rel=\"nofollow\"\u003eNinja\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mesonbuild.com/\" rel=\"nofollow\"\u003eMeson\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cmake.org/\" rel=\"nofollow\"\u003eCMake\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.gnu.org/software/automake/\" rel=\"nofollow\"\u003eAutotools/Automake\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://premake.github.io/\" rel=\"nofollow\"\u003epremake\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://maven.apache.org/\" rel=\"nofollow\"\u003eMaven\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://ant.apache.org/\" rel=\"nofollow\"\u003eAnt\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gradle.org/\" rel=\"nofollow\"\u003eGradle\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.gnu.org/software/make/\" rel=\"nofollow\"\u003eMake\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cakebuild.net/\" rel=\"nofollow\"\u003eCake\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://ruby.github.io/rake/\" rel=\"nofollow\"\u003eRake\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.microsoft.com/en-us/build\" rel=\"nofollow\"\u003eMS Build\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/aki237/drill\" rel=\"nofollow\"\u003eDrill\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://nixos.org/hydra/\" rel=\"nofollow\"\u003eHydra\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://bazel.io\" rel=\"nofollow\"\u003eBazel\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://azure.microsoft.com/en-us/services/devops/\" rel=\"nofollow\"\u003eAzure DevOps\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIntegration\u003c/h3\u003e\u003ca id=\"user-content-integration\" class=\"anchor\" aria-label=\"Permalink: Integration\" href=\"#integration\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://jenkins.io/\" rel=\"nofollow\"\u003eJenkins\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.atlassian.com/software/bamboo\" rel=\"nofollow\"\u003eBamboo\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://hudson-ci.org/\" rel=\"nofollow\"\u003eHudson\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://circleci.com\" rel=\"nofollow\"\u003eCircleCI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.jetbrains.com/teamcity/\" rel=\"nofollow\"\u003eTeamCity\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://about.gitlab.com/product/continuous-integration/\" rel=\"nofollow\"\u003eGitlab CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://travis-ci.org/\" rel=\"nofollow\"\u003eTravis CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://aws.amazon.com/codestar/\" rel=\"nofollow\"\u003eAWS CodeStar\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://buildbot.net/\" rel=\"nofollow\"\u003eBuildbot\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://semaphoreci.com/\" rel=\"nofollow\"\u003eSemaphore CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://concourse-ci.org/\" rel=\"nofollow\"\u003eConcourse CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bleenco/abstruse\"\u003eAbstruse CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://appcenter.ms/\" rel=\"nofollow\"\u003eAppcenter\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://ci.appveyor.com/\" rel=\"nofollow\"\u003eAppveyor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://assertible.com/\" rel=\"nofollow\"\u003eAssertible\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bosondata/badwolf\"\u003eBadwolf\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://bitrise.io/\" rel=\"nofollow\"\u003eBritise\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://buildkite.com/\" rel=\"nofollow\"\u003eBuildkite\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.chronoci.com/\" rel=\"nofollow\"\u003eChrono CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.codacy.com/\" rel=\"nofollow\"\u003eCodacy\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.codeclimate.com/\" rel=\"nofollow\"\u003eCodeClimate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://codefresh.io/\" rel=\"nofollow\"\u003eCodeFresh\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.codeship.io/\" rel=\"nofollow\"\u003eCodeship\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://continuousphp.com/\" rel=\"nofollow\"\u003eContinuousphp\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://drone.io/\" rel=\"nofollow\"\u003eDrone\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://houndci.com/\" rel=\"nofollow\"\u003eHound CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://probo.ci/\" rel=\"nofollow\"\u003eProbo.CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://xebialabs.com/technology/solano-ci/\" rel=\"nofollow\"\u003eSolano CI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.visualstudio.com/team-services/\" rel=\"nofollow\"\u003eVisual Studio Team Services\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.gocd.org/\" rel=\"nofollow\"\u003eGo CD\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://pipelight.dev/\" rel=\"nofollow\"\u003ePipelight\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContinuous Delivery\u003c/h2\u003e\u003ca id=\"user-content-continuous-delivery\" class=\"anchor\" aria-label=\"Permalink: Continuous Delivery\" href=\"#continuous-delivery\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDeployment\u003c/h3\u003e\u003ca id=\"user-content-deployment\" class=\"anchor\" aria-label=\"Permalink: Deployment\" href=\"#deployment\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://aws.amazon.com/codedeploy/\" rel=\"nofollow\"\u003eAWS CodeDeploy\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://electric-cloud.com/products/electricflow/\" rel=\"nofollow\"\u003eElectricFlow\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://octopus.com/\" rel=\"nofollow\"\u003eOctopus Deploy\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www-03.ibm.com/software/products/en/ucdep\" rel=\"nofollow\"\u003eIBM UrbanCode\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://deploybot.com/\" rel=\"nofollow\"\u003eDeployBot\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://app.shippable.com/\" rel=\"nofollow\"\u003eShippable\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.microfocus.com/en-us/products/codar-continuous-deployment/overview\" rel=\"nofollow\"\u003eCodar Continuous Delivery\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://app.wercker.com/\" rel=\"nofollow\"\u003eWercker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://humanitec.com/\" rel=\"nofollow\"\u003eHumanitec\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://argo-cd.readthedocs.io/en/stable/\" rel=\"nofollow\"\u003eArgoCD\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://fluxcd.io/\" rel=\"nofollow\"\u003eFluxCD\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://jenkins-x.io/\" rel=\"nofollow\"\u003eJenkins X\u003c/a\u003e - CI/CD including everything you need to start exploring Kubernetes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://tekton.dev/\" rel=\"nofollow\"\u003eTekton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://buddy.works/\" rel=\"nofollow\"\u003eBuddy Works\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://werf.io/\" rel=\"nofollow\"\u003ewerf\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cloud.google.com/build\" rel=\"nofollow\"\u003eGoogle Cloud Build\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://spinnaker.io/\" rel=\"nofollow\"\u003eSpinnaker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://kluctl.io\" rel=\"nofollow\"\u003eKluctl\u003c/a\u003e - Easily handle Kubernetes deployments of any size, complexity, and across various environments using the push based CLI or pull based GitOps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.seal.io/\" rel=\"nofollow\"\u003eWalrus\u003c/a\u003e - An open-source application management platform based on IaC tools including OpenTofu, Terraform and others. It helps platform engineers build golden paths for developers and empowers developers with self-service capabilities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dyrector-io/dyrectorio\"\u003edyrector.io\u003c/a\u003e - dyrector.io is a self-hosted continuous delivery \u0026amp; deployment platform with version management.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theketchio/\"\u003eketch\u003c/a\u003e - Application delivery framework that facilitates the deployment and management of applications on Kubernetes using a simple command line interface.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAutomation and Collaboration\u003c/h3\u003e\u003ca id=\"user-content-automation-and-collaboration\" class=\"anchor\" aria-label=\"Permalink: Automation and Collaboration\" href=\"#automation-and-collaboration\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.digger.dev/\" rel=\"nofollow\"\u003eDigger\u003c/a\u003e - Infrastructure as code management platform that enables you to run OpenTofu \u0026amp; Terraform in your CI/CD system.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.runatlantis.io/\" rel=\"nofollow\"\u003eAtlantis\u003c/a\u003e — Open Source Terraform Pull Request Automation tool.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.env0.com/\" rel=\"nofollow\"\u003eEnv0\u003c/a\u003e — Automate and Manage IaC at Scale, With Confidence\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://spacelift.io/\" rel=\"nofollow\"\u003eSpacelift\u003c/a\u003e — Spacelift is a sophisticated CI/CD platform for OpenTofu, Terraform, Terragrunt, CloudFormation, Pulumi, Kubernetes, and Ansible.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://terramate.io/\" rel=\"nofollow\"\u003eTerramate\u003c/a\u003e — Terramate adds powerful capabilities such as code generation, stacks, orchestration, change detection, data sharing and more to Terraform.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://terrateam.io/\" rel=\"nofollow\"\u003eTerrateam\u003c/a\u003e — Infrastructure as Code CI/CD for GitHub\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.otf.ninja/latest/\" rel=\"nofollow\"\u003eOTF\u003c/a\u003e — An open source alternative to terraform enterprise.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.hatchet.run/\" rel=\"nofollow\"\u003eHatchet\u003c/a\u003e — An all-in-one platform to automate, secure and monitor Terraform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.github.com/en/actions\"\u003eGitHub Actions\u003c/a\u003e - Automate, customize, and execute your software development workflows right in your repository\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://runme.dev\" rel=\"nofollow\"\u003eRunme\u003c/a\u003e - Infrastructure Notebooks Built with Markdown. Runme is a free tool that enables Markdown files to become runnable notebooks. You can use scripts in Shell, Perl, Python, and more.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://earthly.dev/\" rel=\"nofollow\"\u003e Earthly\u003c/a\u003e - A versatile, approachable CI/CD framework that runs every pipeline inside containers, giving you repeatable builds that you write once and run anywhere.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eInfrastructure orchestration\u003c/h3\u003e\u003ca id=\"user-content-infrastructure-orchestration\" class=\"anchor\" aria-label=\"Permalink: Infrastructure orchestration\" href=\"#infrastructure-orchestration\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.vagrantup.com/\" rel=\"nofollow\"\u003eVagrant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://puppet.com/\" rel=\"nofollow\"\u003ePuppet\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.chef.io/\" rel=\"nofollow\"\u003eChef\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.saltstack.com/\" rel=\"nofollow\"\u003eSaltStack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.ansible.com/\" rel=\"nofollow\"\u003eAnsible\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.terraform.io/\" rel=\"nofollow\"\u003eTerraform\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://opentofu.org/\" rel=\"nofollow\"\u003eOpenTofu\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://terragrunt.gruntwork.io/\" rel=\"nofollow\"\u003eTerragrunt\u003c/a\u003e - DRY and maintainable Terraform code.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.pulumi.com/\" rel=\"nofollow\"\u003ePulumi\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://aws.amazon.com/cloudformation/\" rel=\"nofollow\"\u003eAWS CloudFormation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.rundeck.com/\" rel=\"nofollow\"\u003eRundeck\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.selefra.io/\" rel=\"nofollow\"\u003eSelefra\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.scalr.com/\" rel=\"nofollow\"\u003eScalr\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cloud.google.com/deployment-manager/\" rel=\"nofollow\"\u003eGoogle Cloud Deployment Manager\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://ops.city\" rel=\"nofollow\"\u003eOPS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://helm.sh/\" rel=\"nofollow\"\u003eHelm\u003c/a\u003e - The package manager for Kubernetes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://helmfile.readthedocs.io/en/latest/\" rel=\"nofollow\"\u003eHelmfile\u003c/a\u003e - Deploy Kubernetes Helm Charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.crossplane.io/\" rel=\"nofollow\"\u003eCrossplane\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.packer.io/\" rel=\"nofollow\"\u003ePacker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kbst/terraform-kubestack\"\u003eKubestack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://shipyard.build/\" rel=\"nofollow\"\u003eShipyard\u003c/a\u003e - Ephemeral environment management platform.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContainer\u003c/h3\u003e\u003ca id=\"user-content-container\" class=\"anchor\" aria-label=\"Permalink: Container\" href=\"#container\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://depot.dev/\" rel=\"nofollow\"\u003eDepot\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.docker.com/\" rel=\"nofollow\"\u003eDocker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://turbo.net/\" rel=\"nofollow\"\u003eTurbo.NET\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://windocks.com/\" rel=\"nofollow\"\u003eWinDocks\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://podman.io/\" rel=\"nofollow\"\u003ePodman\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://containerd.io/\" rel=\"nofollow\"\u003econtainerd\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.openshift.com/\" rel=\"nofollow\"\u003eOpenShift\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContainer Registry\u003c/h3\u003e\u003ca id=\"user-content-container-registry\" class=\"anchor\" aria-label=\"Permalink: Container Registry\" href=\"#container-registry\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://hub.docker.com/\" rel=\"nofollow\"\u003eDocker Hub\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cloud.google.com/container-registry/\" rel=\"nofollow\"\u003eGoogle Container Registry\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://aws.amazon.com/ecr/\" rel=\"nofollow\"\u003eAmazon ECR\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://about.gitlab.com/2016/05/23/gitlab-container-registry/\" rel=\"nofollow\"\u003eGitlab Container Registry\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://jfrog.com/artifactory/\" rel=\"nofollow\"\u003eJFrog Artifactory\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://quay.io/\" rel=\"nofollow\"\u003eQuay.io\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://azure.microsoft.com/en-in/services/container-registry/\" rel=\"nofollow\"\u003eAzure Container Registry\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://container-registry.oracle.com\" rel=\"nofollow\"\u003eOracle Container Registry\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://help.sonatype.com/repomanager3/formats/docker-registry\" rel=\"nofollow\"\u003eNexus Container Registry\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://goharbor.io/\" rel=\"nofollow\"\u003eHarbor\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContainer Orchestration\u003c/h3\u003e\u003ca id=\"user-content-container-orchestration\" class=\"anchor\" aria-label=\"Permalink: Container Orchestration\" href=\"#container-orchestration\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.io/\" rel=\"nofollow\"\u003eKubernetes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hashicorp/nomad\"\u003eNomad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/engine/swarm/\" rel=\"nofollow\"\u003eDocker Swarm\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mesos.apache.org/\" rel=\"nofollow\"\u003eApache Mesos\u003c/a\u003e - with \u003ca href=\"https://mesosphere.github.io/marathon/\" rel=\"nofollow\"\u003eMarathon\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContinuous Monitoring\u003c/h2\u003e\u003ca id=\"user-content-continuous-monitoring\" class=\"anchor\" aria-label=\"Permalink: Continuous Monitoring\" href=\"#continuous-monitoring\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://aws.amazon.com/cloudwatch/\" rel=\"nofollow\"\u003eAWS CloudWatch\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.debugbear.com/\" rel=\"nofollow\"\u003eDebugBear\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://prometheus.io/\" rel=\"nofollow\"\u003ePrometheus\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cloud.google.com/stackdriver/\" rel=\"nofollow\"\u003eStackDriver\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://sensu.io/\" rel=\"nofollow\"\u003eSensu\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://sentry.io/welcome/\" rel=\"nofollow\"\u003eSentry\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.idera.com/infrastructure-monitoring-as-a-service\" rel=\"nofollow\"\u003eCopperEgg\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://fabric.io/kits/android/crashlytics\" rel=\"nofollow\"\u003eCrashlytics\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.influxdata.com/time-series-platform/kapacitor/\" rel=\"nofollow\"\u003eKapacitor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.loggly.com/\" rel=\"nofollow\"\u003eloggly\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://logmatic.io/\" rel=\"nofollow\"\u003elogmatic\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.elastic.co/products/logstash\" rel=\"nofollow\"\u003eLogstash\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.mongodb.com/cloud/atlas\" rel=\"nofollow\"\u003eMongoDB Atlas\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.mongodb.com/cloud/cloud-manager\" rel=\"nofollow\"\u003eMongoDB Cloud Manager\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://newrelic.com/\" rel=\"nofollow\"\u003eNewRelic\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://papertrailapp.com/\" rel=\"nofollow\"\u003ePapertrail\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://tools.pingdom.com/\" rel=\"nofollow\"\u003ePingdom\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.serverdensity.com/\" rel=\"nofollow\"\u003eServerDensity\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.zabbix.com/\" rel=\"nofollow\"\u003eZabbix\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.rapid7.com/products/insightops/\" rel=\"nofollow\"\u003eInsightOps\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://appsignal.com\" rel=\"nofollow\"\u003eAppSignal\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://grafana.com\" rel=\"nofollow\"\u003eGrafana\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/VictoriaMetrics/VictoriaMetrics/\"\u003eVictoriaMetrics\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.chaosgenius.io/\" rel=\"nofollow\"\u003eChaos Genius\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thanos.io/\" rel=\"nofollow\"\u003eThanos\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://grafana.com/oss/mimir/\" rel=\"nofollow\"\u003eMimir\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://hydrozen.io\" rel=\"nofollow\"\u003eHydrozen.io\u003c/a\u003e - Uptime monitoring \u0026amp; Statuspages\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://steampipe.io\" rel=\"nofollow\"\u003eSteampipe.io\u003c/a\u003e - Universal SQL interface to any cloud API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://betterstack.com/\" rel=\"nofollow\"\u003eBetter Stack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://netdata.cloud\" rel=\"nofollow\"\u003eNetdata\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ingyamilmolinar/doctorgpt\"\u003eDoctorGPT\u003c/a\u003e - Brings GPT into production for application log error monitoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.dynatrace.com/\" rel=\"nofollow\"\u003eDynatrace\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.datadoghq.com/\" rel=\"nofollow\"\u003eDatadog\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.elastic.co/apm\" rel=\"nofollow\"\u003eElastic APM\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://healthchecks.io\" rel=\"nofollow\"\u003eHealthchecks.io\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://onlineornot.com/\" rel=\"nofollow\"\u003eOnlineOrNot\u003c/a\u003e - Uptime monitoring for websites, APIs, and cron jobs, with integrated status pages.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.elastic.co/elastic-stack\" rel=\"nofollow\"\u003eELK Stack (Elasticsearch, Logstash, Kibana)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.victoriametrics.com/victorialogs/\" rel=\"nofollow\"\u003eVictoriaLogs database for logs from VictoriaMetrics\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://opentelemetry.io/\" rel=\"nofollow\"\u003eOpenTelemetry\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fluent/fluentd\"\u003eFluentd CNCF- a Distributed Tracing Platform\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaegertracing/jaeger\"\u003eJaeger CNCF: Unified Logging Layer\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/infracost/infracost\"\u003eInfracost- cost estimates for Terraform\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opencost/opencost\"\u003eOpenCost — open source cost monitoring tool for Kubernetes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/skywalking\"\u003eApache SkyWalking — Application Performance Monitoring\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/signoz/signoz\"\u003eSigNoz- an open-source alternative to DataDog, NewRelic, etc.\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://grafana.com/oss/loki/\" rel=\"nofollow\"\u003eLoki - low cost open source logging; self-hosted or SaaS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/siglens/siglens\"\u003eSigLens\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIncident Management / Incident Response / IT Alerting / On-Call\u003c/h2\u003e\u003ca id=\"user-content-incident-management--incident-response--it-alerting--on-call\" class=\"anchor\" aria-label=\"Permalink: Incident Management / Incident Response / IT Alerting / On-Call\" href=\"#incident-management--incident-response--it-alerting--on-call\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.squadcast.com\" rel=\"nofollow\"\u003eSquadcast\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.pagerduty.com/\" rel=\"nofollow\"\u003ePagerDuty\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://victorops.com/\" rel=\"nofollow\"\u003eVictorOps\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.opsgenie.com/\" rel=\"nofollow\"\u003eOpsGenie\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://alertops.com/\" rel=\"nofollow\"\u003eAlertOps\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.blameless.com/\" rel=\"nofollow\"\u003eBlameless\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.atlassian.com/software/jira/ops\" rel=\"nofollow\"\u003eJira Ops\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.onpage.com/\" rel=\"nofollow\"\u003eOnPage\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://pagertree.com/\" rel=\"nofollow\"\u003ePagerTree\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cabotapp.com/\" rel=\"nofollow\"\u003eCabot\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.alertagility.com/\" rel=\"nofollow\"\u003eAlertAgility\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.xmatters.com/\" rel=\"nofollow\"\u003exMatters\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.derdack.com/\" rel=\"nofollow\"\u003eDerdack Enterprise Alert\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.bigpanda.io/\" rel=\"nofollow\"\u003eBigpanda\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ustream/openduty\"\u003eOpenDuty\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.ngdesk.com/\" rel=\"nofollow\"\u003engDesk\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.itrsgroup.com/products/geneos\" rel=\"nofollow\"\u003eGeneos\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.firehydrant.com\" rel=\"nofollow\"\u003eFireHydrant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seznam/slo-exporter\"\u003eSLO exporter\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/last9/slo-computer\"\u003eSLO Calculator\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.rootly.io\" rel=\"nofollow\"\u003eRootly\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://grafana.com/oss/oncall/\" rel=\"nofollow\"\u003eGrafana OnCall\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/keephq/keep\"\u003eKeep - CLI for alerting\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://betterstack.com/\" rel=\"nofollow\"\u003eBetter Stack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.everbridge.com/\" rel=\"nofollow\"\u003eEverbridge\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.moogsoft.com/\" rel=\"nofollow\"\u003eMoogsoft\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://incident.io/\" rel=\"nofollow\"\u003eincident.io\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://prometheus.io/docs/alerting/latest/alertmanager/\" rel=\"nofollow\"\u003eAlertManager\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://rootly.com\" rel=\"nofollow\"\u003erootly\u003c/a\u003e - Manage incidents directly from Slack\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://pagerly.io\" rel=\"nofollow\"\u003ePagerly\u003c/a\u003e - Manage Oncalls and Incidents on Slack\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIT Service Management\u003c/h3\u003e\u003ca id=\"user-content-it-service-management\" class=\"anchor\" aria-label=\"Permalink: IT Service Management\" href=\"#it-service-management\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://homer-demo.netlify.app/\" rel=\"nofollow\"\u003eHomer\u003c/a\u003e - A very simple static homepage for your server.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://freshservice.com/\" rel=\"nofollow\"\u003eFreshService\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.servicenow.com/\" rel=\"nofollow\"\u003eServiceNow\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.bmcsoftware.in/it-solutions/remedy-itsm.html\" rel=\"nofollow\"\u003eBMC Remedy\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.atlassian.com/software/jira/service-management\" rel=\"nofollow\"\u003eJira Service Management(formerly Jira Service Desk)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.samanage.com/\" rel=\"nofollow\"\u003eSamanage\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.cherwell.com/products/it-service-management/\" rel=\"nofollow\"\u003eCherwell\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.sysaid.com/it-service-management-software\" rel=\"nofollow\"\u003eSysAid\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.manageengine.com/products/service-desk/\" rel=\"nofollow\"\u003eManageEngine Servicedesk plus\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.zendesk.com/\" rel=\"nofollow\"\u003eZendesk\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIncident Communication\u003c/h3\u003e\u003ca id=\"user-content-incident-communication\" class=\"anchor\" aria-label=\"Permalink: Incident Communication\" href=\"#incident-communication\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.squadcast.com/statuspage\" rel=\"nofollow\"\u003eSquadcast Statuspages\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://statuspal.io/?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_campaign=awesome-devops\" rel=\"nofollow\"\u003eStatusPal\u003c/a\u003e - communicate incidents and maintenance effectively with a beautiful hosted status page.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://hydrozen.io\" rel=\"nofollow\"\u003eHydrozen.io Statuspages\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.atlassian.com/software/statuspage\" rel=\"nofollow\"\u003eAtlassian Statuspages\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://instatus.com\" rel=\"nofollow\"\u003eInstatus Statuspages\u003c/a\u003e - Quick and beautiful status page.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cachethq.io/\" rel=\"nofollow\"\u003eCachet\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSecurity\u003c/h2\u003e\u003ca id=\"user-content-security\" class=\"anchor\" aria-label=\"Permalink: Security\" href=\"#security\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://sysdig.com/\" rel=\"nofollow\"\u003eSysdig Secure\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.aquasec.com/\" rel=\"nofollow\"\u003eAqua Security\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.wiz.io/\" rel=\"nofollow\"\u003eWiz\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://wazuh.com/\" rel=\"nofollow\"\u003eWazuh\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.qualys.com/cloud-platform/\" rel=\"nofollow\"\u003eQualys Cloud Platform\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eInternal Developer Portal\u003c/h2\u003e\u003ca id=\"user-content-internal-developer-portal\" class=\"anchor\" aria-label=\"Permalink: Internal Developer Portal\" href=\"#internal-developer-portal\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://www.getport.io/\" rel=\"nofollow\"\u003ePort\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://backstage.io/\" rel=\"nofollow\"\u003eBackstage Software Catalog\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.opslevel.com/\" rel=\"nofollow\"\u003eOpsLevel\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.kusionstack.io/\" rel=\"nofollow\"\u003eKusionStack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.kubestack.com/\" rel=\"nofollow\"\u003eKubeStack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://radapp.io/\" rel=\"nofollow\"\u003eRadius app\u003c/a\u003e - Open-source, cloud-native, application platform that enables developers and the operators that support them to define, deploy, and collaborate on cloud-native applications across public clouds and private infrastructure.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mia-platform.eu\" rel=\"nofollow\"\u003eMia platform\u003c/a\u003e - Don’t waste time setting up your platform, just push the code!.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://humanitec.com\" rel=\"nofollow\"\u003eHumanitec\u003c/a\u003e - Powering your Internal Developer Platform.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.appvia.io\" rel=\"nofollow\"\u003eAppvia\u003c/a\u003e - Increase Developer productivity with self-service.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.qovery.com\" rel=\"nofollow\"\u003eqovery\u003c/a\u003e - Deliver Self-Service Infrastructure Faster.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mogenius.com\" rel=\"nofollow\"\u003eMogenius\u003c/a\u003e - The Kubernetes Operations Platform.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.nullstone.io\" rel=\"nofollow\"\u003eNullstone\u003c/a\u003e - An easy-to-use developer platform that enables developers to quickly deploy any application.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/syntasso/kratix\"\u003eKratix\u003c/a\u003e - A framework for building Platform-as-a-Product.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.cycloid.io/platform-engineering\" rel=\"nofollow\"\u003ecycloid\u003c/a\u003e - Platform Engineering is DevOps with an action plan.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://shipa.io/\" rel=\"nofollow\"\u003eShipa\u003c/a\u003e - Shipa simplifies the way you deploy, secure, and manage applications across cloud native infrastructures by taking an application-centric approach.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.upbound.io/\" rel=\"nofollow\"\u003eUpbound\u003c/a\u003e - The platform for platform teams.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubero-dev/kubero\"\u003eKubero\u003c/a\u003e - A fully self-hosted Internal Developer Platform (IDP).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://roadie.io\" rel=\"nofollow\"\u003eRoadie Internal Developer Portal\u003c/a\u003e - SaaS-based Internal Developer Portal.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePath to senior platform engineer handbook\u003c/h2\u003e\u003ca id=\"user-content-path-to-senior-platform-engineer-handbook\" class=\"anchor\" aria-label=\"Permalink: Path to senior platform engineer handbook\" href=\"#path-to-senior-platform-engineer-handbook\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://4dayweek.io/career-path/platform-engineer\" rel=\"nofollow\"\u003ePlatform Engineer Career Path\u003c/a\u003e - Everything you need to know to senior platform engineer and beyond.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/platform-engineering-unleashed/the-rise-of-the-platform-engineer-a-guide-to-shaping-your-career-2f1348a47ef9\" rel=\"nofollow\"\u003eA Guide to shaping your Platform Engineer career\u003c/a\u003e - Platform Engineering career pathing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003ePlatform Engineering serves as a distinct and valuable career path within an organization, complementing roles like DevOps and Site Reliability Engineering (SRE). While DevOps and SRE ensure smooth software development processes and reliable, scalable infrastructure respectively, Platform Engineers are entrusted with the unique responsibility of crafting the tools, processes, and platforms on which software development and operational tasks occur\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePlatform Engineering Career pathing\u003c/h3\u003e\u003ca id=\"user-content-platform-engineering-career-pathing\" class=\"anchor\" aria-label=\"Permalink: Platform Engineering Career pathing\" href=\"#platform-engineering-career-pathing\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://private-user-images.githubusercontent.com/26981510/339964631-f6ce7cbd-b339-4aef-812f-163c07c9fbbe.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zMzk5NjQ2MzEtZjZjZTdjYmQtYjMzOS00YWVmLTgxMmYtMTYzYzA3YzlmYmJlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcwMjRlN2M3ZThlMDNmYTRiYzJlMTIyMzg3MmNlMzJiYzViYzU2ZjQzYzRiMDBjZDRiZjhhZjRkZGRjNDAxZDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.CdHUNvs-cAoqjl4jExaYcYK72PAss4wu0x77WNZZDBc\"\u003e\u003cimg src=\"https://private-user-images.githubusercontent.com/26981510/339964631-f6ce7cbd-b339-4aef-812f-163c07c9fbbe.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zMzk5NjQ2MzEtZjZjZTdjYmQtYjMzOS00YWVmLTgxMmYtMTYzYzA3YzlmYmJlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcwMjRlN2M3ZThlMDNmYTRiYzJlMTIyMzg3MmNlMzJiYzViYzU2ZjQzYzRiMDBjZDRiZjhhZjRkZGRjNDAxZDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.CdHUNvs-cAoqjl4jExaYcYK72PAss4wu0x77WNZZDBc\" alt=\"image\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://private-user-images.githubusercontent.com/26981510/339964649-836098ac-d479-4bbc-8d2d-fb1de1253909.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zMzk5NjQ2NDktODM2MDk4YWMtZDQ3OS00YmJjLThkMmQtZmIxZGUxMjUzOTA5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhYjhjYjU4YzM3ZTk4N2YwYmM1MGI5NDg2YjU2ZjFiNzRlOWUyZmYyZTcxYzliYzg5OWYzZDRiZjA4Y2FlOTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.VjoatJrHmy5AbFYGGcnj7Uvp4HHQsdzN50C5cuhEr4w\"\u003e\u003cimg src=\"https://private-user-images.githubusercontent.com/26981510/339964649-836098ac-d479-4bbc-8d2d-fb1de1253909.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zMzk5NjQ2NDktODM2MDk4YWMtZDQ3OS00YmJjLThkMmQtZmIxZGUxMjUzOTA5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhYjhjYjU4YzM3ZTk4N2YwYmM1MGI5NDg2YjU2ZjFiNzRlOWUyZmYyZTcxYzliYzg5OWYzZDRiZjA4Y2FlOTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.VjoatJrHmy5AbFYGGcnj7Uvp4HHQsdzN50C5cuhEr4w\" alt=\"image\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePlatform Engineering Roles Summary\u003c/h3\u003e\u003ca id=\"user-content-platform-engineering-roles-summary\" class=\"anchor\" aria-label=\"Permalink: Platform Engineering Roles Summary\" href=\"#platform-engineering-roles-summary\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eJunior Platform Engineer:\u003c/strong\u003e\u003cbr\u003e\nHandles routine tasks, troubleshooting, cloud configurations, and code reviews.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e Basic scripting, cloud tech, containerization, Golang, Kubernetes.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003ePlatform Engineer:\u003c/strong\u003e\u003cbr\u003e\nImplements features, security, system scaling, and CI/CD tools.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e Advanced cloud platforms, containerization, CI/CD, scripting, Golang, Kubernetes.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSenior Platform Engineer:\u003c/strong\u003e\u003cbr\u003e\nDesigns architecture, mentors, manages projects, ensures security.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e System architecture, cloud computing, containerization, CI/CD, Golang, Kubernetes.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eLead Platform Engineer:\u003c/strong\u003e\u003cbr\u003e\nLeads team, manages projects, strategic decisions, stakeholder interaction.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e Systems design, project management, various tech stacks, Golang, Kubernetes.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eStaff Platform Engineer:\u003c/strong\u003e\u003cbr\u003e\nSets technical direction, standards, leads projects, guides cloud services.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e Multiple tech stacks, system design, performance, security, Golang, Kubernetes.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003ePrincipal Platform Engineer:\u003c/strong\u003e\u003cbr\u003e\nTechnical leader, sets vision, strategy, engineering processes, cloud strategy.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e Broad tech expertise, strategic planning, complex engineering processes, Golang, Kubernetes.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003ePlatform Engineering Manager:\u003c/strong\u003e\u003cbr\u003e\nOversees teams, strategic direction, performance, budgeting, alignment with business.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e Technical background, budgeting, talent development, Golang, Kubernetes.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSenior Manager, Platform Engineering:\u003c/strong\u003e\u003cbr\u003e\nSets organization-wide strategy, manages teams, cross-team collaboration, cloud strategy.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e Broad tech knowledge, business understanding, engineering management, Golang, Kubernetes.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eDirector of Platform Engineering:\u003c/strong\u003e\u003cbr\u003e\nSets vision, plans execution, tech decisions, team structure, budget management, strategic planning.\u003cbr\u003e\n\u003cem\u003eSkills:\u003c/em\u003e Vision setting, strategic planning, cloud strategy, Golang, Kubernetes.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMiscellaneous and Related\u003c/h2\u003e\u003ca id=\"user-content-miscellaneous-and-related\" class=\"anchor\" aria-label=\"Permalink: Miscellaneous and Related\" href=\"#miscellaneous-and-related\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://landscape.cncf.io/\" rel=\"nofollow\"\u003eCloud Native Interactive Landscape\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://platformengineering.org/platform-tooling\" rel=\"nofollow\"\u003ePlatformengineering.org tooling list\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/toptechevangelist/awesome-platform-engineering\"\u003ePlatform Engineering list\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.syntasso.io/post/the-12-platform-challenges-of-christmas\" rel=\"nofollow\"\u003eThe 12 Platform Challenges\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TaptuIT/awesome-devsecops/\"\u003eDevSecOps resources and tooling\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://learn.microsoft.com/en-us/azure/architecture/patterns/\" rel=\"nofollow\"\u003eArchitecture- Cloud Design Patterns\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eNotions and concepts\u003c/h2\u003e\u003ca id=\"user-content-notions-and-concepts\" class=\"anchor\" aria-label=\"Permalink: Notions and concepts\" href=\"#notions-and-concepts\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFundamentals\u003c/h3\u003e\u003ca id=\"user-content-fundamentals\" class=\"anchor\" aria-label=\"Permalink: Fundamentals\" href=\"#fundamentals\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eKeep it simple, stupid. You ain't gonna need it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eYou should think about what to do before you do it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eYou should try to talk about what you’re planning to do before you do it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eYou should think about what you did after you did it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eBe prepared to throw away something you’ve done in order to do something different.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eAlways look for better ways of doing things.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e“Good enough” isn’t good enough.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCode\u003c/h3\u003e\u003ca id=\"user-content-code\" class=\"anchor\" aria-label=\"Permalink: Code\" href=\"#code\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eCode is a liability, not an asset. Aim to have as little of it as possible.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eBuild programs out of pure functions. This saves you from spending your brain power on tracking side effects, mutated state and actions at a distance.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eUse a programming language with a rich type system that lets you describe the parts of your code and checks your program at compile time.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eThe expressivity of a programming language matters hugely. It’s not just a convenience to save keypresses, it directly influences the way in which you write code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eChoose a programming language that has a good module system, and use it. Be explicit about the public interface of a module, and ensure its interals don't leak out to client code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eCode is a living construct that is never “done”. You need to tend it like a garden, always improving and tidying it, or it withers and dies.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eHave the same high standards for all the code you write, from little scripts to the inner loop of your critical system.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eWrite code that is exception safe and resource safe, always, even in contexts where you think it won’t matter. The code you wrote in a little ad-hoc script will inevitably find its way into more critical or long-running code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eUse the same language for the little tools and scripts in your system too. There are few good reasons to drop down into bash or Python scripts, and some considerable disadvantages.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eIn code, even the smallest details matter. This includes whitespace and layout!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDesign\u003c/h3\u003e\u003ca id=\"user-content-design\" class=\"anchor\" aria-label=\"Permalink: Design\" href=\"#design\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eModelling - the act of creating models of the world - is a crucial skill, and one that’s been undervalued in recent years.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eModel your domain using types.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eModel your domain first, using data types and function signatures, pick implementation technologies and physical architecture later.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eImplement functionality in vertical slices that span your whole system, and iterate to grow the system.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eResist the temptation to use your main domain types to describe interfaces or messages exchanged by your system. Use separate types for these, even if it entails some duplication, as these types will evolve differently over time.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003ePrefer immutability always. This applies to data storage as well as in-memory data structures.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eWhen building programs that perform actions, model the actions as data, then write an interpreter that performs them. This makes your code much easier to test, monitor, debug, and refactor.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eDependency management is crucial, so do it from day one. The payoff for this mostly comes when your system is bigger, but it’s not expensive to do from the beginning and it saves massive problems later.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eAvoid circular dependencies, always.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDesigning systems\u003c/h3\u003e\u003ca id=\"user-content-designing-systems\" class=\"anchor\" aria-label=\"Permalink: Designing systems\" href=\"#designing-systems\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eA better system is often a smaller, simpler system.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eTo design healthy systems, divide and conquer. Split the problem into smaller parts.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eDivide and conquer works recursively: divide the system into a hierarchy of simpler sub-systems and components.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cem\u003eCorollary: When designing a system, there are more choices than a monolith vs. a thousand “microservices”.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eThe interface between parts is crucial. Aim for interfaces that are as small and simple as possible.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eData dependencies are insidious. Take particular care to manage the coupling introduced by such dependencies.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003ePlan to evolve data definitions over time, as they will inevitably change.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eAsynchronous interfaces can be useful to remove temporal coupling between parts.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eEvery inter-process boundary incurs a great cost, losing type safety, and making it much harder to reason about failures. Only introduce such boundaries where absolutely necessary and where the benefits outweigh the cost.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eBeing able to tell what your system is doing is crucial, so make sure it’s observable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eTelling what your system has done in the past is even more crucial, so make sure it’s auditable.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eA modern programming language is the most expressive tool we have for describing all aspects of a system.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eThis means: write configuration as code, unless it absolutely, definitely has to change at runtime.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eAlso, write the specification of the system as executable code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eAnd, use code to describe the infrastructure of your system, in the same language as the rest of the code. Write code that interprets the description of your system to provision actual physical infrastructure.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eAt the risk of repeating myself: everything is code.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cem\u003eCorollary: if you’re writing JSON or YAML by hand, you’re doing it wrong. These are formats for the machines, not for humans to produce and consume. (Don’t despair though: most people do this, I do too, so you’re not alone! Let's just try to aim for something better).\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eThe physical manifestation of your system (e.g. choices of storage, messaging, RPC technology, packaging and scheduling etc) should usually be an implementation detail, not the main aspect of the system that the rest is built around.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eIt should be easy to change the underlying technologies (e.g. for data storage, messaging, execution environment) used by a component in your system, this should not affect large parts of your code base.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eYou should have at least two physical manifestations of your system: a fully integrated in-memory one for testing, and the real physical deployment. They should be functionally equivalent.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eYou should be able to run a local version of your system on a developer’s computer with a single command. With the capacity of modern computers, there is absolutely no rational reason why this isn’t feasible, even for big, complex systems.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eThere is a running theme here: separate the description of \u003cem\u003ewhat\u003c/em\u003e a system does from \u003cem\u003ehow\u003c/em\u003e it does it. This is probably the single most important consideration when creating a system.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBuilding systems\u003c/h3\u003e\u003ca id=\"user-content-building-systems\" class=\"anchor\" aria-label=\"Permalink: Building systems\" href=\"#building-systems\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eFor a new system, get a walking skeleton deployed to production as soon as possible.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eYour master branch should always be deployable to production.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eUse feature branches if you like. Modern version control tools make merging easy enough that it’s not a problem to let these be long-lived in some cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eIdeally, deploy automatically to production on every update to master. If that’s not feasible, it should be a one-click action to perform the deployment.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eMaintain a separate environment for situations when you find it useful to test code separately from production. Avoid more than one such extra environment, as this introduces overheads and cost.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003ePrefer feature flags and similar mechanisms to control what's enabled in production over separate test/staging environments and manual promotion of releases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eGet in the habit of deploying from master to production from the very beginning of a project. Doing this shapes both your system and how you work with it for the better.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eIn fact, follow all these practices from the very beginning of a new system. Retrofitting them later is much, much harder.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eTechnology\u003c/h3\u003e\u003ca id=\"user-content-technology\" class=\"anchor\" aria-label=\"Permalink: Technology\" href=\"#technology\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eBeware of hyped or fashionable technologies. The fundamentals of computer science and engineering don’t change much over time.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eKeep up with latest developments in technology to see how they can help you, but be realistic about what they can do.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eChoose your data storage backend according to the shape of data, types of queries needed, patterns of writes vs. reads, performance requirements, and more. Every use case is different.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eThat said, PostgreSQL should be your default and you should only pick something else if you have a good reason.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eStargazers over time\u003c/h2\u003e\u003ca id=\"user-content-stargazers-over-time\" class=\"anchor\" aria-label=\"Permalink: Stargazers over time\" href=\"#stargazers-over-time\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://starchart.cc/seifrajhi/awesome-platform-engineering-tools\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/ab9dae421400ea0673c04958001d236b1a76bdb6e8e9ad54dcaa256829cdbfcd/68747470733a2f2f7374617263686172742e63632f7365696672616a68692f617765736f6d652d706c6174666f726d2d656e67696e656572696e672d746f6f6c732e737667\" alt=\"Stargazers over time\" data-canonical-src=\"https://starchart.cc/seifrajhi/awesome-platform-engineering-tools.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eLicence\u003c/h2\u003e\u003ca id=\"user-content-licence\" class=\"anchor\" aria-label=\"Permalink: Licence\" href=\"#licence\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eShield: \u003ca href=\"https://creativecommons.org/licenses/by/4.0/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/59896db2b47e60cf6b6cdd3af4bc9ec3e8d290389a9d3ce7cdb95a955e9d0923/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d43432532304259253230342e302d6c69676874677265792e737667\" alt=\"CC BY 4.0\" data-canonical-src=\"https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis work is licensed under a \u003ca href=\"https://creativecommons.org/licenses/by/4.0/\" rel=\"nofollow\"\u003eCreative Commons Attribution 4.0 International\nLicense\u003c/a\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://creativecommons.org/licenses/by/4.0/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/dde62adfa88dac8de0fd193fd531088d21a3b388e69f6eb17dfa6294dbc4bdef/68747470733a2f2f692e6372656174697665636f6d6d6f6e732e6f72672f6c2f62792f342e302f38387833312e706e67\" alt=\"CC BY 4.0\" data-canonical-src=\"https://i.creativecommons.org/l/by/4.0/88x31.png\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"#0\"\u003eBack to Top\u003c/a\u003e\u003c/p\u003e\n\u003c/article\u003e","loaded":true,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"Awesome Platform Engineering Tools ","anchor":"awesome-platform-engineering-tools-","htmlText":"Awesome Platform Engineering Tools "},{"level":2,"text":"Contents","anchor":"contents","htmlText":"Contents"},{"level":2,"text":"Articles and Presentations and Books","anchor":"articles-and-presentations-and-books","htmlText":"Articles and Presentations and Books"},{"level":2,"text":"Newsletters, Chats and Podcasts","anchor":"newsletters-chats-and-podcasts","htmlText":"Newsletters, Chats and Podcasts"},{"level":2,"text":"Specifications","anchor":"specifications","htmlText":"Specifications"},{"level":2,"text":"Reference Architecture","anchor":"reference-architecture","htmlText":"Reference Architecture"},{"level":2,"text":"AI powered platform tools","anchor":"ai-powered-platform-tools","htmlText":"AI powered platform tools"},{"level":2,"text":"Development","anchor":"development","htmlText":"Development"},{"level":3,"text":"Source Code Management","anchor":"source-code-management","htmlText":"Source Code Management"},{"level":3,"text":"Feature flags and change management","anchor":"feature-flags-and-change-management","htmlText":"Feature flags and change management"},{"level":3,"text":"Project Management \u0026 Issue Tracking Software","anchor":"project-management--issue-tracking-software","htmlText":"Project Management \u0026amp; Issue Tracking Software"},{"level":3,"text":"Bug / Defect Tracking Software","anchor":"bug--defect-tracking-software","htmlText":"Bug / Defect Tracking Software"},{"level":3,"text":"Code Editors and IDEs","anchor":"code-editors-and-ides","htmlText":"Code Editors and IDEs"},{"level":2,"text":"Continuous Testing","anchor":"continuous-testing","htmlText":"Continuous Testing"},{"level":2,"text":"Continuous Integration","anchor":"continuous-integration","htmlText":"Continuous Integration"},{"level":3,"text":"Build","anchor":"build","htmlText":"Build"},{"level":3,"text":"Integration","anchor":"integration","htmlText":"Integration"},{"level":2,"text":"Continuous Delivery","anchor":"continuous-delivery","htmlText":"Continuous Delivery"},{"level":3,"text":"Deployment","anchor":"deployment","htmlText":"Deployment"},{"level":3,"text":"Automation and Collaboration","anchor":"automation-and-collaboration","htmlText":"Automation and Collaboration"},{"level":3,"text":"Infrastructure orchestration","anchor":"infrastructure-orchestration","htmlText":"Infrastructure orchestration"},{"level":3,"text":"Container","anchor":"container","htmlText":"Container"},{"level":3,"text":"Container Registry","anchor":"container-registry","htmlText":"Container Registry"},{"level":3,"text":"Container Orchestration","anchor":"container-orchestration","htmlText":"Container Orchestration"},{"level":2,"text":"Continuous Monitoring","anchor":"continuous-monitoring","htmlText":"Continuous Monitoring"},{"level":2,"text":"Incident Management / Incident Response / IT Alerting / On-Call","anchor":"incident-management--incident-response--it-alerting--on-call","htmlText":"Incident Management / Incident Response / IT Alerting / On-Call"},{"level":3,"text":"IT Service Management","anchor":"it-service-management","htmlText":"IT Service Management"},{"level":3,"text":"Incident Communication","anchor":"incident-communication","htmlText":"Incident Communication"},{"level":2,"text":"Security","anchor":"security","htmlText":"Security"},{"level":2,"text":"Internal Developer Portal","anchor":"internal-developer-portal","htmlText":"Internal Developer Portal"},{"level":2,"text":"Path to senior platform engineer handbook","anchor":"path-to-senior-platform-engineer-handbook","htmlText":"Path to senior platform engineer handbook"},{"level":3,"text":"Platform Engineering Career pathing","anchor":"platform-engineering-career-pathing","htmlText":"Platform Engineering Career pathing"},{"level":3,"text":"Platform Engineering Roles Summary","anchor":"platform-engineering-roles-summary","htmlText":"Platform Engineering Roles Summary"},{"level":2,"text":"Miscellaneous and Related","anchor":"miscellaneous-and-related","htmlText":"Miscellaneous and Related"},{"level":2,"text":"Notions and concepts","anchor":"notions-and-concepts","htmlText":"Notions and concepts"},{"level":3,"text":"Fundamentals","anchor":"fundamentals","htmlText":"Fundamentals"},{"level":3,"text":"Code","anchor":"code","htmlText":"Code"},{"level":3,"text":"Design","anchor":"design","htmlText":"Design"},{"level":3,"text":"Designing systems","anchor":"designing-systems","htmlText":"Designing systems"},{"level":3,"text":"Building systems","anchor":"building-systems","htmlText":"Building systems"},{"level":3,"text":"Technology","anchor":"technology","htmlText":"Technology"},{"level":2,"text":"Stargazers over time","anchor":"stargazers-over-time","htmlText":"Stargazers over time"},{"level":2,"text":"Licence","anchor":"licence","htmlText":"Licence"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools"}},{"displayName":"CONTRIBUTING.md","repoName":"awesome-platform-engineering-tools","refName":"main","path":"CONTRIBUTING.md","preferredFileType":"contributing","tabName":"Contributing","richText":null,"loaded":false,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":null,"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools"}},{"displayName":"LICENSE","repoName":"awesome-platform-engineering-tools","refName":"main","path":"LICENSE","preferredFileType":"license","tabName":"MIT","richText":null,"loaded":false,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":null,"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools"}}],"overviewFilesProcessingTime":0,"copilotSWEAgentEnabled":false}},"codeViewLayoutRoute":{"repo":{"id":726614367,"defaultBranch":"main","name":"awesome-platform-engineering-tools","ownerLogin":"seifrajhi","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-12-02T21:55:33.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/26981510?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"uploadToken":"XppMMxccKCmTge-4XnkBDdoLPFhex8PmR5TNuxdqPW7PBzwf8ZAmuDf8tDi2B9aINj0MBmtwdKGFMXJM9iy0-Q","allShortcutsEnabled":false,"treeExpanded":true,"path":"/","symbolsExpanded":false,"refInfo":{"name":"main","listCacheKey":"v0:1788474049.0","canEdit":false,"currentOid":"28625fe1e7b4dafb0f909d4becce04c28b03fd5c"},"helpUrl":"https://docs.github.com","githubDevUrl":null},"sidebarAbout":{"description":"A curated list of Platform Engineering Tools","formattedDescription":"A curated list of Platform Engineering Tools","website":"https://seifrajhi.github.io/awesome-platform-engineering-tools/","topics":[{"name":"devops"},{"name":"internal-developer-platform"},{"name":"internal-developer-portal"},{"name":"kubernetes"},{"name":"platform-engineering"},{"name":"sre"}],"showInsights":true,"canOpenStargazersAndWatchers":false,"stargazerCount":671,"watcherCount":6,"forksCount":96,"stargazersPath":"/seifrajhi/awesome-platform-engineering-tools/stargazers","watchersPath":"/seifrajhi/awesome-platform-engineering-tools/watchers","forkNetworkPath":"/seifrajhi/awesome-platform-engineering-tools/forks","activityPath":"/seifrajhi/awesome-platform-engineering-tools/activity","reportPath":"/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools\u0026report=seifrajhi+%28user%29","canEditMetadata":false,"ownerLogin":"seifrajhi","repoName":"awesome-platform-engineering-tools","isOrg":false,"sections":{"releases":{"releaseCount":0,"tagCount":0},"sponsors":false,"deployments":false,"packages":true,"usedBy":true,"contributors":true,"languages":true,"cta":false,"suggestedWorkflows":false},"hasCitation":false,"pagesUrl":"https://seifrajhi.github.io/awesome-platform-engineering-tools/","repo":{"ownerAvatarUrl":"https://avatars.githubusercontent.com/u/26981510?s=60\u0026v=4","ownerId":26981510,"isPrivate":false,"isTemplate":false,"isFork":false,"isMirror":false,"isArchived":false,"visibilityLabel":"Public","license":{"spdxId":"MIT","name":"MIT License"},"isAdvisoryWorkspace":false},"star":{"viewerHasStarred":false,"canStar":false},"fork":{"canFork":false,"forkabilityError":"not_logged_in"},"pin":{"canPin":false,"isPinned":true,"isOrgOwned":false,"pinItemsRemaining":2},"watch":{"canWatch":false,"watchData":{"repositoryId":"726614367","repositoryName":"seifrajhi/awesome-platform-engineering-tools","watchersCount":6,"subscriptionType":"none","subscribableThreadTypes":[{"name":"Issue","enabled":true,"subscribed":false},{"name":"PullRequest","enabled":true,"subscribed":false},{"name":"Release","enabled":true,"subscribed":false},{"name":"Discussion","enabled":false,"subscribed":false},{"name":"SecurityAlert","enabled":true,"subscribed":false}],"showLabelSubscriptions":false,"subscribedLabels":[]}},"viewer":{"isLoggedIn":false,"isSiteAdmin":false,"emuContributionBlocked":false},"showSponsorButton":false,"showTemplateButton":false,"showDemoNotification":false},"csrf_tokens":{"/seifrajhi/awesome-platform-engineering-tools/branches":{"post":"xR3_rIdllSm7wTLlaN7KjDHGukXkysOf3qnjHDkIo6p-s6NBBPYNH_5nbmFDtFMxsZ7hedhf3Ph_8S-YTbllxg"}}},"title":"GitHub - seifrajhi/awesome-platform-engineering-tools: A curated list of Platform Engineering Tools","appPayload":{},"meta":{"title":"GitHub - seifrajhi/awesome-platform-engineering-tools: A curated list of Platform Engineering Tools"}}</script>
|
||
<div data-target="react-app.reactRoot"><meta name="github-code-view-meta-stats" id="github-code-view-meta-stats" data-hydrostats="publish"/> <!-- --> <a hidden="" id="code-view-repo-link" href="/seifrajhi/awesome-platform-engineering-tools" data-discover="true"></a> <div class="d-none"></div><div><div style="--spacing:var(--spacing-none)" class="prc-PageLayout-PageLayoutRoot--KH-d" data-component="SplitPageLayout"><div class="prc-PageLayout-PageLayoutWrapper-2BhU2" data-width="full"><div class="prc-PageLayout-PageLayoutContent-BneH9"><div data-component="SplitPageLayout.Content" class="prc-PageLayout-ContentWrapper-gR9eG" data-is-hidden-narrow="false"><div class="prc-PageLayout-Content-xWL-A" data-width="full" style="--spacing:var(--spacing-none)"><div class="SharedPageLayout-module__content__IwGAp" data-selector="repos-split-pane-content" id="repos-split-pane-content" tabindex="0"><div style="--spacing:var(--spacing-none)" class="prc-PageLayout-PageLayoutRoot--KH-d container-xl" data-component="SplitPageLayout"><div class="prc-PageLayout-PageLayoutWrapper-2BhU2" data-width="full"><header data-component="SplitPageLayout.Header" data-hidden="false" class="prc-PageLayout-Header-0of-R tmp-px-3 tmp-px-lg-5" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-HeaderContent-gdFfN" style="--spacing:var(--spacing-none)"><!--&--><!--/&--></div><div class="prc-PageLayout-HorizontalDivider-JLVqp prc-PageLayout-HeaderHorizontalDivider-odAHl" data-component="PageLayout.HorizontalDivider" data-variant="none" style="--spacing-divider:var(--spacing-none);--spacing:var(--spacing-none)"></div></header><div class="prc-PageLayout-PageLayoutContent-BneH9"><div data-component="SplitPageLayout.Content" class="prc-PageLayout-ContentWrapper-gR9eG" data-is-hidden="false"><div class="prc-PageLayout-Content-xWL-A" data-width="large" style="--spacing:var(--spacing-condensed)"><div class="OverviewContent-module__Box__PF75K tmp-pl-lg-3 mt-0"><div class="OverviewHeader-module__Box__cC1RH"></div><div class="OverviewContent-module__Box_1__MPS0U"><div class="OverviewContent-module__Box_2__Di8Pb"><div class="OverviewContent-module__Box_3__wzlJx"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" style="min-width:0" aria-label="main branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk overview-ref-selector width-full RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">main</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="OverviewContent-module__Box_4__qf73o"><a data-component="Button" type="button" href="/seifrajhi/awesome-platform-engineering-tools/branches" class="prc-Button-ButtonBase-9n-Xk OverviewContent-module__Button___Uotu" data-loading="false" data-size="medium" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Branches</span></span></a><a data-component="Button" type="button" href="/seifrajhi/awesome-platform-engineering-tools/tags" class="prc-Button-ButtonBase-9n-Xk OverviewContent-module__Button___Uotu" data-loading="false" data-size="medium" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-tag" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Tags</span></span></a></div><div class="OverviewContent-module__Box_5__Zc3i7"><a data-component="Button" type="button" aria-label="Go to Branches page" href="/seifrajhi/awesome-platform-engineering-tools/branches" class="prc-Button-ButtonBase-9n-Xk OverviewContent-module__Button_1__vmS6D" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></a><a data-component="Button" type="button" aria-label="Go to Tags page" href="/seifrajhi/awesome-platform-engineering-tools/tags" class="prc-Button-ButtonBase-9n-Xk OverviewContent-module__Button_1__vmS6D" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-tag" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg></a></div></div><div class="OverviewContent-module__Box_6__Y_Yb_"><div class="OverviewContent-module__Box_7__JuRXo"><div class="d-none"></div><div class="OverviewContent-module__Box_8__UZCZh"><div class="OverviewContent-module__FileResultsList__EjrTH"><span class="d-flex FileResultsList-module__FilesSearchBox__ivVkc TextInput-wrapper prc-components-TextInputWrapper-Hpdqi prc-components-TextInputBaseWrapper-wY-n0" data-no-trailing-action="true" data-component="TextInput" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id="_R_2hidahlik5_" aria-hidden="true" data-component="TextInput.LeadingVisual"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellCheck="false" placeholder="Go to file" aria-describedby="_R_2hidahlik5_ _R_2hidahlik5H1_" data-component="input" class="prc-components-Input-IwWrt" value=""/><span class="TextInput-icon" id="_R_2hidahlik5H1_" aria-hidden="true" data-component="TextInput.TrailingVisual"></span></span></div></div><div class="OverviewContent-module__Box_9__bqMPw"><button data-component="Button" type="button" class="prc-Button-ButtonBase-9n-Xk" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Go to file</span></span></button></div></div><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk" data-loading="false" data-size="medium" data-variant="primary" id="_R_3idahlik5_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code hide-sm" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Code</span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="OverviewContent-module__Box_10__mGSb4"><button data-component="IconButton" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_3sidahlik5_" id="_R_4idahlik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_3sidahlik5_">Open more actions menu</span></div></div></div><div class="OverviewContent-module__Box_11__F19kY"><div data-hpc="true" containertiming="hpc"><div class="d-none"></div><div class="DirectoryContent-module__Box_3__gl6dE bgColor-muted p-1 border border-bottom-0 rounded-top-2"><div class="LatestCommit-module__Box__B25ZT"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">History</h2><a data-component="LinkButton" href="/seifrajhi/awesome-platform-engineering-tools/commits/main/" class="prc-Button-ButtonBase-9n-Xk d-none d-lg-flex LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><span class="fgColor-default">267 Commits</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><a data-component="LinkButton" aria-label="View commit history for this file." href="/seifrajhi/awesome-platform-engineering-tools/commits/main/" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby="_R_2bacdahlik5_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" role="tooltip" aria-hidden="true" id="_R_2bacdahlik5_">267 Commits</span></div></div></div></div></div><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="folders-and-files">Folders and files</h2><table class="Table-module__Box__HZKiQ DirectoryContent-module__OverviewTable__fe0iH" aria-labelledby="folders-and-files"><thead class="DirectoryContent-module__OverviewHeaderRow__hOrKy Table-module__Box_1__VacXC"><tr class="Table-module__Box_2__PBp9s"><th colSpan="2" class="DirectoryContent-module__Box__iC_5e"><span class="text-bold">Name</span></th><th colSpan="1" class="DirectoryContent-module__Box_1__fuSBO"><span class="text-bold">Name</span></th><th class="hide-sm"><div class="width-fit prc-Truncate-Truncate-2G1eo" data-inline="true" title="Last commit message" style="--truncate-max-width:125px"><span class="text-bold">Last commit message</span></div></th><th colSpan="1" class="DirectoryContent-module__Box_2__Ccrx7"><div class="width-fit prc-Truncate-Truncate-2G1eo" data-inline="true" title="Last commit date" style="--truncate-max-width:125px"><span class="text-bold">Last commit date</span></div></th></tr></thead><tbody><tr class="react-directory-row undefined" id="folder-row-0"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="This path skips through empty directories" aria-label=".github/workflows, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/.github/workflows" data-discover="true"><span class="react-directory-default-color" data-testid="path-name-segment">.github/</span><span class="" data-testid="path-name-segment">workflows</span></a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="This path skips through empty directories" aria-label=".github/workflows, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/.github/workflows" data-discover="true"><span class="react-directory-default-color" data-testid="path-name-segment">.github/</span><span class="" data-testid="path-name-segment">workflows</span></a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-1"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".husky" aria-label=".husky, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/.husky" data-discover="true">.husky</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".husky" aria-label=".husky, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/.husky" data-discover="true">.husky</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-2"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="content" aria-label="content, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/content" data-discover="true">content</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="content" aria-label="content, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/content" data-discover="true">content</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-3"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="img" aria-label="img, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/img" data-discover="true">img</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="img" aria-label="img, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/img" data-discover="true">img</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-4"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="overrides" aria-label="overrides, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/overrides" data-discover="true">overrides</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="overrides" aria-label="overrides, (Directory)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/tree/main/overrides" data-discover="true">overrides</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-5"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".editorconfig" aria-label=".editorconfig, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/.editorconfig" data-discover="true">.editorconfig</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".editorconfig" aria-label=".editorconfig, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/.editorconfig" data-discover="true">.editorconfig</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-6"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".gitignore" aria-label=".gitignore, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/.gitignore" data-discover="true">.gitignore</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".gitignore" aria-label=".gitignore, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/.gitignore" data-discover="true">.gitignore</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-7"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".lintstagedrc" aria-label=".lintstagedrc, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/.lintstagedrc" data-discover="true">.lintstagedrc</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".lintstagedrc" aria-label=".lintstagedrc, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/.lintstagedrc" data-discover="true">.lintstagedrc</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-8"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="CONTRIBUTING.md" aria-label="CONTRIBUTING.md, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/CONTRIBUTING.md" data-discover="true">CONTRIBUTING.md</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="CONTRIBUTING.md" aria-label="CONTRIBUTING.md, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/CONTRIBUTING.md" data-discover="true">CONTRIBUTING.md</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-9"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="LICENSE" aria-label="LICENSE, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/LICENSE" data-discover="true">LICENSE</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="LICENSE" aria-label="LICENSE, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/LICENSE" data-discover="true">LICENSE</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-10"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="README.md" aria-label="README.md, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/README.md" data-discover="true">README.md</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="README.md" aria-label="README.md, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/README.md" data-discover="true">README.md</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-11"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="mkdocs.yml" aria-label="mkdocs.yml, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/mkdocs.yml" data-discover="true">mkdocs.yml</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="mkdocs.yml" aria-label="mkdocs.yml, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/mkdocs.yml" data-discover="true">mkdocs.yml</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-12"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="package.json" aria-label="package.json, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/package.json" data-discover="true">package.json</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="package.json" aria-label="package.json, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/package.json" data-discover="true">package.json</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-13"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="requirements.txt" aria-label="requirements.txt, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/requirements.txt" data-discover="true">requirements.txt</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="requirements.txt" aria-label="requirements.txt, (File)" class="Link--primary" href="/seifrajhi/awesome-platform-engineering-tools/blob/main/requirements.txt" data-discover="true">requirements.txt</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="react-directory-commit-age"><div class="Skeleton Skeleton--text"> </div></div></td></tr><tr class="show-for-mobile DirectoryContent-module__Box_4__RhIsE" data-testid="view-all-files-row"><td colSpan="3" class="DirectoryContent-module__Box_5__GaE8N"><div><button class="prc-Link-Link-9ZwDx" data-component="Link">View all files</button></div></td></tr></tbody></table></div><div class="OverviewRepoFiles-module__Box_1__OXeac"><div class="OverviewRepoFiles-module__Box_2__zsLGk"><div itemScope="" itemType="https://schema.org/abstract" class="OverviewRepoFiles-module__Box_3__bBU1C"><h2 class="prc-src-InternalVisuallyHidden-2YaI6">Repository files navigation</h2><nav class="prc-components-UnderlineWrapper-eT-Yj prc-UnderlineNav-UnderlineWrapper-GWONT OverviewRepoFiles-module__UnderlineNav__QbWWv" aria-label="Repository files" data-variant="inset" data-overflow-mode="wrap" data-hide-icons-breakpoint="medium"><ul class="prc-UnderlineNav-ItemsList-oj8gN prc-components-UnderlineItemList-xKlKC" role="list"><li role="presentation" aria-hidden="true" class="prc-UnderlineNav-WrapSpacer--aLgz"></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a href="#" aria-current="page" class="prc-components-UnderlineItem-7fP-n"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-book" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path></svg></span><span data-component="text" data-content="README">README</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a href="#" class="prc-components-UnderlineItem-7fP-n"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-people" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path></svg></span><span data-component="text" data-content="Contributing">Contributing</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a href="#" class="prc-components-UnderlineItem-7fP-n"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-law" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path></svg></span><span data-component="text" data-content="MIT license">MIT license</span></a></li></ul><div class="prc-UnderlineNav-MoreButtonContainer-Dnrq6"><div class="prc-UnderlineNav-MoreButtonDivider-dN0a-"></div><button data-component="overflow-menu-button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk prc-UnderlineNav-MoreButton-Y8soj" data-loading="false" data-size="medium" data-variant="invisible" id="_R_1a5kdahlik5_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3"><span>More<span class="prc-src-InternalVisuallyHidden-2YaI6"> items</span></span></span></span><span data-component="trailingAction" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></button></div></nav><div class="OverviewRepoFiles-module__readmeHeaderSlot__FxQN_"></div><button data-component="ActionMenu.Button" type="button" aria-label="Outline" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk OverviewRepoFiles-module__ActionMenu_Button__OKDYV" data-loading="false" data-size="medium" data-variant="invisible" id="_R_hkdahlik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-list-unordered" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg></button></div><div class="js-snippet-clipboard-copy-unpositioned DirectoryRichtextContent-module__SharedMarkdownContent__hHXUL" data-hpc="true" containertiming="hpc"><article class="markdown-body entry-content container-lg" itemprop="text"><div class="markdown-heading" dir="auto"><h1 tabindex="-1" class="heading-element" dir="auto">Awesome Platform Engineering Tools <a href="https://awesome.re" rel="nofollow"><img src="https://camo.githubusercontent.com/134ee8ed89374cd2c151ed27c000717b7ea0694fcfe1408da27380651ba9e4dc/68747470733a2f2f617765736f6d652e72652f62616467652d666c61742e737667" alt="Awesome" data-canonical-src="https://awesome.re/badge-flat.svg" style="max-width: 100%;"></a></h1><a id="user-content-awesome-platform-engineering-tools-" class="anchor" aria-label="Permalink: Awesome Platform Engineering Tools " href="#awesome-platform-engineering-tools-"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
|
||
<p dir="auto">A curated list of Platform and Production Engineering tools - Maintained by <a href="https://twitter.com/RajhiSaifeddine" rel="nofollow">Saif Rajhi</a></p>
|
||
<p align="center" dir="auto">
|
||
<a href="https://github.com/seifrajhi/awesome-platform-engineering-tools">
|
||
<img src="/seifrajhi/awesome-platform-engineering-tools/raw/main/img/platform.jpeg" title="" alt="" style="max-width: 100%;">
|
||
</a>
|
||
</p>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Contents</h2><a id="user-content-contents" class="anchor" aria-label="Permalink: Contents" href="#contents"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="#awesome-platform-engineering-tools-">Awesome Platform Engineering Tools</a>
|
||
<ul dir="auto">
|
||
<li><a href="#contents">Contents</a></li>
|
||
<li><a href="#articles-and-presentations-and-books">Articles and Presentations and Books</a></li>
|
||
<li><a href="#newsletters-chats-and-podcasts">Newsletters, Chats and Podcasts</a></li>
|
||
<li><a href="#specifications">Specifications</a></li>
|
||
<li><a href="#reference-architecture">Reference Architecture</a></li>
|
||
<li><a href="#ai-powered-platform-tools">AI powered platform tools</a></li>
|
||
<li><a href="#development">Development</a>
|
||
<ul dir="auto">
|
||
<li><a href="#source-code-management">Source Code Management</a></li>
|
||
<li><a href="#feature-flags-and-change-management">Feature flags and change management</a></li>
|
||
<li><a href="#project-management--issue-tracking-software">Project Management & Issue Tracking Software</a></li>
|
||
<li><a href="#bug--defect-tracking-software">Bug / Defect Tracking Software</a></li>
|
||
<li><a href="#code-editors-and-ides">Code Editors and IDE's</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#continuous-testing">Continuous Testing</a></li>
|
||
<li><a href="#continuous-integration">Continuous Integration</a>
|
||
<ul dir="auto">
|
||
<li><a href="#build">Build</a></li>
|
||
<li><a href="#integration">Integration</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#continuous-delivery">Continuous Delivery</a>
|
||
<ul dir="auto">
|
||
<li><a href="#deployment">Deployment</a></li>
|
||
<li><a href="#automation-and-collaboration">Automation and Collaboration</a></li>
|
||
<li><a href="#infrastructure-orchestration">Infrastructure orchestration</a></li>
|
||
<li><a href="#container">Container</a></li>
|
||
<li><a href="#container-registry">Container Registry</a></li>
|
||
<li><a href="#container-orchestration">Container Orchestration</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#continuous-monitoring">Continuous Monitoring</a></li>
|
||
<li><a href="#incident-management--incident-response--it-alerting--on-call">Incident Management / Incident Response / IT Alerting / On-Call</a>
|
||
<ul dir="auto">
|
||
<li><a href="#it-service-management">IT Service Management</a></li>
|
||
<li><a href="#incident-communication">Incident Communication</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#security">Security</a></li>
|
||
<li><a href="#internal-developer-portal">Internal Developer Portal</a></li>
|
||
<li><a href="#path-to-senior-platform-engineer-handbook">Path to senior platform engineer handbook</a></li>
|
||
<li><a href="#miscellaneous-and-related">Miscellaneous and Related</a></li>
|
||
<li><a href="#notions-and-concepts">Notions and concepts</a></li>
|
||
<li><a href="#stargazers-over-time">Stargazers over time</a></li>
|
||
<li><a href="#licence">Licence</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<a target="_blank" rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/26981510/382561750-92219814-b0d3-44e7-ae6d-0c5719c8959e.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zODI1NjE3NTAtOTIyMTk4MTQtYjBkMy00NGU3LWFlNmQtMGM1NzE5Yzg5NTllLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIyNmRmYzg3YzQyNjM2NTA5Y2Q5YmM5YjY3YzY0MjUwNWNhNDk1NmFhOGQ2ZjZiNGJkZDljZDRjYmJlMzgyZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Nak4qInIu8n5QMsXpnyKI6z03ITHNAgOuEvVfEhMgOQ"><img width="1274" alt="image" src="https://private-user-images.githubusercontent.com/26981510/382561750-92219814-b0d3-44e7-ae6d-0c5719c8959e.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zODI1NjE3NTAtOTIyMTk4MTQtYjBkMy00NGU3LWFlNmQtMGM1NzE5Yzg5NTllLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIyNmRmYzg3YzQyNjM2NTA5Y2Q5YmM5YjY3YzY0MjUwNWNhNDk1NmFhOGQ2ZjZiNGJkZDljZDRjYmJlMzgyZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Nak4qInIu8n5QMsXpnyKI6z03ITHNAgOuEvVfEhMgOQ" style="max-width: 100%;"></a>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Articles and Presentations and Books</h2><a id="user-content-articles-and-presentations-and-books" class="anchor" aria-label="Permalink: Articles and Presentations and Books" href="#articles-and-presentations-and-books"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://theprogressivearchitect.substack.com/p/chances-are-you-dont-need-a-platform" rel="nofollow">Chances are you don't need a platform team</a> - How to minimize your platform and maximize user value by <a href="https://github.com/bschaatsbergen">@bschaatsbergen</a> <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=Rg98GoEHBd4" rel="nofollow">How To Create A Complete Internal Developer Platform (IDP)?</a> - It's time to build an internal developer platform (IDO) with Crossplane, Argo CD, SchemaHero, External Secrets Operator (ESO), GitHub Actions, Port, and a few others by <a href="https://gist.github.com/vfarcic">@vfarcic</a> <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434"><img src="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434" alt="YouTube video views" data-canonical-src="https://img.shields.io/youtube/views/Rg98GoEHBd4" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=1RInP-77iyE" rel="nofollow">What does it take to become a Platform Engineer?</a> <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434"><img src="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434" alt="YouTube video views" data-canonical-src="https://img.shields.io/youtube/views/Rg98GoEHBd4" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=p6D-NYkVp9E" rel="nofollow">Platform Engineering How Did We Get Here </a> <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434"><img src="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434" alt="YouTube video views" data-canonical-src="https://img.shields.io/youtube/views/Rg98GoEHBd4" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=DhtYf05dvQY" rel="nofollow">Can we say that Platform Engineering is DevSec(Rel)Ops?</a> <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434"><img src="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434" alt="YouTube video views" data-canonical-src="https://img.shields.io/youtube/views/Rg98GoEHBd4" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.getport.io/guide" rel="nofollow">The Practical Guide to Internal Developer Portals</a> - The next big thing in DevOps is platform engineering, and the main tool it uses is the internal developer portal. Read this guide to understand what can be done with portals and why they matter <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.manning.com/books/platform-engineering-on-kubernetes" rel="nofollow">Platform Engineering on Kubernetes</a> - A book that teaches how to build custom platforms on top of Kubernetes using open-source tools such as Dapr, Knative, Argo CD and Rollouts, and Tekton. It explores the tools and techniques needed to overcome common cloud-native challenges and is suitable for readers with different expertise levels <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://thenewstack.io/build-your-idp-at-light-speed-with-a-platform-reference-architecture/" rel="nofollow">Build Your IDP at Light Speed with a Platform Reference Architecture</a> - Now organizations have a standard, proven, scalable, and repeatable pattern for internal developer platforms that’s applicable to any tooling choice <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://spacelift.io/blog/what-is-platform-engineering" rel="nofollow">What Is Platform Engineering? Role, Principles & Benefits</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://blog.container-solutions.com/how-to-design-an-internal-developer-platform" rel="nofollow">How to Design an Internal Developer Platform</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://thenewstack.io/a-platform-team-product-manager-determines-devops-success/" rel="nofollow">A Platform Team Product Manager Determines DevOps Success</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://medium.com/wise-engineering/platform-engineering-kpis-6a3215f0ee14" rel="nofollow">Platform Engineering KPIs</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://medium.com/contino-engineering/creating-your-internal-developer-platform-part-2-65ff217cecd6" rel="nofollow">Platform Engineering: Creating your Internal Developer Platform</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://medium.com/@rphilogene/the-10-platform-engineering-tools-to-use-in-2022-c2cbf2561f77" rel="nofollow">The 10 Platform Engineering Tools To Use in 2022</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://medium.com/engineering-at-palo-alto-networks/platform-engineering-at-palo-alto-networks-part-2-315bd7b0fbfa" rel="nofollow">Platform Engineering at Palo Alto Networks</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://medium.com/agorapulse-stories/platform-engineering-part-1-why-the-evolution-of-developer-cognitive-load-9f36f5cc2888" rel="nofollow">Platform Engineering story from a CTO: WHY, WHAT, HOW</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://developer.hashicorp.com/terraform/tutorials/applications/preview-environments-vercel" rel="nofollow">Create Preview Environments with Terraform, GitHub Actions, and Vercel</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.getport.io/blog/guide-to-internal-developer-portals" rel="nofollow">Guide To Internal Developer Portals</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.aquasec.com/blog/introducing-kbom-kubernetes-bill-of-materials/?trk=article-ssr-frontend-pulse_little-text-block" rel="nofollow">Introducing KBOM – Kubernetes Bill of Materials</a> <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://thenewstack.io/platform-engineering-is-not-just-about-the-tools/" rel="nofollow">Platform Engineering Is Not Just about the Tools</a> - Platform engineering isn’t solely about the tools and components but also about alignment within the organization and a special focus on understanding user needs <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://thenewstack.io/platform-engineering-rules-the-day-eight-key-themes/" rel="nofollow">Platform Engineering Rules the Day</a> - Eight Key Themes <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://medium.com/google-cloud/how-to-start-platform-engineering-practice-to-improve-developer-experience-48bc3e9c96de" rel="nofollow">Wwhat is Platform Engineering and why it is important for better developer experience</a> - Some of the core tenets of Platform Engineering.</li>
|
||
<li><a href="https://cloud.google.com/blog/products/application-development/common-myths-about-platform-engineering" rel="nofollow">5 myths about platform engineering: what it is and what it isn’t</a> - Five common myths about platform engineering<a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.eficode.com/platform-engineering?utm_campaign=DevOps&utm_content=189322221&utm_medium=social&utm_source=linkedin&hss_channel=lcp-741299" rel="nofollow">The ultimate guide to platform engineering</a> - Stay competetive: embrace platform engineering <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://medium.com/beyond-the-code-by-typo/top-platform-engineering-kpis-you-need-to-monitor-b14a405b4eb7" rel="nofollow">Top Platform Engineering KPIs You Need to Monitor</a> - A curated list of top platform engineering KPIs that software teams must monitor <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://newsletter.cote.io/p/platform-engineering-problems-can" rel="nofollow">Can ops actually do product management</a> - Platform engineering problems: can ops actually do product management?.</li>
|
||
<li><a href="https://www.pulumi.com/blog/scale-ai-innovation-with-platform-engineering/" rel="nofollow">Pulumi Platform Engineering</a> - Accelerate, Scale and Secure AI Innovation with Pulumi Platform Engineering <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.gartner.com/en/infrastructure-and-it-operations-leaders/topics/platform-engineering" rel="nofollow">Insights to enable your platform engineering team to improve agility and customer focus</a> - A Platform engineering that empowers users and reduces risk <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.informationweek.com/it-leadership/can-your-developers-benefit-from-platform-engineering-" rel="nofollow">Can Your Developers Benefit from Platform Engineering?</a> - Will designing tools and workflows to bring self-service to software development help developers work more efficiently? <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.amazon.com/dp/B0DJPYQB5X/" rel="nofollow">Platform Engineering: A Guide for Technical, Product, and People Leaders</a> - This book guides you on adopting a developer-centric approach to platform engineering, understanding and building platform teams, automating infrastructure, and managing platform scalability and team dynamics. It also covers the role of a platform product manager and improving developer experience through self-service infrastructure <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/4134d692e0a70748e2e79e95cab0c98fa6a4afa4971fc8212b26a70bb68e4e6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f626f6f6b2d616374697665"><img src="https://camo.githubusercontent.com/4134d692e0a70748e2e79e95cab0c98fa6a4afa4971fc8212b26a70bb68e4e6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f626f6f6b2d616374697665" alt="Book Status" data-canonical-src="https://img.shields.io/badge/book-active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.manning.com/books/effective-platform-engineering" rel="nofollow">Effective Platform Engineering</a> - Learn to design and build platforms and tools that maximize developer efficiency <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/4134d692e0a70748e2e79e95cab0c98fa6a4afa4971fc8212b26a70bb68e4e6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f626f6f6b2d616374697665"><img src="https://camo.githubusercontent.com/4134d692e0a70748e2e79e95cab0c98fa6a4afa4971fc8212b26a70bb68e4e6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f626f6f6b2d616374697665" alt="Book Status" data-canonical-src="https://img.shields.io/badge/book-active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.resourcely.io/post/the-road-to-simplicity" rel="nofollow">The Road to Simplicity</a> - What platform engineering can learn from automobile design <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://earthly.dev/blog/platform-engineering-tools/" rel="nofollow">Top 7 Platform Engineering Tools</a> - Key platform engineering tools for developers <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.platformengineeringpod.com/" rel="nofollow">Platform Engineering Podcast</a> - This podcast caters to professionals and enthusiasts passionate about the intricacies of platform architecture, cloud operations, and scaling DevOps practices <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0b0817c40e55842f88e3d3d89138bcee662f0fc3e92e5773f04f86091aabc464/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706f64636173742d616374697665"><img src="https://camo.githubusercontent.com/0b0817c40e55842f88e3d3d89138bcee662f0fc3e92e5773f04f86091aabc464/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706f64636173742d616374697665" alt="podcast Status" data-canonical-src="https://img.shields.io/badge/podcast-active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://orkohunter.net/blog/a-brief-history-of-platform-engineering/" rel="nofollow">A brief history of Platform Engineering</a> - How the shift to cloud native applications gave rise to a new practice called Platform engineering <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.solo.io/blog/platform-engineering-essential-tools/" rel="nofollow">Platform Engineering Essential Tools</a> - Key Platform Engineering tools <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.syntasso.io/platform-as-a-product" rel="nofollow">Platform as a Product</a> - Platform as a Product: What, Why, and How? <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://thenewstack.io/the-2024-state-of-platform-engineering-fledgling-at-best/" rel="nofollow">State of Platform Engineering</a> - The 2024 State of Platform Engineering? Fledgling at Best <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.youtube.com/live/eDbQ18Fx0qU" rel="nofollow">4000 microservices, 8 million customers, 1 Internal Developer Platform</a> The story of how Sicredi, a credit union, with over 8 million clients, 2700 branches, and over 45,000 employees embarked on building an Internal Developer Platform to serve its thousands of developers - <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434"><img src="https://camo.githubusercontent.com/7f0141bac109250336238bad7d26cd6ceb6c9a73c09d59c4146898ca20e97614/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f76696577732f52673938476f4548426434" alt="YouTube video views" data-canonical-src="https://img.shields.io/youtube/views/Rg98GoEHBd4" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://thenewstack.io/platform-engineering-a-workshop-to-help-map-your-strategy/" rel="nofollow">Platform Engineering: A Workshop to Help Map Your Strategy</a> - Stakeholders from across an organization can decide together what their internal developer platform should do <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://platformengineering.org/blog/platform-engineering-with-crossplane-and-argocd" rel="nofollow">Combining practical Platform Engineering with Crossplane and ArgoCD</a> - A hands-on look into tools and their integrated usage can help kickstart your knowledge about Platform Engineering patterns. Therefore let's dive into two top frameworks when it comes to Platform Engineering today: Crossplane & ArgoCD. Both alone can already be great choices, but combining their powers can unlock a whole new level <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://platformengineering.org/platform-tooling" rel="nofollow">Platform tooling landscape</a> - Based on 100s of platform engineering setups in organizations of all sizes, this landscape distills the best practices in designing Internal Developer Platforms. <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.xenonstack.com/blog/platform-engineering-reduces-risk" rel="nofollow">How Platform Engineering Empowers Users and Reduces Risk?</a> - This blog focuses on how platform engineering reduces complexity, enhances user autonomy, and minimizes risks in modern tech ecosystems. <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.pulumi.com/blog/why-every-platform-engineer-should-care-about-kubernetes-operators/" rel="nofollow">Why Every Platform Engineer Should Care About Kubernetes Operators from Pulumi Blog</a> - Platform Engineer should konw that successful Kubernetes-powered platform is the use of Kubernetes Operators, as they are a great way to automate operational tasks and the lifecycle of complex applications and services on Kubernetes. <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
<li><a href="https://www.linkedin.com/pulse/principal-engineer-roles-framework-mai-lan-tomsen-bukovec-142df/" rel="nofollow">Principal Engineer Roles Framework</a> - The Principal Engineer Roles Framework by Mai-Lan Tomsen Bukovec outlines six distinct roles (Sponsor, Guide, Catalyst, Tie Breaker, Catcher, and Participant) to optimize impact, support skills development, and maintain clarity and alignment in fast-paced environments. <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665"><img src="https://camo.githubusercontent.com/58a1dae2397d022a245f8850bf786cf7f651065a62da14770c753001b7c0ac94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c6f672d416374697665" alt="Blog Status" data-canonical-src="https://img.shields.io/badge/Blog-Active" style="max-width: 100%;"></a>.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Newsletters, Chats and Podcasts</h2><a id="user-content-newsletters-chats-and-podcasts" class="anchor" aria-label="Permalink: Newsletters, Chats and Podcasts" href="#newsletters-chats-and-podcasts"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.cncf.io/announcements/2024/11/15/cloud-native-computing-foundation-expands-certification-to-platform-engineering-and-more/" rel="nofollow">Platform Engineering Certification</a> - Cloud Native Computing Foundation Expands Certification to Platform Engineering.</li>
|
||
<li><a href="https://platformengineering.org" rel="nofollow">Platform Engineering</a></li>
|
||
<li><a href="https://internaldeveloperplatform.org" rel="nofollow">Internal Developer Platform</a></li>
|
||
<li><a href="https://thenewstack.io/" rel="nofollow">The New Stack</a></li>
|
||
<li><a href="https://internalplatforms.com" rel="nofollow">Resources about Internal Platform teams and products</a></li>
|
||
<li><a href="https://humanitec.com/blog" rel="nofollow">Humanitec (Platform Engineering) Blog</a></li>
|
||
<li><a href="https://www.infoq.com/platformengineering/" rel="nofollow">InfoQ Platform Engineering Articles</a></li>
|
||
<li><a href="https://www.getport.io/blog" rel="nofollow">Port Blog</a></li>
|
||
<li><a href="https://platformweekly.com/" rel="nofollow">Platform weekly</a></li>
|
||
<li><a href="https://platformengineering.org/slack-rd" rel="nofollow">Platformengineering.org Slack</a></li>
|
||
<li><a href="https://www.listennotes.com/podcasts/the-new-stack/whats-platform-engineering-uoN5mXizUpP/" rel="nofollow">What's Platform Engineering? And How Does It Support DevOps?</a></li>
|
||
<li><a href="https://www.listennotes.com/podcasts/the-new-stack-podcast-the-new-stack-2tdxfCmwZr6/" rel="nofollow">The New Stack Podcast</a></li>
|
||
<li><a href="https://sites.libsyn.com/419861/platform-engineering-with-nicholas-eberts?trk=article-ssr-frontend-pulse_little-text-block" rel="nofollow">Platform Engineering with Nicholas Eberts</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Specifications</h2><a id="user-content-specifications" class="anchor" aria-label="Permalink: Specifications" href="#specifications"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://oam.dev/" rel="nofollow">OAM: One Application Model</a> - An open model for defining cloud native apps.</li>
|
||
<li><a href="https://www.argonaut.dev/" rel="nofollow">Argonaut</a> - Deploy apps and infrastructure on your cloud in minutes.</li>
|
||
<li><a href="https://devtron.ai/" rel="nofollow">devtron</a> - An open source Internal Developer Platform for Kubernetes.</li>
|
||
<li><a href="https://roadie.io/" rel="nofollow">SaaS Backstage Roadie</a> - SaaS Backstage. Simple, safe, and more powerful.</li>
|
||
<li><a href="https://www.zymr.com/product-platform-engineering-services" rel="nofollow">ZYMR</a> - We excell at Platform engineering.</li>
|
||
<li><a href="https://cto.ai/platform" rel="nofollow">CTO: platform for platform teams</a> - The platform for platform teams : Easily implement your vision for the perfect developer platform without having to build everything from scratch. We’re more than just a CI/CD pipeline. We’re an intelligent automation platform for all of your development workflows.</li>
|
||
<li><a href="https://score.dev" rel="nofollow">score</a> - One easy way to configure all your workload. Everywhere.</li>
|
||
<li><a href="https://kubevela.io/" rel="nofollow">kubevela</a> - Make shipping applications more enjoyable.</li>
|
||
<li><a href="https://kusionstack.io/" rel="nofollow">kusionstack</a> - Open Tech Stack to build self-service, collaborative, reliable and sustainable Internal Developer Platform.</li>
|
||
<li><a href="https://cnoe.io/" rel="nofollow">Cloud Native Operational Excellence (CNOE)</a> - CNOE will enable organizations to navigate tooling sprawl and technology churn by coordinating contributions, offering tools, and providing neutral guidance on technology choices to deliver IDPs.</li>
|
||
<li><a href="https://opengitops.dev/" rel="nofollow">OpenGitOps</a> - OpenGitOps is a set of open-source standards, best practices, and community-focused education to help organizations adopt a structured, standardized approach to implementing GitOps.</li>
|
||
<li><a href="https://opea.dev" rel="nofollow">Open Platform for Enterprise AI</a> - An ecosystem orchestration framework to integrate performant GenAI technologies & workflows leading to quicker GenAI adoption and business value.</li>
|
||
<li><a href="https://github.com/KusionStack/karpor">karpor: Intelligence for Kubernetes.</a> - World's most promising Kubernetes visualization Tool for developer and platform engineering teams.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Reference Architecture</h2><a id="user-content-reference-architecture" class="anchor" aria-label="Permalink: Reference Architecture" href="#reference-architecture"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://github.com/wso2/reference-architecture/tree/master">The Reference Architecture for Agility is a technology-neutral logical architecture based on a disaggregated cloud-based model</a> - A proven approach to helping every development organization become an integration agile organization.</li>
|
||
<li><a href="https://github.com/CloudGeometry/cg-devx-core">CloudGeometry Reference Architecture</a> - CloudGeometry Reference Architecture for simplifying the creation and management of DevOps and Cloud resources.</li>
|
||
<li><a href="https://github.com/humanitec-architecture/reference-architecture-aws">AWS Reference Architecture implementation</a> - How to spin up your Humanitec AWS Reference Architecture.</li>
|
||
<li><a href="https://github.com/humanitec-architecture/reference-architecture-gcp">GCP Reference Architecture implementation</a> - How to spin up your Humanitec Google Cloud Reference Architecture Implementation.</li>
|
||
<li><a href="https://github.com/humanitec-architecture/reference-architecture-azure">Azure Reference Architecture implementation</a> - How to spin up your Humanitec Azure Reference Architecture.</li>
|
||
<li><a href="https://github.com/IBM/ibm-cloud-reference-architectures">IBM Cloud Reference Architecture</a> - IBM Infrastructure Automation.</li>
|
||
<li><a href="https://github.com/simskij/awesome-software-architecture">Awesome Software Architecture</a> - A curated list of resources on software architecture.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">AI powered platform tools</h2><a id="user-content-ai-powered-platform-tools" class="anchor" aria-label="Permalink: AI powered platform tools" href="#ai-powered-platform-tools"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://infrastack.ai/" rel="nofollow">InfraStack AI</a> - AI-Powered Observability Copilot.</li>
|
||
<li><a href="https://www.transposit.com/" rel="nofollow">AI-Powered Incident Management</a> - A solution that combines an on-call AI copilot and end-to-end automation.</li>
|
||
<li><a href="https://www.monolithai.com/" rel="nofollow">Monolith</a> - No-code AI software built for engineers.</li>
|
||
<li><a href="https://www.viktor.ai/" rel="nofollow">Viktor</a> - Implement AI in your engineering workflow.</li>
|
||
<li><a href="https://www.initializ.ai/" rel="nofollow">initializ.ai</a> - AI-Driven Unified DevSecOps Platform.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Development</h2><a id="user-content-development" class="anchor" aria-label="Permalink: Development" href="#development"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Source Code Management</h3><a id="user-content-source-code-management" class="anchor" aria-label="Permalink: Source Code Management" href="#source-code-management"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://git-scm.com/" rel="nofollow">Git</a></li>
|
||
<li><a href="https://github.com/">GitHub</a></li>
|
||
<li><a href="https://about.gitlab.com/" rel="nofollow">Gitlab</a></li>
|
||
<li><a href="https://bitbucket.org/" rel="nofollow">Bitbucket</a></li>
|
||
<li><a href="https://www.fossil-scm.org/" rel="nofollow">Fossil</a></li>
|
||
<li><a href="https://www.mercurial-scm.org/" rel="nofollow">Mercurial</a></li>
|
||
<li><a href="https://www.perforce.com/products/helix-core/" rel="nofollow">Perforce Helix Core</a></li>
|
||
<li><a href="https://subversion.apache.org/" rel="nofollow">Subversion (SVN)</a></li>
|
||
<li><a href="https://neovim.io/" rel="nofollow">Nvim</a> - hyperextensible Vim-based text editor.</li>
|
||
<li><a href="https://github.com/Unleash/unleash">Unleash</a> - Open-source feature management solution built for developers.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Feature flags and change management</h3><a id="user-content-feature-flags-and-change-management" class="anchor" aria-label="Permalink: Feature flags and change management" href="#feature-flags-and-change-management"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://github.com/open-feature#welcome-to-the-openfeature-project-">OpenFeature: community-developed specification to standardise feature flag management</a></li>
|
||
<li><a href="https://launchdarkly.com/" rel="nofollow">Launchdarkly: feature flags paid service</a></li>
|
||
<li><a href="https://mokkapps.de/blog/how-to-automatically-generate-a-helpful-changelog-from-your-git-commit-messages/" rel="nofollow">Git Guide: Generate A Changelog From Your Git Commit Messages</a></li>
|
||
<li><a href="https://github.com/renovatebot/renovate">Update NPM, pip, Gem etc. dependencies</a></li>
|
||
<li><a href="https://www.jhipster.tech/upgrading-an-application/#-upgrading-an-application" rel="nofollow">Upgrade microservices</a></li>
|
||
<li><a href="https://github.com/facebook/jscodeshift">Upgrade JavaScript or TypeScript codebases</a></li>
|
||
<li><a href="https://hub.qovery.com/guides/tutorial/getting-started-with-preview-environments-on-aws-for-beginners/" rel="nofollow">Git Qovery: PR/Commit Preview Environments Platform (paid)</a></li>
|
||
<li><a href="https://www.bunnyshell.com/" rel="nofollow">Bunnyshell: production replica environments for dev, QA and Staging</a></li>
|
||
<li><a href="https://github.com/localstack/localstack">LocalStack: A fully functional local AWS cloud stack</a></li>
|
||
<li><a href="https://www.gitpod.io/" rel="nofollow">Gitpod: cloud development environments</a></li>
|
||
<li><a href="https://www.okteto.com/" rel="nofollow">okteto: spin up dev and preview environments</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Project Management & Issue Tracking Software</h3><a id="user-content-project-management--issue-tracking-software" class="anchor" aria-label="Permalink: Project Management & Issue Tracking Software" href="#project-management--issue-tracking-software"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.atlassian.com/software/jira" rel="nofollow">Jira</a></li>
|
||
<li><a href="https://trello.com/" rel="nofollow">Trello</a></li>
|
||
<li><a href="https://www.zoho.com/sprints/" rel="nofollow">Zoho Sprints</a></li>
|
||
<li><a href="https://taiga.io/" rel="nofollow">Taiga</a></li>
|
||
<li><a href="https://www.wrike.com/" rel="nofollow">Wrike</a></li>
|
||
<li><a href="https://asana.com/" rel="nofollow">Asana</a></li>
|
||
<li><a href="https://monday.com/" rel="nofollow">Monday.com</a></li>
|
||
<li><a href="https://clickup.com/" rel="nofollow">Clickup</a></li>
|
||
<li><a href="https://basecamp.com/" rel="nofollow">Basecamp</a></li>
|
||
<li><a href="https://www.broadcom.com/products/software/value-stream-management/rally" rel="nofollow">Rally</a></li>
|
||
<li><a href="https://www.teamwork.com/" rel="nofollow">Teamwork</a></li>
|
||
<li><a href="https://www.redmine.org/" rel="nofollow">Redmine</a></li>
|
||
<li><a href="https://www.freedcamp.com/" rel="nofollow">Freedcamp</a></li>
|
||
<li><a href="https://www.shortcut.com/" rel="nofollow">Shortcut</a></li>
|
||
<li><a href="https://azure.microsoft.com/en-us/products/devops/boards/" rel="nofollow">Azure Boards</a></li>
|
||
<li><a href="https://github.com/features/project-management">GitHub Projects</a></li>
|
||
<li><a href="https://docs.gitlab.com/ee/user/project/issue_board.html" rel="nofollow">GitLab Boards</a></li>
|
||
<li><a href="https://bitbucket.org/product/features/issues" rel="nofollow">Bitbucket Issues</a></li>
|
||
<li><a href="https://linear.app/" rel="nofollow">Linear</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug / Defect Tracking Software</h3><a id="user-content-bug--defect-tracking-software" class="anchor" aria-label="Permalink: Bug / Defect Tracking Software" href="#bug--defect-tracking-software"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.bugzilla.org/" rel="nofollow">Bugzilla</a></li>
|
||
<li><a href="https://www.bugsee.com/" rel="nofollow">Bugsee</a></li>
|
||
<li><a href="https://instabug.com/" rel="nofollow">Instabug</a></li>
|
||
<li><a href="https://www.zoho.in/bugtracker/" rel="nofollow">Zoho BugTracker</a></li>
|
||
<li><a href="https://bugasura.io" rel="nofollow">Bugasura</a></li>
|
||
<li><a href="https://www.mantisbt.org/" rel="nofollow">Mantis Bug Tracker</a></li>
|
||
<li><a href="https://docs.github.com/en/issues/tracking-your-work-with-issues">Github Issues</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Code Editors and IDEs</h3><a id="user-content-code-editors-and-ides" class="anchor" aria-label="Permalink: Code Editors and IDEs" href="#code-editors-and-ides"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.gnu.org/software/emacs/" rel="nofollow">GNU Emacs</a></li>
|
||
<li><a href="https://notepad-plus-plus.org/" rel="nofollow">Notepad++</a></li>
|
||
<li><a href="https://atom.io/" rel="nofollow">Atom</a></li>
|
||
<li><a href="https://code.visualstudio.com/" rel="nofollow">Visual Studio Code</a></li>
|
||
<li><a href="https://www.sublimetext.com/" rel="nofollow">Sublime Text</a></li>
|
||
<li><a href="https://www.vim.org/" rel="nofollow">Vim</a></li>
|
||
<li><a href="https://www.eclipse.org/downloads/" rel="nofollow">Eclipse</a></li>
|
||
<li><a href="https://www.nano-editor.org/" rel="nofollow">GNU Nano</a></li>
|
||
<li><a href="https://www.ultraedit.com/" rel="nofollow">UltraEdit</a></li>
|
||
<li><a href="https://macromates.com/" rel="nofollow">TextMate</a></li>
|
||
<li><a href="https://gitlab.gnome.org/GNOME/gedit/" rel="nofollow">gedit</a></li>
|
||
<li><a href="https://www.jetbrains.com/webstorm/" rel="nofollow">WebStorm</a></li>
|
||
<li><a href="https://www.jetbrains.com/idea/" rel="nofollow">IntelliJ IDEA</a></li>
|
||
<li><a href="https://www.jetbrains.com/pycharm/" rel="nofollow">PyCharm</a></li>
|
||
<li><a href="https://www.eclipse.org/che/" rel="nofollow">Eclipse Che</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Continuous Testing</h2><a id="user-content-continuous-testing" class="anchor" aria-label="Permalink: Continuous Testing" href="#continuous-testing"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.seleniumhq.org/" rel="nofollow">Selenium</a></li>
|
||
<li><a href="https://junit.org/" rel="nofollow">JUnit</a></li>
|
||
<li><a href="https://testng.org/doc/index.html" rel="nofollow">TestNG</a></li>
|
||
<li><a href="https://nunit.org/" rel="nofollow">NUnit</a></li>
|
||
<li><a href="https://testsigma.com/" rel="nofollow">TestSigma</a></li>
|
||
<li><a href="https://www.microfocus.com/en-us/products/unified-functional-automated-testing/overview" rel="nofollow">Unified Functional Testing (UFT)</a></li>
|
||
<li><a href="https://www.tricentis.com/products/automate-continuous-testing-tosca/" rel="nofollow">Tricentis Tosca</a></li>
|
||
<li><a href="https://www.ibm.com/in-en/marketplace/rational-functional-tester" rel="nofollow">IBM Rational Functional Tester</a></li>
|
||
<li><a href="https://smartbear.com/product/testcomplete/overview/" rel="nofollow">TestComplete</a></li>
|
||
<li><a href="http://watir.com/" rel="nofollow">Waitr</a></li>
|
||
<li><a href="https://www.getzephyr.com/" rel="nofollow">Zephyr</a></li>
|
||
<li><a href="https://www.accelq.com/" rel="nofollow">accelQ</a></li>
|
||
<li><a href="https://jmeter.apache.org/" rel="nofollow">Apache jMeter</a></li>
|
||
<li><a href="https://appium.io/" rel="nofollow">Appium</a></li>
|
||
<li><a href="https://www.steadybit.com/" rel="nofollow">steadybit</a></li>
|
||
<li><a href="https://k6.io/" rel="nofollow">k6</a></li>
|
||
<li><a href="https://jmeter.apache.org/" rel="nofollow">Apache JMeter</a></li>
|
||
<li><a href="https://gatling.io/" rel="nofollow">Gatling</a></li>
|
||
<li><a href="https://www.cypress.io/" rel="nofollow">Cypress</a></li>
|
||
<li><a href="https://www.gurock.com/testrail/" rel="nofollow">TestRail</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Continuous Integration</h2><a id="user-content-continuous-integration" class="anchor" aria-label="Permalink: Continuous Integration" href="#continuous-integration"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Build</h3><a id="user-content-build" class="anchor" aria-label="Permalink: Build" href="#build"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://ninja-build.org/" rel="nofollow">Ninja</a></li>
|
||
<li><a href="https://mesonbuild.com/" rel="nofollow">Meson</a></li>
|
||
<li><a href="https://cmake.org/" rel="nofollow">CMake</a></li>
|
||
<li><a href="https://www.gnu.org/software/automake/" rel="nofollow">Autotools/Automake</a></li>
|
||
<li><a href="https://premake.github.io/" rel="nofollow">premake</a></li>
|
||
<li><a href="https://maven.apache.org/" rel="nofollow">Maven</a></li>
|
||
<li><a href="https://ant.apache.org/" rel="nofollow">Ant</a></li>
|
||
<li><a href="https://gradle.org/" rel="nofollow">Gradle</a></li>
|
||
<li><a href="https://www.gnu.org/software/make/" rel="nofollow">Make</a></li>
|
||
<li><a href="https://cakebuild.net/" rel="nofollow">Cake</a></li>
|
||
<li><a href="https://ruby.github.io/rake/" rel="nofollow">Rake</a></li>
|
||
<li><a href="https://www.microsoft.com/en-us/build" rel="nofollow">MS Build</a></li>
|
||
<li><a href="https://gitlab.com/aki237/drill" rel="nofollow">Drill</a></li>
|
||
<li><a href="https://nixos.org/hydra/" rel="nofollow">Hydra</a></li>
|
||
<li><a href="https://bazel.io" rel="nofollow">Bazel</a></li>
|
||
<li><a href="https://azure.microsoft.com/en-us/services/devops/" rel="nofollow">Azure DevOps</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Integration</h3><a id="user-content-integration" class="anchor" aria-label="Permalink: Integration" href="#integration"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://jenkins.io/" rel="nofollow">Jenkins</a></li>
|
||
<li><a href="https://www.atlassian.com/software/bamboo" rel="nofollow">Bamboo</a></li>
|
||
<li><a href="http://hudson-ci.org/" rel="nofollow">Hudson</a></li>
|
||
<li><a href="https://circleci.com" rel="nofollow">CircleCI</a></li>
|
||
<li><a href="https://www.jetbrains.com/teamcity/" rel="nofollow">TeamCity</a></li>
|
||
<li><a href="https://about.gitlab.com/product/continuous-integration/" rel="nofollow">Gitlab CI</a></li>
|
||
<li><a href="https://travis-ci.org/" rel="nofollow">Travis CI</a></li>
|
||
<li><a href="https://aws.amazon.com/codestar/" rel="nofollow">AWS CodeStar</a></li>
|
||
<li><a href="https://buildbot.net/" rel="nofollow">Buildbot</a></li>
|
||
<li><a href="https://semaphoreci.com/" rel="nofollow">Semaphore CI</a></li>
|
||
<li><a href="https://concourse-ci.org/" rel="nofollow">Concourse CI</a></li>
|
||
<li><a href="https://github.com/bleenco/abstruse">Abstruse CI</a></li>
|
||
<li><a href="https://appcenter.ms/" rel="nofollow">Appcenter</a></li>
|
||
<li><a href="https://ci.appveyor.com/" rel="nofollow">Appveyor</a></li>
|
||
<li><a href="https://assertible.com/" rel="nofollow">Assertible</a></li>
|
||
<li><a href="https://github.com/bosondata/badwolf">Badwolf</a></li>
|
||
<li><a href="https://bitrise.io/" rel="nofollow">Britise</a></li>
|
||
<li><a href="https://buildkite.com/" rel="nofollow">Buildkite</a></li>
|
||
<li><a href="http://www.chronoci.com/" rel="nofollow">Chrono CI</a></li>
|
||
<li><a href="https://www.codacy.com/" rel="nofollow">Codacy</a></li>
|
||
<li><a href="https://www.codeclimate.com/" rel="nofollow">CodeClimate</a></li>
|
||
<li><a href="https://codefresh.io/" rel="nofollow">CodeFresh</a></li>
|
||
<li><a href="https://www.codeship.io/" rel="nofollow">Codeship</a></li>
|
||
<li><a href="https://continuousphp.com/" rel="nofollow">Continuousphp</a></li>
|
||
<li><a href="https://drone.io/" rel="nofollow">Drone</a></li>
|
||
<li><a href="https://houndci.com/" rel="nofollow">Hound CI</a></li>
|
||
<li><a href="https://probo.ci/" rel="nofollow">Probo.CI</a></li>
|
||
<li><a href="https://xebialabs.com/technology/solano-ci/" rel="nofollow">Solano CI</a></li>
|
||
<li><a href="https://www.visualstudio.com/team-services/" rel="nofollow">Visual Studio Team Services</a></li>
|
||
<li><a href="https://www.gocd.org/" rel="nofollow">Go CD</a></li>
|
||
<li><a href="https://pipelight.dev/" rel="nofollow">Pipelight</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Continuous Delivery</h2><a id="user-content-continuous-delivery" class="anchor" aria-label="Permalink: Continuous Delivery" href="#continuous-delivery"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Deployment</h3><a id="user-content-deployment" class="anchor" aria-label="Permalink: Deployment" href="#deployment"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://aws.amazon.com/codedeploy/" rel="nofollow">AWS CodeDeploy</a></li>
|
||
<li><a href="http://electric-cloud.com/products/electricflow/" rel="nofollow">ElectricFlow</a></li>
|
||
<li><a href="https://octopus.com/" rel="nofollow">Octopus Deploy</a></li>
|
||
<li><a href="http://www-03.ibm.com/software/products/en/ucdep" rel="nofollow">IBM UrbanCode</a></li>
|
||
<li><a href="https://deploybot.com/" rel="nofollow">DeployBot</a></li>
|
||
<li><a href="https://app.shippable.com/" rel="nofollow">Shippable</a></li>
|
||
<li><a href="https://www.microfocus.com/en-us/products/codar-continuous-deployment/overview" rel="nofollow">Codar Continuous Delivery</a></li>
|
||
<li><a href="https://app.wercker.com/" rel="nofollow">Wercker</a></li>
|
||
<li><a href="https://humanitec.com/" rel="nofollow">Humanitec</a></li>
|
||
<li><a href="https://argo-cd.readthedocs.io/en/stable/" rel="nofollow">ArgoCD</a></li>
|
||
<li><a href="https://fluxcd.io/" rel="nofollow">FluxCD</a></li>
|
||
<li><a href="https://jenkins-x.io/" rel="nofollow">Jenkins X</a> - CI/CD including everything you need to start exploring Kubernetes</li>
|
||
<li><a href="https://tekton.dev/" rel="nofollow">Tekton</a></li>
|
||
<li><a href="https://buddy.works/" rel="nofollow">Buddy Works</a></li>
|
||
<li><a href="https://werf.io/" rel="nofollow">werf</a></li>
|
||
<li><a href="https://cloud.google.com/build" rel="nofollow">Google Cloud Build</a></li>
|
||
<li><a href="https://spinnaker.io/" rel="nofollow">Spinnaker</a></li>
|
||
<li><a href="https://kluctl.io" rel="nofollow">Kluctl</a> - Easily handle Kubernetes deployments of any size, complexity, and across various environments using the push based CLI or pull based GitOps.</li>
|
||
<li><a href="https://www.seal.io/" rel="nofollow">Walrus</a> - An open-source application management platform based on IaC tools including OpenTofu, Terraform and others. It helps platform engineers build golden paths for developers and empowers developers with self-service capabilities.</li>
|
||
<li><a href="https://github.com/dyrector-io/dyrectorio">dyrector.io</a> - dyrector.io is a self-hosted continuous delivery & deployment platform with version management.</li>
|
||
<li><a href="https://github.com/theketchio/">ketch</a> - Application delivery framework that facilitates the deployment and management of applications on Kubernetes using a simple command line interface.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Automation and Collaboration</h3><a id="user-content-automation-and-collaboration" class="anchor" aria-label="Permalink: Automation and Collaboration" href="#automation-and-collaboration"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.digger.dev/" rel="nofollow">Digger</a> - Infrastructure as code management platform that enables you to run OpenTofu & Terraform in your CI/CD system.</li>
|
||
<li><a href="https://www.runatlantis.io/" rel="nofollow">Atlantis</a> — Open Source Terraform Pull Request Automation tool.</li>
|
||
<li><a href="https://www.env0.com/" rel="nofollow">Env0</a> — Automate and Manage IaC at Scale, With Confidence</li>
|
||
<li><a href="https://spacelift.io/" rel="nofollow">Spacelift</a> — Spacelift is a sophisticated CI/CD platform for OpenTofu, Terraform, Terragrunt, CloudFormation, Pulumi, Kubernetes, and Ansible.</li>
|
||
<li><a href="https://terramate.io/" rel="nofollow">Terramate</a> — Terramate adds powerful capabilities such as code generation, stacks, orchestration, change detection, data sharing and more to Terraform.</li>
|
||
<li><a href="https://terrateam.io/" rel="nofollow">Terrateam</a> — Infrastructure as Code CI/CD for GitHub</li>
|
||
<li><a href="https://docs.otf.ninja/latest/" rel="nofollow">OTF</a> — An open source alternative to terraform enterprise.</li>
|
||
<li><a href="https://docs.hatchet.run/" rel="nofollow">Hatchet</a> — An all-in-one platform to automate, secure and monitor Terraform</li>
|
||
<li><a href="https://docs.github.com/en/actions">GitHub Actions</a> - Automate, customize, and execute your software development workflows right in your repository</li>
|
||
<li><a href="https://runme.dev" rel="nofollow">Runme</a> - Infrastructure Notebooks Built with Markdown. Runme is a free tool that enables Markdown files to become runnable notebooks. You can use scripts in Shell, Perl, Python, and more.</li>
|
||
<li><a href="https://earthly.dev/" rel="nofollow"> Earthly</a> - A versatile, approachable CI/CD framework that runs every pipeline inside containers, giving you repeatable builds that you write once and run anywhere.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Infrastructure orchestration</h3><a id="user-content-infrastructure-orchestration" class="anchor" aria-label="Permalink: Infrastructure orchestration" href="#infrastructure-orchestration"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.vagrantup.com/" rel="nofollow">Vagrant</a></li>
|
||
<li><a href="https://puppet.com/" rel="nofollow">Puppet</a></li>
|
||
<li><a href="https://www.chef.io/" rel="nofollow">Chef</a></li>
|
||
<li><a href="https://www.saltstack.com/" rel="nofollow">SaltStack</a></li>
|
||
<li><a href="https://www.ansible.com/" rel="nofollow">Ansible</a></li>
|
||
<li><a href="https://www.terraform.io/" rel="nofollow">Terraform</a></li>
|
||
<li><a href="https://opentofu.org/" rel="nofollow">OpenTofu</a></li>
|
||
<li><a href="https://terragrunt.gruntwork.io/" rel="nofollow">Terragrunt</a> - DRY and maintainable Terraform code.</li>
|
||
<li><a href="https://www.pulumi.com/" rel="nofollow">Pulumi</a></li>
|
||
<li><a href="https://aws.amazon.com/cloudformation/" rel="nofollow">AWS CloudFormation</a></li>
|
||
<li><a href="https://www.rundeck.com/" rel="nofollow">Rundeck</a></li>
|
||
<li><a href="https://www.selefra.io/" rel="nofollow">Selefra</a></li>
|
||
<li><a href="https://www.scalr.com/" rel="nofollow">Scalr</a></li>
|
||
<li><a href="https://cloud.google.com/deployment-manager/" rel="nofollow">Google Cloud Deployment Manager</a></li>
|
||
<li><a href="https://ops.city" rel="nofollow">OPS</a></li>
|
||
<li><a href="https://helm.sh/" rel="nofollow">Helm</a> - The package manager for Kubernetes</li>
|
||
<li><a href="https://helmfile.readthedocs.io/en/latest/" rel="nofollow">Helmfile</a> - Deploy Kubernetes Helm Charts</li>
|
||
<li><a href="https://www.crossplane.io/" rel="nofollow">Crossplane</a></li>
|
||
<li><a href="https://www.packer.io/" rel="nofollow">Packer</a></li>
|
||
<li><a href="https://github.com/kbst/terraform-kubestack">Kubestack</a></li>
|
||
<li><a href="https://shipyard.build/" rel="nofollow">Shipyard</a> - Ephemeral environment management platform.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Container</h3><a id="user-content-container" class="anchor" aria-label="Permalink: Container" href="#container"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://depot.dev/" rel="nofollow">Depot</a></li>
|
||
<li><a href="https://www.docker.com/" rel="nofollow">Docker</a></li>
|
||
<li><a href="https://turbo.net/" rel="nofollow">Turbo.NET</a></li>
|
||
<li><a href="https://windocks.com/" rel="nofollow">WinDocks</a></li>
|
||
<li><a href="https://podman.io/" rel="nofollow">Podman</a></li>
|
||
<li><a href="https://containerd.io/" rel="nofollow">containerd</a></li>
|
||
<li><a href="https://www.openshift.com/" rel="nofollow">OpenShift</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Container Registry</h3><a id="user-content-container-registry" class="anchor" aria-label="Permalink: Container Registry" href="#container-registry"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://hub.docker.com/" rel="nofollow">Docker Hub</a></li>
|
||
<li><a href="https://cloud.google.com/container-registry/" rel="nofollow">Google Container Registry</a></li>
|
||
<li><a href="https://aws.amazon.com/ecr/" rel="nofollow">Amazon ECR</a></li>
|
||
<li><a href="https://about.gitlab.com/2016/05/23/gitlab-container-registry/" rel="nofollow">Gitlab Container Registry</a></li>
|
||
<li><a href="https://jfrog.com/artifactory/" rel="nofollow">JFrog Artifactory</a></li>
|
||
<li><a href="https://quay.io/" rel="nofollow">Quay.io</a></li>
|
||
<li><a href="https://azure.microsoft.com/en-in/services/container-registry/" rel="nofollow">Azure Container Registry</a></li>
|
||
<li><a href="https://container-registry.oracle.com" rel="nofollow">Oracle Container Registry</a></li>
|
||
<li><a href="https://help.sonatype.com/repomanager3/formats/docker-registry" rel="nofollow">Nexus Container Registry</a></li>
|
||
<li><a href="https://goharbor.io/" rel="nofollow">Harbor</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Container Orchestration</h3><a id="user-content-container-orchestration" class="anchor" aria-label="Permalink: Container Orchestration" href="#container-orchestration"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://kubernetes.io/" rel="nofollow">Kubernetes</a></li>
|
||
<li><a href="https://github.com/hashicorp/nomad">Nomad</a></li>
|
||
<li><a href="https://docs.docker.com/engine/swarm/" rel="nofollow">Docker Swarm</a></li>
|
||
<li><a href="https://mesos.apache.org/" rel="nofollow">Apache Mesos</a> - with <a href="https://mesosphere.github.io/marathon/" rel="nofollow">Marathon</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Continuous Monitoring</h2><a id="user-content-continuous-monitoring" class="anchor" aria-label="Permalink: Continuous Monitoring" href="#continuous-monitoring"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://aws.amazon.com/cloudwatch/" rel="nofollow">AWS CloudWatch</a></li>
|
||
<li><a href="https://www.debugbear.com/" rel="nofollow">DebugBear</a></li>
|
||
<li><a href="https://prometheus.io/" rel="nofollow">Prometheus</a></li>
|
||
<li><a href="https://cloud.google.com/stackdriver/" rel="nofollow">StackDriver</a></li>
|
||
<li><a href="https://sensu.io/" rel="nofollow">Sensu</a></li>
|
||
<li><a href="https://sentry.io/welcome/" rel="nofollow">Sentry</a></li>
|
||
<li><a href="https://www.idera.com/infrastructure-monitoring-as-a-service" rel="nofollow">CopperEgg</a></li>
|
||
<li><a href="https://fabric.io/kits/android/crashlytics" rel="nofollow">Crashlytics</a></li>
|
||
<li><a href="https://www.influxdata.com/time-series-platform/kapacitor/" rel="nofollow">Kapacitor</a></li>
|
||
<li><a href="https://www.loggly.com/" rel="nofollow">loggly</a></li>
|
||
<li><a href="https://logmatic.io/" rel="nofollow">logmatic</a></li>
|
||
<li><a href="https://www.elastic.co/products/logstash" rel="nofollow">Logstash</a></li>
|
||
<li><a href="https://www.mongodb.com/cloud/atlas" rel="nofollow">MongoDB Atlas</a></li>
|
||
<li><a href="https://www.mongodb.com/cloud/cloud-manager" rel="nofollow">MongoDB Cloud Manager</a></li>
|
||
<li><a href="https://newrelic.com/" rel="nofollow">NewRelic</a></li>
|
||
<li><a href="https://papertrailapp.com/" rel="nofollow">Papertrail</a></li>
|
||
<li><a href="https://tools.pingdom.com/" rel="nofollow">Pingdom</a></li>
|
||
<li><a href="https://www.serverdensity.com/" rel="nofollow">ServerDensity</a></li>
|
||
<li><a href="https://www.zabbix.com/" rel="nofollow">Zabbix</a></li>
|
||
<li><a href="https://www.rapid7.com/products/insightops/" rel="nofollow">InsightOps</a></li>
|
||
<li><a href="https://appsignal.com" rel="nofollow">AppSignal</a></li>
|
||
<li><a href="https://grafana.com" rel="nofollow">Grafana</a></li>
|
||
<li><a href="https://github.com/VictoriaMetrics/VictoriaMetrics/">VictoriaMetrics</a></li>
|
||
<li><a href="https://www.chaosgenius.io/" rel="nofollow">Chaos Genius</a></li>
|
||
<li><a href="https://thanos.io/" rel="nofollow">Thanos</a></li>
|
||
<li><a href="https://grafana.com/oss/mimir/" rel="nofollow">Mimir</a></li>
|
||
<li><a href="https://hydrozen.io" rel="nofollow">Hydrozen.io</a> - Uptime monitoring & Statuspages</li>
|
||
<li><a href="https://steampipe.io" rel="nofollow">Steampipe.io</a> - Universal SQL interface to any cloud API</li>
|
||
<li><a href="https://betterstack.com/" rel="nofollow">Better Stack</a></li>
|
||
<li><a href="https://netdata.cloud" rel="nofollow">Netdata</a></li>
|
||
<li><a href="https://github.com/ingyamilmolinar/doctorgpt">DoctorGPT</a> - Brings GPT into production for application log error monitoring</li>
|
||
<li><a href="https://www.dynatrace.com/" rel="nofollow">Dynatrace</a></li>
|
||
<li><a href="https://www.datadoghq.com/" rel="nofollow">Datadog</a></li>
|
||
<li><a href="https://www.elastic.co/apm" rel="nofollow">Elastic APM</a></li>
|
||
<li><a href="https://healthchecks.io" rel="nofollow">Healthchecks.io</a></li>
|
||
<li><a href="https://onlineornot.com/" rel="nofollow">OnlineOrNot</a> - Uptime monitoring for websites, APIs, and cron jobs, with integrated status pages.</li>
|
||
<li><a href="https://www.elastic.co/elastic-stack" rel="nofollow">ELK Stack (Elasticsearch, Logstash, Kibana)</a></li>
|
||
<li><a href="https://docs.victoriametrics.com/victorialogs/" rel="nofollow">VictoriaLogs database for logs from VictoriaMetrics</a></li>
|
||
<li><a href="https://opentelemetry.io/" rel="nofollow">OpenTelemetry</a></li>
|
||
<li><a href="https://github.com/fluent/fluentd">Fluentd CNCF- a Distributed Tracing Platform</a></li>
|
||
<li><a href="https://github.com/jaegertracing/jaeger">Jaeger CNCF: Unified Logging Layer</a></li>
|
||
<li><a href="https://github.com/infracost/infracost">Infracost- cost estimates for Terraform</a></li>
|
||
<li><a href="https://github.com/opencost/opencost">OpenCost — open source cost monitoring tool for Kubernetes</a></li>
|
||
<li><a href="https://github.com/apache/skywalking">Apache SkyWalking — Application Performance Monitoring</a></li>
|
||
<li><a href="https://github.com/signoz/signoz">SigNoz- an open-source alternative to DataDog, NewRelic, etc.</a></li>
|
||
<li><a href="https://grafana.com/oss/loki/" rel="nofollow">Loki - low cost open source logging; self-hosted or SaaS</a></li>
|
||
<li><a href="https://github.com/siglens/siglens">SigLens</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Incident Management / Incident Response / IT Alerting / On-Call</h2><a id="user-content-incident-management--incident-response--it-alerting--on-call" class="anchor" aria-label="Permalink: Incident Management / Incident Response / IT Alerting / On-Call" href="#incident-management--incident-response--it-alerting--on-call"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.squadcast.com" rel="nofollow">Squadcast</a></li>
|
||
<li><a href="https://www.pagerduty.com/" rel="nofollow">PagerDuty</a></li>
|
||
<li><a href="https://victorops.com/" rel="nofollow">VictorOps</a></li>
|
||
<li><a href="https://www.opsgenie.com/" rel="nofollow">OpsGenie</a></li>
|
||
<li><a href="https://alertops.com/" rel="nofollow">AlertOps</a></li>
|
||
<li><a href="https://www.blameless.com/" rel="nofollow">Blameless</a></li>
|
||
<li><a href="https://www.atlassian.com/software/jira/ops" rel="nofollow">Jira Ops</a></li>
|
||
<li><a href="https://www.onpage.com/" rel="nofollow">OnPage</a></li>
|
||
<li><a href="https://pagertree.com/" rel="nofollow">PagerTree</a></li>
|
||
<li><a href="https://cabotapp.com/" rel="nofollow">Cabot</a></li>
|
||
<li><a href="http://www.alertagility.com/" rel="nofollow">AlertAgility</a></li>
|
||
<li><a href="https://www.xmatters.com/" rel="nofollow">xMatters</a></li>
|
||
<li><a href="https://www.derdack.com/" rel="nofollow">Derdack Enterprise Alert</a></li>
|
||
<li><a href="https://www.bigpanda.io/" rel="nofollow">Bigpanda</a></li>
|
||
<li><a href="https://github.com/ustream/openduty">OpenDuty</a></li>
|
||
<li><a href="https://www.ngdesk.com/" rel="nofollow">ngDesk</a></li>
|
||
<li><a href="https://www.itrsgroup.com/products/geneos" rel="nofollow">Geneos</a></li>
|
||
<li><a href="https://www.firehydrant.com" rel="nofollow">FireHydrant</a></li>
|
||
<li><a href="https://github.com/seznam/slo-exporter">SLO exporter</a></li>
|
||
<li><a href="https://github.com/last9/slo-computer">SLO Calculator</a></li>
|
||
<li><a href="https://www.rootly.io" rel="nofollow">Rootly</a></li>
|
||
<li><a href="https://grafana.com/oss/oncall/" rel="nofollow">Grafana OnCall</a></li>
|
||
<li><a href="https://github.com/keephq/keep">Keep - CLI for alerting</a></li>
|
||
<li><a href="https://betterstack.com/" rel="nofollow">Better Stack</a></li>
|
||
<li><a href="https://www.everbridge.com/" rel="nofollow">Everbridge</a></li>
|
||
<li><a href="https://www.moogsoft.com/" rel="nofollow">Moogsoft</a></li>
|
||
<li><a href="https://incident.io/" rel="nofollow">incident.io</a></li>
|
||
<li><a href="https://prometheus.io/docs/alerting/latest/alertmanager/" rel="nofollow">AlertManager</a></li>
|
||
<li><a href="https://rootly.com" rel="nofollow">rootly</a> - Manage incidents directly from Slack</li>
|
||
<li><a href="https://pagerly.io" rel="nofollow">Pagerly</a> - Manage Oncalls and Incidents on Slack</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">IT Service Management</h3><a id="user-content-it-service-management" class="anchor" aria-label="Permalink: IT Service Management" href="#it-service-management"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://homer-demo.netlify.app/" rel="nofollow">Homer</a> - A very simple static homepage for your server.</li>
|
||
<li><a href="https://freshservice.com/" rel="nofollow">FreshService</a></li>
|
||
<li><a href="https://www.servicenow.com/" rel="nofollow">ServiceNow</a></li>
|
||
<li><a href="http://www.bmcsoftware.in/it-solutions/remedy-itsm.html" rel="nofollow">BMC Remedy</a></li>
|
||
<li><a href="https://www.atlassian.com/software/jira/service-management" rel="nofollow">Jira Service Management(formerly Jira Service Desk)</a></li>
|
||
<li><a href="https://www.samanage.com/" rel="nofollow">Samanage</a></li>
|
||
<li><a href="https://www.cherwell.com/products/it-service-management/" rel="nofollow">Cherwell</a></li>
|
||
<li><a href="https://www.sysaid.com/it-service-management-software" rel="nofollow">SysAid</a></li>
|
||
<li><a href="https://www.manageengine.com/products/service-desk/" rel="nofollow">ManageEngine Servicedesk plus</a></li>
|
||
<li><a href="https://www.zendesk.com/" rel="nofollow">Zendesk</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Incident Communication</h3><a id="user-content-incident-communication" class="anchor" aria-label="Permalink: Incident Communication" href="#incident-communication"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.squadcast.com/statuspage" rel="nofollow">Squadcast Statuspages</a></li>
|
||
<li><a href="https://statuspal.io/?utm_source=github.com&utm_medium=referral&utm_campaign=awesome-devops" rel="nofollow">StatusPal</a> - communicate incidents and maintenance effectively with a beautiful hosted status page.</li>
|
||
<li><a href="https://hydrozen.io" rel="nofollow">Hydrozen.io Statuspages</a></li>
|
||
<li><a href="https://www.atlassian.com/software/statuspage" rel="nofollow">Atlassian Statuspages</a></li>
|
||
<li><a href="https://instatus.com" rel="nofollow">Instatus Statuspages</a> - Quick and beautiful status page.</li>
|
||
<li><a href="https://cachethq.io/" rel="nofollow">Cachet</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Security</h2><a id="user-content-security" class="anchor" aria-label="Permalink: Security" href="#security"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://sysdig.com/" rel="nofollow">Sysdig Secure</a></li>
|
||
<li><a href="https://www.aquasec.com/" rel="nofollow">Aqua Security</a></li>
|
||
<li><a href="https://www.wiz.io/" rel="nofollow">Wiz</a></li>
|
||
<li><a href="https://wazuh.com/" rel="nofollow">Wazuh</a></li>
|
||
<li><a href="https://www.qualys.com/cloud-platform/" rel="nofollow">Qualys Cloud Platform</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Internal Developer Portal</h2><a id="user-content-internal-developer-portal" class="anchor" aria-label="Permalink: Internal Developer Portal" href="#internal-developer-portal"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://www.getport.io/" rel="nofollow">Port</a></li>
|
||
<li><a href="https://backstage.io/" rel="nofollow">Backstage Software Catalog</a></li>
|
||
<li><a href="https://www.opslevel.com/" rel="nofollow">OpsLevel</a></li>
|
||
<li><a href="https://www.kusionstack.io/" rel="nofollow">KusionStack</a></li>
|
||
<li><a href="https://www.kubestack.com/" rel="nofollow">KubeStack</a></li>
|
||
<li><a href="https://radapp.io/" rel="nofollow">Radius app</a> - Open-source, cloud-native, application platform that enables developers and the operators that support them to define, deploy, and collaborate on cloud-native applications across public clouds and private infrastructure.</li>
|
||
<li><a href="https://mia-platform.eu" rel="nofollow">Mia platform</a> - Don’t waste time setting up your platform, just push the code!.</li>
|
||
<li><a href="https://humanitec.com" rel="nofollow">Humanitec</a> - Powering your Internal Developer Platform.</li>
|
||
<li><a href="https://www.appvia.io" rel="nofollow">Appvia</a> - Increase Developer productivity with self-service.</li>
|
||
<li><a href="https://www.qovery.com" rel="nofollow">qovery</a> - Deliver Self-Service Infrastructure Faster.</li>
|
||
<li><a href="https://mogenius.com" rel="nofollow">Mogenius</a> - The Kubernetes Operations Platform.</li>
|
||
<li><a href="https://www.nullstone.io" rel="nofollow">Nullstone</a> - An easy-to-use developer platform that enables developers to quickly deploy any application.</li>
|
||
<li><a href="https://github.com/syntasso/kratix">Kratix</a> - A framework for building Platform-as-a-Product.</li>
|
||
<li><a href="https://www.cycloid.io/platform-engineering" rel="nofollow">cycloid</a> - Platform Engineering is DevOps with an action plan.</li>
|
||
<li><a href="https://shipa.io/" rel="nofollow">Shipa</a> - Shipa simplifies the way you deploy, secure, and manage applications across cloud native infrastructures by taking an application-centric approach.</li>
|
||
<li><a href="https://www.upbound.io/" rel="nofollow">Upbound</a> - The platform for platform teams.</li>
|
||
<li><a href="https://github.com/kubero-dev/kubero">Kubero</a> - A fully self-hosted Internal Developer Platform (IDP).</li>
|
||
<li><a href="https://roadie.io" rel="nofollow">Roadie Internal Developer Portal</a> - SaaS-based Internal Developer Portal.</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Path to senior platform engineer handbook</h2><a id="user-content-path-to-senior-platform-engineer-handbook" class="anchor" aria-label="Permalink: Path to senior platform engineer handbook" href="#path-to-senior-platform-engineer-handbook"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://4dayweek.io/career-path/platform-engineer" rel="nofollow">Platform Engineer Career Path</a> - Everything you need to know to senior platform engineer and beyond.</li>
|
||
<li><a href="https://medium.com/platform-engineering-unleashed/the-rise-of-the-platform-engineer-a-guide-to-shaping-your-career-2f1348a47ef9" rel="nofollow">A Guide to shaping your Platform Engineer career</a> - Platform Engineering career pathing.</li>
|
||
</ul>
|
||
<p dir="auto">Platform Engineering serves as a distinct and valuable career path within an organization, complementing roles like DevOps and Site Reliability Engineering (SRE). While DevOps and SRE ensure smooth software development processes and reliable, scalable infrastructure respectively, Platform Engineers are entrusted with the unique responsibility of crafting the tools, processes, and platforms on which software development and operational tasks occur</p>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Platform Engineering Career pathing</h3><a id="user-content-platform-engineering-career-pathing" class="anchor" aria-label="Permalink: Platform Engineering Career pathing" href="#platform-engineering-career-pathing"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<p dir="auto"><a target="_blank" rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/26981510/339964631-f6ce7cbd-b339-4aef-812f-163c07c9fbbe.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zMzk5NjQ2MzEtZjZjZTdjYmQtYjMzOS00YWVmLTgxMmYtMTYzYzA3YzlmYmJlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcwMjRlN2M3ZThlMDNmYTRiYzJlMTIyMzg3MmNlMzJiYzViYzU2ZjQzYzRiMDBjZDRiZjhhZjRkZGRjNDAxZDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.CdHUNvs-cAoqjl4jExaYcYK72PAss4wu0x77WNZZDBc"><img src="https://private-user-images.githubusercontent.com/26981510/339964631-f6ce7cbd-b339-4aef-812f-163c07c9fbbe.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zMzk5NjQ2MzEtZjZjZTdjYmQtYjMzOS00YWVmLTgxMmYtMTYzYzA3YzlmYmJlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcwMjRlN2M3ZThlMDNmYTRiYzJlMTIyMzg3MmNlMzJiYzViYzU2ZjQzYzRiMDBjZDRiZjhhZjRkZGRjNDAxZDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.CdHUNvs-cAoqjl4jExaYcYK72PAss4wu0x77WNZZDBc" alt="image" style="max-width: 100%;"></a></p>
|
||
<p dir="auto"><a target="_blank" rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/26981510/339964649-836098ac-d479-4bbc-8d2d-fb1de1253909.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zMzk5NjQ2NDktODM2MDk4YWMtZDQ3OS00YmJjLThkMmQtZmIxZGUxMjUzOTA5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhYjhjYjU4YzM3ZTk4N2YwYmM1MGI5NDg2YjU2ZjFiNzRlOWUyZmYyZTcxYzliYzg5OWYzZDRiZjA4Y2FlOTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.VjoatJrHmy5AbFYGGcnj7Uvp4HHQsdzN50C5cuhEr4w"><img src="https://private-user-images.githubusercontent.com/26981510/339964649-836098ac-d479-4bbc-8d2d-fb1de1253909.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODkxOTM3NDgsIm5iZiI6MTc4OTE5MzQ0OCwicGF0aCI6Ii8yNjk4MTUxMC8zMzk5NjQ2NDktODM2MDk4YWMtZDQ3OS00YmJjLThkMmQtZmIxZGUxMjUzOTA5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTEyVDA2MTA0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhYjhjYjU4YzM3ZTk4N2YwYmM1MGI5NDg2YjU2ZjFiNzRlOWUyZmYyZTcxYzliYzg5OWYzZDRiZjA4Y2FlOTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.VjoatJrHmy5AbFYGGcnj7Uvp4HHQsdzN50C5cuhEr4w" alt="image" style="max-width: 100%;"></a></p>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Platform Engineering Roles Summary</h3><a id="user-content-platform-engineering-roles-summary" class="anchor" aria-label="Permalink: Platform Engineering Roles Summary" href="#platform-engineering-roles-summary"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<p dir="auto"><strong>Junior Platform Engineer:</strong><br>
|
||
Handles routine tasks, troubleshooting, cloud configurations, and code reviews.<br>
|
||
<em>Skills:</em> Basic scripting, cloud tech, containerization, Golang, Kubernetes.</p>
|
||
<p dir="auto"><strong>Platform Engineer:</strong><br>
|
||
Implements features, security, system scaling, and CI/CD tools.<br>
|
||
<em>Skills:</em> Advanced cloud platforms, containerization, CI/CD, scripting, Golang, Kubernetes.</p>
|
||
<p dir="auto"><strong>Senior Platform Engineer:</strong><br>
|
||
Designs architecture, mentors, manages projects, ensures security.<br>
|
||
<em>Skills:</em> System architecture, cloud computing, containerization, CI/CD, Golang, Kubernetes.</p>
|
||
<p dir="auto"><strong>Lead Platform Engineer:</strong><br>
|
||
Leads team, manages projects, strategic decisions, stakeholder interaction.<br>
|
||
<em>Skills:</em> Systems design, project management, various tech stacks, Golang, Kubernetes.</p>
|
||
<p dir="auto"><strong>Staff Platform Engineer:</strong><br>
|
||
Sets technical direction, standards, leads projects, guides cloud services.<br>
|
||
<em>Skills:</em> Multiple tech stacks, system design, performance, security, Golang, Kubernetes.</p>
|
||
<p dir="auto"><strong>Principal Platform Engineer:</strong><br>
|
||
Technical leader, sets vision, strategy, engineering processes, cloud strategy.<br>
|
||
<em>Skills:</em> Broad tech expertise, strategic planning, complex engineering processes, Golang, Kubernetes.</p>
|
||
<p dir="auto"><strong>Platform Engineering Manager:</strong><br>
|
||
Oversees teams, strategic direction, performance, budgeting, alignment with business.<br>
|
||
<em>Skills:</em> Technical background, budgeting, talent development, Golang, Kubernetes.</p>
|
||
<p dir="auto"><strong>Senior Manager, Platform Engineering:</strong><br>
|
||
Sets organization-wide strategy, manages teams, cross-team collaboration, cloud strategy.<br>
|
||
<em>Skills:</em> Broad tech knowledge, business understanding, engineering management, Golang, Kubernetes.</p>
|
||
<p dir="auto"><strong>Director of Platform Engineering:</strong><br>
|
||
Sets vision, plans execution, tech decisions, team structure, budget management, strategic planning.<br>
|
||
<em>Skills:</em> Vision setting, strategic planning, cloud strategy, Golang, Kubernetes.</p>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Miscellaneous and Related</h2><a id="user-content-miscellaneous-and-related" class="anchor" aria-label="Permalink: Miscellaneous and Related" href="#miscellaneous-and-related"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li><a href="https://landscape.cncf.io/" rel="nofollow">Cloud Native Interactive Landscape</a></li>
|
||
<li><a href="https://platformengineering.org/platform-tooling" rel="nofollow">Platformengineering.org tooling list</a></li>
|
||
<li><a href="https://github.com/toptechevangelist/awesome-platform-engineering">Platform Engineering list</a></li>
|
||
<li><a href="https://www.syntasso.io/post/the-12-platform-challenges-of-christmas" rel="nofollow">The 12 Platform Challenges</a></li>
|
||
<li><a href="https://github.com/TaptuIT/awesome-devsecops/">DevSecOps resources and tooling</a></li>
|
||
<li><a href="https://learn.microsoft.com/en-us/azure/architecture/patterns/" rel="nofollow">Architecture- Cloud Design Patterns</a></li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Notions and concepts</h2><a id="user-content-notions-and-concepts" class="anchor" aria-label="Permalink: Notions and concepts" href="#notions-and-concepts"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Fundamentals</h3><a id="user-content-fundamentals" class="anchor" aria-label="Permalink: Fundamentals" href="#fundamentals"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li>
|
||
<p dir="auto">Keep it simple, stupid. You ain't gonna need it.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">You should think about what to do before you do it.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">You should try to talk about what you’re planning to do before you do it.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">You should think about what you did after you did it.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Be prepared to throw away something you’ve done in order to do something different.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Always look for better ways of doing things.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">“Good enough” isn’t good enough.</p>
|
||
</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Code</h3><a id="user-content-code" class="anchor" aria-label="Permalink: Code" href="#code"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li>
|
||
<p dir="auto">Code is a liability, not an asset. Aim to have as little of it as possible.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Build programs out of pure functions. This saves you from spending your brain power on tracking side effects, mutated state and actions at a distance.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Use a programming language with a rich type system that lets you describe the parts of your code and checks your program at compile time.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">The expressivity of a programming language matters hugely. It’s not just a convenience to save keypresses, it directly influences the way in which you write code.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Choose a programming language that has a good module system, and use it. Be explicit about the public interface of a module, and ensure its interals don't leak out to client code.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Code is a living construct that is never “done”. You need to tend it like a garden, always improving and tidying it, or it withers and dies.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Have the same high standards for all the code you write, from little scripts to the inner loop of your critical system.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Write code that is exception safe and resource safe, always, even in contexts where you think it won’t matter. The code you wrote in a little ad-hoc script will inevitably find its way into more critical or long-running code.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Use the same language for the little tools and scripts in your system too. There are few good reasons to drop down into bash or Python scripts, and some considerable disadvantages.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">In code, even the smallest details matter. This includes whitespace and layout!</p>
|
||
</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Design</h3><a id="user-content-design" class="anchor" aria-label="Permalink: Design" href="#design"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li>
|
||
<p dir="auto">Modelling - the act of creating models of the world - is a crucial skill, and one that’s been undervalued in recent years.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Model your domain using types.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Model your domain first, using data types and function signatures, pick implementation technologies and physical architecture later.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Implement functionality in vertical slices that span your whole system, and iterate to grow the system.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Resist the temptation to use your main domain types to describe interfaces or messages exchanged by your system. Use separate types for these, even if it entails some duplication, as these types will evolve differently over time.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Prefer immutability always. This applies to data storage as well as in-memory data structures.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">When building programs that perform actions, model the actions as data, then write an interpreter that performs them. This makes your code much easier to test, monitor, debug, and refactor.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Dependency management is crucial, so do it from day one. The payoff for this mostly comes when your system is bigger, but it’s not expensive to do from the beginning and it saves massive problems later.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Avoid circular dependencies, always.</p>
|
||
</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Designing systems</h3><a id="user-content-designing-systems" class="anchor" aria-label="Permalink: Designing systems" href="#designing-systems"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li>
|
||
<p dir="auto">A better system is often a smaller, simpler system.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">To design healthy systems, divide and conquer. Split the problem into smaller parts.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Divide and conquer works recursively: divide the system into a hierarchy of simpler sub-systems and components.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto"><em>Corollary: When designing a system, there are more choices than a monolith vs. a thousand “microservices”.</em></p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">The interface between parts is crucial. Aim for interfaces that are as small and simple as possible.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Data dependencies are insidious. Take particular care to manage the coupling introduced by such dependencies.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Plan to evolve data definitions over time, as they will inevitably change.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Asynchronous interfaces can be useful to remove temporal coupling between parts.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Every inter-process boundary incurs a great cost, losing type safety, and making it much harder to reason about failures. Only introduce such boundaries where absolutely necessary and where the benefits outweigh the cost.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Being able to tell what your system is doing is crucial, so make sure it’s observable.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Telling what your system has done in the past is even more crucial, so make sure it’s auditable.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">A modern programming language is the most expressive tool we have for describing all aspects of a system.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">This means: write configuration as code, unless it absolutely, definitely has to change at runtime.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Also, write the specification of the system as executable code.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">And, use code to describe the infrastructure of your system, in the same language as the rest of the code. Write code that interprets the description of your system to provision actual physical infrastructure.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">At the risk of repeating myself: everything is code.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto"><em>Corollary: if you’re writing JSON or YAML by hand, you’re doing it wrong. These are formats for the machines, not for humans to produce and consume. (Don’t despair though: most people do this, I do too, so you’re not alone! Let's just try to aim for something better).</em></p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">The physical manifestation of your system (e.g. choices of storage, messaging, RPC technology, packaging and scheduling etc) should usually be an implementation detail, not the main aspect of the system that the rest is built around.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">It should be easy to change the underlying technologies (e.g. for data storage, messaging, execution environment) used by a component in your system, this should not affect large parts of your code base.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">You should have at least two physical manifestations of your system: a fully integrated in-memory one for testing, and the real physical deployment. They should be functionally equivalent.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">You should be able to run a local version of your system on a developer’s computer with a single command. With the capacity of modern computers, there is absolutely no rational reason why this isn’t feasible, even for big, complex systems.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">There is a running theme here: separate the description of <em>what</em> a system does from <em>how</em> it does it. This is probably the single most important consideration when creating a system.</p>
|
||
</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Building systems</h3><a id="user-content-building-systems" class="anchor" aria-label="Permalink: Building systems" href="#building-systems"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li>
|
||
<p dir="auto">For a new system, get a walking skeleton deployed to production as soon as possible.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Your master branch should always be deployable to production.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Use feature branches if you like. Modern version control tools make merging easy enough that it’s not a problem to let these be long-lived in some cases.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Ideally, deploy automatically to production on every update to master. If that’s not feasible, it should be a one-click action to perform the deployment.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Maintain a separate environment for situations when you find it useful to test code separately from production. Avoid more than one such extra environment, as this introduces overheads and cost.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Prefer feature flags and similar mechanisms to control what's enabled in production over separate test/staging environments and manual promotion of releases.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Get in the habit of deploying from master to production from the very beginning of a project. Doing this shapes both your system and how you work with it for the better.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">In fact, follow all these practices from the very beginning of a new system. Retrofitting them later is much, much harder.</p>
|
||
</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Technology</h3><a id="user-content-technology" class="anchor" aria-label="Permalink: Technology" href="#technology"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<ul dir="auto">
|
||
<li>
|
||
<p dir="auto">Beware of hyped or fashionable technologies. The fundamentals of computer science and engineering don’t change much over time.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Keep up with latest developments in technology to see how they can help you, but be realistic about what they can do.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">Choose your data storage backend according to the shape of data, types of queries needed, patterns of writes vs. reads, performance requirements, and more. Every use case is different.</p>
|
||
</li>
|
||
<li>
|
||
<p dir="auto">That said, PostgreSQL should be your default and you should only pick something else if you have a good reason.</p>
|
||
</li>
|
||
</ul>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Stargazers over time</h2><a id="user-content-stargazers-over-time" class="anchor" aria-label="Permalink: Stargazers over time" href="#stargazers-over-time"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<p dir="auto"><a href="https://starchart.cc/seifrajhi/awesome-platform-engineering-tools" rel="nofollow"><img src="https://camo.githubusercontent.com/ab9dae421400ea0673c04958001d236b1a76bdb6e8e9ad54dcaa256829cdbfcd/68747470733a2f2f7374617263686172742e63632f7365696672616a68692f617765736f6d652d706c6174666f726d2d656e67696e656572696e672d746f6f6c732e737667" alt="Stargazers over time" data-canonical-src="https://starchart.cc/seifrajhi/awesome-platform-engineering-tools.svg" style="max-width: 100%;"></a></p>
|
||
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Licence</h2><a id="user-content-licence" class="anchor" aria-label="Permalink: Licence" href="#licence"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
|
||
<p dir="auto">Shield: <a href="https://creativecommons.org/licenses/by/4.0/" rel="nofollow"><img src="https://camo.githubusercontent.com/59896db2b47e60cf6b6cdd3af4bc9ec3e8d290389a9d3ce7cdb95a955e9d0923/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d43432532304259253230342e302d6c69676874677265792e737667" alt="CC BY 4.0" data-canonical-src="https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg" style="max-width: 100%;"></a></p>
|
||
<p dir="auto">This work is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/" rel="nofollow">Creative Commons Attribution 4.0 International
|
||
License</a>.</p>
|
||
<p dir="auto"><a href="https://creativecommons.org/licenses/by/4.0/" rel="nofollow"><img src="https://camo.githubusercontent.com/dde62adfa88dac8de0fd193fd531088d21a3b388e69f6eb17dfa6294dbc4bdef/68747470733a2f2f692e6372656174697665636f6d6d6f6e732e6f72672f6c2f62792f342e302f38387833312e706e67" alt="CC BY 4.0" data-canonical-src="https://i.creativecommons.org/l/by/4.0/88x31.png" style="max-width: 100%;"></a></p>
|
||
<p dir="auto"><a href="#0">Back to Top</a></p>
|
||
</article></div></div></div></div></div></div></div><div class="prc-PageLayout-PaneWrapper-pHPop pr-2" style="--offset-header:0px;--spacing-row:var(--spacing-none);--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="end"><div class="prc-PageLayout-HorizontalDivider-JLVqp prc-PageLayout-PaneHorizontalDivider-9tbnE" data-component="PageLayout.HorizontalDivider" data-variant-narrow="none" data-variant-regular="none" data-position="end" style="--spacing-divider:var(--spacing-none);--spacing:var(--spacing-none)"></div><div class="prc-PageLayout-Pane-AyzHK" data-component="SplitPageLayout.Pane" style="--spacing:var(--spacing-normal);--pane-min-width:256px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));--pane-width-size:var(--pane-width-large);--pane-width:320px"><!--&--><div class="CodeViewSidebar-module__borderGrid__Lpx5q"><div class="SidebarSection-module__sidebarSection__e8jFN hide-sm hide-md border-0"><h2 class="SidebarSection-module__sectionHeading__TG36m prc-Heading-Heading-MtWFE" data-variant="small" data-component="Heading"><span>About</span></h2><p class="SidebarAbout-module__description__xTkIP prc-Text-Text-9mHv3" data-component="Text">A curated list of Platform Engineering Tools</p><div class="SidebarAbout-module__websiteRow__Yi9Fi"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-link shrink-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg><span class="SidebarAbout-module__websiteLink__ZSZnk prc-Truncate-Truncate-2G1eo" title="https://seifrajhi.github.io/awesome-platform-engineering-tools/" style="--truncate-max-width:none"><a class="text-bold prc-Link-Link-9ZwDx" data-component="Link" href="https://seifrajhi.github.io/awesome-platform-engineering-tools/" target="_blank" rel="noopener noreferrer nofollow">seifrajhi.github.io/awesome-platform-engineering-tools/</a></span></div><h3 class="sr-only prc-Heading-Heading-MtWFE" data-component="Heading"><span>Topics</span></h3><div class="prc-TopicTag-TopicTagGroup-CPva9"><a class="prc-TopicTag-TopicTag-LS-jX" href="/topics/devops" data-discover="true">devops</a><a class="prc-TopicTag-TopicTag-LS-jX" href="/topics/internal-developer-platform" data-discover="true">internal-developer-platform</a><a class="prc-TopicTag-TopicTag-LS-jX" href="/topics/internal-developer-portal" data-discover="true">internal-developer-portal</a><a class="prc-TopicTag-TopicTag-LS-jX" href="/topics/kubernetes" data-discover="true">kubernetes</a><a class="prc-TopicTag-TopicTag-LS-jX" href="/topics/platform-engineering" data-discover="true">platform-engineering</a><a class="prc-TopicTag-TopicTag-LS-jX" href="/topics/sre" data-discover="true">sre</a></div><h3 class="sr-only prc-Heading-Heading-MtWFE" data-component="Heading"><span>Resources</span></h3><div class="mt-2"><a class="prc-Link-Link-9ZwDx" data-component="Link" data-muted="true" href="#readme-ov-file"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-book mr-2" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path></svg><span>Readme</span></a></div><div class="mt-2"><a class="prc-Link-Link-9ZwDx" data-component="Link" data-muted="true" href="#MIT-1-ov-file"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-law mr-2" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path></svg><span>MIT license</span></a></div><h3 class="sr-only prc-Heading-Heading-MtWFE" data-component="Heading"><span>Contributing</span></h3><div class="mt-2"><a class="prc-Link-Link-9ZwDx" data-component="Link" data-muted="true" href="#contributing-ov-file"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-people mr-2" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path></svg><span>Contributing</span></a></div><div class="mt-2"><a class="prc-Link-Link-9ZwDx" data-component="Link" data-muted="true" href="/seifrajhi/awesome-platform-engineering-tools/activity" data-discover="true"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-pulse mr-2" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z"></path></svg><span>Activity</span></a></div><h3 class="sr-only prc-Heading-Heading-MtWFE" data-component="Heading"><span>Stars</span></h3><div class="mt-2"><span class="SidebarAbout-module__socialStat__nnJPx"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-star mr-2" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path></svg><strong>671</strong> stars</span></div><h3 class="sr-only prc-Heading-Heading-MtWFE" data-component="Heading"><span>Watchers</span></h3><div class="mt-2"><span class="SidebarAbout-module__socialStat__nnJPx"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-eye mr-2" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14c-1.981 0-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2ZM1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5c1.473 0 2.825-.742 3.955-1.715 1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5c-1.473 0-2.825.742-3.955 1.715-1.124.967-1.954 2.096-2.366 2.717ZM8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10Z"></path></svg><strong>6</strong> watching</span></div><h3 class="sr-only prc-Heading-Heading-MtWFE" data-component="Heading"><span>Forks</span></h3><div class="mt-2"><a class="prc-Link-Link-9ZwDx" data-component="Link" data-muted="true" href="/seifrajhi/awesome-platform-engineering-tools/forks" data-discover="true"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-repo-forked mr-2" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path></svg><span><strong>96</strong></span><span> forks</span></a></div><div class="mt-2"><a class="prc-Link-Link-9ZwDx" data-component="Link" data-muted="true" href="/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fseifrajhi%2Fawesome-platform-engineering-tools&report=seifrajhi+%28user%29" data-discover="true"><span>Report repository</span></a></div></div><div class="SidebarSection-module__sidebarSection__e8jFN"><h2 class="SidebarSection-module__sectionHeading__TG36m prc-Heading-Heading-MtWFE" data-variant="small" data-component="Heading"><span>Releases</span></h2><div class="prc-SkeletonText-SkeletonText--DvUT prc-Skeleton-SkeletonBox-e93nW" style="width:100%" data-text-skeleton-size="bodyMedium" data-component="SkeletonText"></div><div class="prc-SkeletonText-SkeletonText--DvUT prc-Skeleton-SkeletonBox-e93nW" style="width:100%" data-text-skeleton-size="bodyMedium" data-component="SkeletonText"></div></div><div class="SidebarSection-module__sidebarSection__e8jFN"><h2 class="SidebarSection-module__sectionHeading__TG36m prc-Heading-Heading-MtWFE" data-variant="small" data-component="Heading"><span>Packages</span></h2><div class="prc-SkeletonText-SkeletonText--DvUT prc-Skeleton-SkeletonBox-e93nW" style="width:100%" data-text-skeleton-size="bodyMedium" data-component="SkeletonText"></div></div><div class="SidebarSection-module__sidebarSection__e8jFN"><h2 class="SidebarSection-module__sectionHeading__TG36m prc-Heading-Heading-MtWFE" data-variant="small" data-component="Heading"><span>Used by</span></h2><div class="prc-SkeletonText-SkeletonText--DvUT prc-Skeleton-SkeletonBox-e93nW" style="width:100%" data-text-skeleton-size="bodyMedium" data-component="SkeletonText"></div></div><div class="SidebarSection-module__sidebarSection__e8jFN"><h2 class="SidebarSection-module__sectionHeading__TG36m prc-Heading-Heading-MtWFE" data-variant="small" data-component="Heading"><span>Contributors</span></h2><div class="prc-SkeletonText-SkeletonText--DvUT prc-Skeleton-SkeletonBox-e93nW" style="width:100%" data-text-skeleton-size="bodyMedium" data-component="SkeletonText"></div></div><div class="SidebarSection-module__sidebarSection__e8jFN"><h2 class="SidebarSection-module__sectionHeading__TG36m prc-Heading-Heading-MtWFE" data-variant="small" data-component="Heading"><span>Languages</span></h2><div class="prc-SkeletonText-SkeletonText--DvUT prc-Skeleton-SkeletonBox-e93nW" style="width:100%" data-text-skeleton-size="bodyMedium" data-component="SkeletonText"></div></div></div><!--/&--></div><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-PaneVerticalDivider-le57g" data-component="PageLayout.VerticalDivider" data-variant-narrow="none" data-variant-regular="none" data-position="end" style="--spacing:var(--spacing-none)"></div></div></div></div></div></div></div></div></div></div></div><div class="ScrollMarksContainer-module__scrollMarksContainer__Eu7uU" id="find-result-marks-container"></div><div class="d-none"></div><div class="d-none"></div></div> <!-- --> <!-- --> </div>
|
||
</react-app>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
</turbo-frame>
|
||
|
||
</main>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<footer class="footer f6 color-fg-muted color-border-subtle tmp-pt-7 tmp-pb-6 p-responsive" role="contentinfo" >
|
||
<h2 class='sr-only'>Footer</h2>
|
||
|
||
|
||
|
||
|
||
<div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap">
|
||
<div class="d-flex flex-items-center flex-shrink-0 mx-2">
|
||
<a aria-label="GitHub Homepage" class="footer-octicon mr-2" href="https://github.com">
|
||
<svg aria-hidden="true" data-component="Octicon" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
|
||
<path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path>
|
||
</svg>
|
||
</a>
|
||
<span>
|
||
© 2026 GitHub, Inc.
|
||
</span>
|
||
</div>
|
||
|
||
<nav aria-label="Footer">
|
||
<h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3>
|
||
|
||
<ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading">
|
||
|
||
|
||
<li class="mx-2">
|
||
<a data-analytics-event="{"category":"Footer","action":"go to Terms","label":"text:terms"}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a>
|
||
</li>
|
||
|
||
<li class="mx-2">
|
||
<a data-analytics-event="{"category":"Footer","action":"go to privacy","label":"text:privacy"}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a>
|
||
</li>
|
||
|
||
|
||
<li class="mx-2">
|
||
<a data-analytics-event="{"category":"Footer","action":"go to security","label":"text:security"}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a>
|
||
</li>
|
||
|
||
<li class="mx-2">
|
||
<a data-analytics-event="{"category":"Footer","action":"go to status","label":"text:status"}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a>
|
||
</li>
|
||
|
||
<li class="mx-2">
|
||
<a data-analytics-event="{"category":"Footer","action":"go to community","label":"text:community"}" href="https://github.community/" data-view-component="true" class="Link--secondary Link">Community</a>
|
||
</li>
|
||
|
||
<li class="mx-2">
|
||
<a data-analytics-event="{"category":"Footer","action":"go to docs","label":"text:docs"}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a>
|
||
</li>
|
||
|
||
<li class="mx-2">
|
||
<a data-analytics-event="{"category":"Footer","action":"go to contact","label":"text:contact"}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a>
|
||
</li>
|
||
|
||
|
||
<li class="mx-2" >
|
||
<cookie-consent-link>
|
||
<button
|
||
type="button"
|
||
class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
|
||
data-action="click:cookie-consent-link#showConsentManagement"
|
||
data-analytics-event="{"location":"footer","action":"cookies","context":"subfooter","tag":"link","label":"cookies_link_subfooter_footer"}"
|
||
>
|
||
Manage cookies
|
||
</button>
|
||
</cookie-consent-link>
|
||
</li>
|
||
|
||
<li class="mx-2">
|
||
<cookie-consent-link>
|
||
<button
|
||
type="button"
|
||
class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent text-left"
|
||
data-action="click:cookie-consent-link#showConsentManagement"
|
||
data-analytics-event="{"location":"footer","action":"dont_share_info","context":"subfooter","tag":"link","label":"dont_share_info_link_subfooter_footer"}"
|
||
>
|
||
Do not share my personal information
|
||
</button>
|
||
</cookie-consent-link>
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
|
||
<ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
|
||
data-locale="en"
|
||
data-initial-cookie-consent-allowed=""
|
||
data-cookie-consent-required="false"
|
||
></ghcc-consent>
|
||
|
||
|
||
|
||
|
||
<div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
|
||
<path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
|
||
</svg>
|
||
<button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
|
||
<path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
|
||
</svg>
|
||
</button>
|
||
You can’t perform that action at this time.
|
||
</div>
|
||
|
||
<template id="site-details-dialog">
|
||
<details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
|
||
<summary role="button" aria-label="Close dialog"></summary>
|
||
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
|
||
<button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
|
||
<path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
|
||
</svg>
|
||
</button>
|
||
<div class="octocat-spinner tmp-my-6 js-details-dialog-spinner"></div>
|
||
</details-dialog>
|
||
</details>
|
||
</template>
|
||
|
||
<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
|
||
<div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
|
||
</div>
|
||
</div>
|
||
|
||
<template id="snippet-clipboard-copy-button">
|
||
<div class="zeroclipboard-container position-absolute right-0 top-0">
|
||
<clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2 tmp-m-2">
|
||
<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
|
||
</svg>
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2 tmp-m-2">
|
||
<path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
|
||
</svg>
|
||
</clipboard-copy>
|
||
</div>
|
||
</template>
|
||
<template id="snippet-clipboard-copy-button-unpositioned">
|
||
<div class="zeroclipboard-container">
|
||
<clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w">
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
|
||
<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
|
||
</svg>
|
||
<svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none">
|
||
<path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
|
||
</svg>
|
||
</clipboard-copy>
|
||
</div>
|
||
</template>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div>
|
||
<div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div>
|
||
</body>
|
||
</html>
|
||
|