[{"data":1,"prerenderedAt":927},["ShallowReactive",2],{"/blog/friends-dont-let-friends-add-options-to-code":3,"navigation-en-us":139,"banner-en-us":567,"footer-en-us":577,"blog-post-authors-en-us-Suri Patel":822,"blog-related-posts-en-us-friends-dont-let-friends-add-options-to-code":837,"blog-promotions-en-us":863,"next-steps-en-us":917},{"id":4,"title":5,"authors":6,"body":8,"category":117,"date":118,"description":119,"extension":120,"externalUrl":121,"faq":121,"featured":122,"heroImage":123,"meta":124,"navigation":125,"path":126,"seo":127,"slug":131,"stem":132,"tags":133,"template":137,"updatedDate":121,"__hash__":138},"blogPosts/en-us/blog/friends-dont-let-friends-add-options-to-code.md","Friends don't let friends add options to code",[7],"Suri Patel",{"type":9,"value":10,"toc":105},"minimark",[11,20,32,40,45,48,52,55,59,66,70,79,82,91],[12,13,14,15,19],"p",{},"Sometimes, when trying to make it easier to work in an application, our instinct is to add\noptional features that users can enable if their situations require a specific functionality.\nOur intentions may be good, but these actions can actually cause ",[16,17,18],"em",{},"more"," problems, since we invite users\nto second-guess their choices by adding extra steps into the user experience.",[21,22,24,25,31],"h2",{"id":23},"the-disadvantages-of-a-choose-your-own-adventure-model","The disadvantages of a ",[26,27,30],"a",{"href":28,"rel":29},"https://en.wikipedia.org/wiki/Choose_Your_Own_Adventure",[],"choose your own adventure"," model",[12,33,34,35,39],{},"One of the most celebrated aspects of ",[26,36,38],{"href":37},"/solutions/open-source/","open source","\nis the freedom that allows developers to brighten a user’s day by adding an\noptional feature that may not be for everyone, but allows a small portion of users\nto engage with a project in a specific way. While it may seem like a great idea\nto cater to individual needs, there are several disadvantages to making something\nan option.",[41,42,44],"h3",{"id":43},"it-creates-more-work-for-developers","It creates more work for developers",[12,46,47],{},"Creating extra options means more work for both frontend and backend teams.\nThese features add additional code, tests, and documentation for each setting,\nand the various states alter the UI. Adding options hurts you in every step of\nthe development process.",[41,49,51],{"id":50},"it-places-a-burden-on-the-user-to-choose","It places a burden on the user to choose",[12,53,54],{},"When we solve problems by including options, we force a user to think about the\nfunction and consider its purpose and drawbacks, placing a burden on them to\ncontrol how they use an application. A user hesitates and has to make a decision\nabout whether this is something that should be enabled. After all, if an option\nsignificantly enhanced the user experience, then wouldn’t it have been automatically\nintegrated?",[41,56,58],{"id":57},"it-makes-future-functionality-more-difficult-to-implement","It makes future functionality more difficult to implement",[12,60,61,62,65],{},"There's also the long-term impact of additional options. Just one extra option can lead to one of two\npaths, which might influence other parts of an application. So, every\ntime we add an option, the number of states of the application doubles. That's\nexponential growth and it adds up quickly, making it harder to diagnose errors. Multiple\noptions can lead to the creation of states of which we’re unaware, so\nit’s harder for the user to understand how an application should behave, because\nthey don't know whether errors are due to an option or not. And, if it is an\noption causing the error, ",[16,63,64],{},"which"," option is the problem?",[21,67,69],{"id":68},"how-we-avoid-adding-options-bask-in-the-glow-of-iteration","How we avoid adding options: Bask in the glow of iteration",[12,71,72,73,78],{},"So, how do you know if a feature should be optional or not? At GitLab, we ship\nthe first ",[26,74,77],{"href":75,"rel":76},"https://handbook.gitlab.com/handbook/values/#iteration",[],"iteration"," and keep delivering based on\nuser feedback. Some of the features that we anticipated may never roll out,\nbecause users didn’t request them. Iteration allows us to reduce the scope of\ndevelopment and avoid including features that aren’t popular or useable.",[12,80,81],{},"Whenever users need something new, try to create a solution that's acceptable\nfor the most number of people. Rely on your development and operations teams to\nprovide feedback and ask them to relate to the end user. Conducting\nUX research with your users\nalso helps identify pain points and needs.",[12,83,84,85,90],{},"Teams are continually constrained by development capacity, and adding options to\napplications can absorb previous time and effort. We suggest shipping your\napplication without an option and waiting to see whether people request it or\nmake a\n",[26,86,89],{"href":87,"rel":88},"https://gitlab.com/gitlab-org/gitlab-ce/issues?label_name%5B%5D=feature+proposal",[],"feature proposal","\nfor it. In the end, our role is to solve users’ problems, and our goal is to\nidentify the underlying cause of a challenge and fix it in a way that doesn't\nneed an option.",[12,92,93,98,99,104],{},[26,94,97],{"href":95,"rel":96},"https://unsplash.com/photos/pKeF6Tt3c08",[],"Cover image"," by ",[26,100,103],{"href":101,"rel":102},"https://unsplash.com/@bdchu614",[],"Brendan Church"," on Unsplash",{"title":106,"searchDepth":107,"depth":107,"links":108},"",2,[109,116],{"id":23,"depth":107,"text":110,"children":111},"The disadvantages of a choose your own adventure model",[112,114,115],{"id":43,"depth":113,"text":44},3,{"id":50,"depth":113,"text":51},{"id":57,"depth":113,"text":58},{"id":68,"depth":107,"text":69},"engineering","2018-12-10","Creating optional features burdens users and applications – here's how we avoid adding options.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678953/Blog/Hero%20Images/options.jpg",{},true,"/en-us/blog/friends-dont-let-friends-add-options-to-code",{"title":5,"description":119,"ogTitle":5,"ogDescription":119,"noIndex":122,"ogImage":123,"ogUrl":128,"ogSiteName":129,"ogType":130,"canonicalUrls":128},"https://about.gitlab.com/blog/friends-dont-let-friends-add-options-to-code","https://about.gitlab.com","article","friends-dont-let-friends-add-options-to-code","en-us/blog/friends-dont-let-friends-add-options-to-code",[134,135,38,136],"inside GitLab","UX","workflow","BlogPost","Pby51nmt0b3QEAGY7JSSRcyReHNsAWoVzfCSLXdsbfQ",{"logo":140,"freeTrial":145,"sales":150,"login":155,"items":160,"search":487,"minimal":518,"duo":537,"switchNav":546,"pricingDeployment":557},{"config":141},{"href":142,"dataGaName":143,"dataGaLocation":144},"/","gitlab logo","header",{"text":146,"config":147},"Get free trial",{"href":148,"dataGaName":149,"dataGaLocation":144},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":151,"config":152},"Request a demo",{"href":153,"dataGaName":154,"dataGaLocation":144},"/sales/?contact-topic=request-demo","sales",{"text":156,"config":157},"Sign in",{"href":158,"dataGaName":159,"dataGaLocation":144},"https://gitlab.com/users/sign_in/","sign in",[161,190,290,295,409,465],{"text":162,"config":163,"menu":165},"Platform",{"dataNavLevelOne":164},"platform",{"type":166,"columns":167},"cards",[168,174,182],{"title":162,"description":169,"link":170},"The intelligent orchestration platform for DevSecOps",{"text":171,"config":172},"Explore our Platform",{"href":173,"dataGaName":164,"dataGaLocation":144},"/platform/",{"title":175,"description":176,"link":177},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":178,"config":179},"Meet GitLab Duo",{"href":180,"dataGaName":181,"dataGaLocation":144},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":183,"description":184,"link":185},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":186,"config":187},"Learn more",{"href":188,"dataGaName":189,"dataGaLocation":144},"/why-gitlab/","why gitlab",{"text":191,"left":125,"config":192,"menu":194},"Product",{"dataNavLevelOne":193},"solutions",{"type":195,"link":196,"columns":200,"feature":269},"lists",{"text":197,"config":198},"View all Solutions",{"href":199,"dataGaName":193,"dataGaLocation":144},"/solutions/",[201,225,248],{"title":202,"description":203,"link":204,"items":209},"Automation","CI/CD and automation to accelerate deployment",{"config":205},{"icon":206,"href":207,"dataGaName":208,"dataGaLocation":144},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[210,214,217,221],{"text":211,"config":212},"CI/CD",{"href":213,"dataGaLocation":144,"dataGaName":211},"/solutions/continuous-integration/",{"text":175,"config":215},{"href":180,"dataGaLocation":144,"dataGaName":216},"gitlab duo agent platform - product menu",{"text":218,"config":219},"Source Code Management",{"href":220,"dataGaLocation":144,"dataGaName":218},"/solutions/source-code-management/",{"text":222,"config":223},"Automated Software Delivery",{"href":207,"dataGaLocation":144,"dataGaName":224},"Automated software delivery",{"title":226,"description":227,"link":228,"items":233},"Security","Deliver code faster without compromising security",{"config":229},{"href":230,"dataGaName":231,"dataGaLocation":144,"icon":232},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[234,238,243],{"text":235,"config":236},"Application Security Testing",{"href":230,"dataGaName":237,"dataGaLocation":144},"Application security testing",{"text":239,"config":240},"Software Supply Chain Security",{"href":241,"dataGaLocation":144,"dataGaName":242},"/solutions/supply-chain/","Software supply chain security",{"text":244,"config":245},"Software Compliance",{"href":246,"dataGaName":247,"dataGaLocation":144},"/solutions/software-compliance/","software compliance",{"title":249,"link":250,"items":255},"Measurement",{"config":251},{"icon":252,"href":253,"dataGaName":254,"dataGaLocation":144},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[256,260,264],{"text":257,"config":258},"Visibility & Measurement",{"href":253,"dataGaLocation":144,"dataGaName":259},"Visibility and Measurement",{"text":261,"config":262},"Value Stream Management",{"href":263,"dataGaLocation":144,"dataGaName":261},"/solutions/value-stream-management/",{"text":265,"config":266},"Analytics & Insights",{"href":267,"dataGaLocation":144,"dataGaName":268},"/solutions/analytics-and-insights/","Analytics and insights",{"title":270,"type":195,"items":271},"GitLab for",[272,278,284],{"text":273,"config":274},"Enterprise",{"icon":275,"href":276,"dataGaLocation":144,"dataGaName":277},"Building","/enterprise/","enterprise",{"text":279,"config":280},"Small Business",{"icon":281,"href":282,"dataGaLocation":144,"dataGaName":283},"Work","/small-business/","small business",{"text":285,"config":286},"Public Sector",{"icon":287,"href":288,"dataGaLocation":144,"dataGaName":289},"Organization","/solutions/public-sector/","public sector",{"text":291,"config":292},"Pricing",{"href":293,"dataGaName":294,"dataGaLocation":144,"dataNavLevelOne":294},"/pricing/","pricing",{"text":296,"config":297,"menu":299},"Resources",{"dataNavLevelOne":298},"resources",{"type":195,"link":300,"columns":304,"feature":398},{"text":301,"config":302},"View all resources",{"href":303,"dataGaName":298,"dataGaLocation":144},"/resources/",[305,338,365],{"title":306,"items":307},"Getting started",[308,313,318,323,328,333],{"text":309,"config":310},"Install",{"href":311,"dataGaName":312,"dataGaLocation":144},"/install/","install",{"text":314,"config":315},"Quick start guides",{"href":316,"dataGaName":317,"dataGaLocation":144},"/get-started/","quick setup checklists",{"text":319,"config":320},"Learn",{"href":321,"dataGaLocation":144,"dataGaName":322},"https://university.gitlab.com/","learn",{"text":324,"config":325},"Product documentation",{"href":326,"dataGaName":327,"dataGaLocation":144},"https://docs.gitlab.com/","product documentation",{"text":329,"config":330},"Best practice videos",{"href":331,"dataGaName":332,"dataGaLocation":144},"/getting-started-videos/","best practice videos",{"text":334,"config":335},"Integrations",{"href":336,"dataGaName":337,"dataGaLocation":144},"/integrations/","integrations",{"title":339,"items":340},"Discover",[341,346,351,356,360],{"text":342,"config":343},"Customer success stories",{"href":344,"dataGaName":345,"dataGaLocation":144},"/customers/","customer success stories",{"text":347,"config":348},"Blog",{"href":349,"dataGaName":350,"dataGaLocation":144},"/blog/","blog",{"text":352,"config":353},"Demo Hub",{"href":354,"dataGaName":355,"dataGaLocation":144},"/demo-hub/","demo hub",{"text":357,"config":358},"The Source",{"href":359,"dataGaName":350,"dataGaLocation":144},"/the-source/",{"text":361,"config":362},"Remote",{"href":363,"dataGaName":364,"dataGaLocation":144},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":366,"items":367},"Connect",[368,373,378,383,388,393],{"text":369,"config":370},"GitLab Services",{"href":371,"dataGaName":372,"dataGaLocation":144},"/services/","services",{"text":374,"config":375},"Contribute",{"href":376,"dataGaName":377,"dataGaLocation":144},"https://contributors.gitlab.com","contribute",{"text":379,"config":380},"Community",{"href":381,"dataGaName":382,"dataGaLocation":144},"/community/","community",{"text":384,"config":385},"Forum",{"href":386,"dataGaName":387,"dataGaLocation":144},"https://forum.gitlab.com/","forum",{"text":389,"config":390},"Events",{"href":391,"dataGaName":392,"dataGaLocation":144},"/events/","events",{"text":394,"config":395},"Partners",{"href":396,"dataGaName":397,"dataGaLocation":144},"/partners/","partners",{"config":399,"title":402,"text":403,"link":404},{"background":400,"textColor":401},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":405,"config":406},"Read the latest",{"href":407,"dataGaName":408,"dataGaLocation":144},"/whats-new/","whats new",{"text":410,"config":411,"menu":413},"Company",{"dataNavLevelOne":412},"company",{"type":195,"columns":414},[415],{"items":416},[417,422,428,430,435,440,445,450,455,460],{"text":418,"config":419},"About",{"href":420,"dataGaName":421,"dataGaLocation":144},"/company/","about",{"text":423,"config":424,"footerGa":427},"Jobs",{"href":425,"dataGaName":426,"dataGaLocation":144},"/jobs/","jobs",{"dataGaName":426},{"text":389,"config":429},{"href":391,"dataGaName":392,"dataGaLocation":144},{"text":431,"config":432},"Leadership",{"href":433,"dataGaName":434,"dataGaLocation":144},"/company/team/e-group/","leadership",{"text":436,"config":437},"Handbook",{"href":438,"dataGaName":439,"dataGaLocation":144},"https://handbook.gitlab.com/","handbook",{"text":441,"config":442},"Investor relations",{"href":443,"dataGaName":444,"dataGaLocation":144},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":446,"config":447},"Trust Center",{"href":448,"dataGaName":449,"dataGaLocation":144},"/security/","trust center",{"text":451,"config":452},"AI Transparency Center",{"href":453,"dataGaName":454,"dataGaLocation":144},"/ai-transparency-center/","ai transparency center",{"text":456,"config":457},"Newsletter",{"href":458,"dataGaName":459,"dataGaLocation":144},"/company/contact/#contact-forms","newsletter",{"text":461,"config":462},"Press",{"href":463,"dataGaName":464,"dataGaLocation":144},"/press/","press",{"text":466,"config":467,"menu":468},"Contact us",{"dataNavLevelOne":412},{"type":195,"columns":469},[470],{"items":471},[472,477,482],{"text":473,"config":474},"Talk to sales",{"href":475,"dataGaName":476,"dataGaLocation":144},"/sales/","talk to sales",{"text":478,"config":479},"Support portal",{"href":480,"dataGaName":481,"dataGaLocation":144},"https://support.gitlab.com/hc/en-us","support portal",{"text":483,"config":484},"Customer portal",{"href":485,"dataGaName":486,"dataGaLocation":144},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":488,"login":489,"suggestions":496},"Close",{"text":490,"link":491},"To search repositories and projects, login to",{"text":492,"config":493},"gitlab.com",{"href":158,"dataGaName":494,"dataGaLocation":495},"search login","search",{"text":497,"default":498},"Suggestions",[499,501,505,507,511,515],{"text":175,"config":500},{"href":180,"dataGaName":175,"dataGaLocation":495},{"text":502,"config":503},"Code Suggestions (AI)",{"href":504,"dataGaName":502,"dataGaLocation":495},"/solutions/code-suggestions/",{"text":211,"config":506},{"href":213,"dataGaName":211,"dataGaLocation":495},{"text":508,"config":509},"GitLab on AWS",{"href":510,"dataGaName":508,"dataGaLocation":495},"/partners/technology-partners/aws/",{"text":512,"config":513},"GitLab on Google Cloud",{"href":514,"dataGaName":512,"dataGaLocation":495},"/partners/technology-partners/google-cloud-platform/",{"text":516,"config":517},"Why GitLab?",{"href":188,"dataGaName":516,"dataGaLocation":495},{"freeTrial":519,"mobileIcon":524,"desktopIcon":529,"secondaryButton":532},{"text":520,"config":521},"Start free trial",{"href":522,"dataGaName":149,"dataGaLocation":523},"https://gitlab.com/-/trials/new/","nav",{"altText":525,"config":526},"Gitlab Icon",{"src":527,"dataGaName":528,"dataGaLocation":523},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":525,"config":530},{"src":531,"dataGaName":528,"dataGaLocation":523},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":533,"config":534},"Get Started",{"href":535,"dataGaName":536,"dataGaLocation":523},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":538,"mobileIcon":542,"desktopIcon":544},{"text":539,"config":540},"Learn more about GitLab Duo",{"href":180,"dataGaName":541,"dataGaLocation":523},"gitlab duo",{"altText":525,"config":543},{"src":527,"dataGaName":528,"dataGaLocation":523},{"altText":525,"config":545},{"src":531,"dataGaName":528,"dataGaLocation":523},{"button":547,"mobileIcon":552,"desktopIcon":554},{"text":548,"config":549},"/switch",{"href":550,"dataGaName":551,"dataGaLocation":523},"#contact","switch",{"altText":525,"config":553},{"src":527,"dataGaName":528,"dataGaLocation":523},{"altText":525,"config":555},{"src":556,"dataGaName":528,"dataGaLocation":523},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":558,"mobileIcon":563,"desktopIcon":565},{"text":559,"config":560},"Back to pricing",{"href":293,"dataGaName":561,"dataGaLocation":523,"icon":562},"back to pricing","GoBack",{"altText":525,"config":564},{"src":527,"dataGaName":528,"dataGaLocation":523},{"altText":525,"config":566},{"src":531,"dataGaName":528,"dataGaLocation":523},{"title":568,"titleMobile":569,"button":570,"config":575},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":186,"config":571},{"href":572,"dataGaName":573,"dataGaLocation":574},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":576,"disabled":122},"release",{"data":578},{"text":579,"source":580,"edit":586,"contribute":591,"config":596,"items":601,"minimal":811},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":581,"config":582},"View page source",{"href":583,"dataGaName":584,"dataGaLocation":585},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":587,"config":588},"Edit this page",{"href":589,"dataGaName":590,"dataGaLocation":585},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":592,"config":593},"Please contribute",{"href":594,"dataGaName":595,"dataGaLocation":585},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":597,"facebook":598,"youtube":599,"linkedin":600},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[602,649,703,747,779],{"title":291,"links":603,"subMenu":618},[604,608,613],{"text":605,"config":606},"View plans",{"href":293,"dataGaName":607,"dataGaLocation":585},"view plans",{"text":609,"config":610},"Why Premium?",{"href":611,"dataGaName":612,"dataGaLocation":585},"/pricing/premium/","why premium",{"text":614,"config":615},"Why Ultimate?",{"href":616,"dataGaName":617,"dataGaLocation":585},"/pricing/ultimate/","why ultimate",[619],{"title":620,"links":621},"Contact Us",[622,625,627,629,634,639,644],{"text":623,"config":624},"Contact sales",{"href":475,"dataGaName":154,"dataGaLocation":585},{"text":478,"config":626},{"href":480,"dataGaName":481,"dataGaLocation":585},{"text":483,"config":628},{"href":485,"dataGaName":486,"dataGaLocation":585},{"text":630,"config":631},"Status",{"href":632,"dataGaName":633,"dataGaLocation":585},"https://status.gitlab.com/","status",{"text":635,"config":636},"Terms of use",{"href":637,"dataGaName":638,"dataGaLocation":585},"/terms/","terms of use",{"text":640,"config":641},"Privacy statement",{"href":642,"dataGaName":643,"dataGaLocation":585},"/privacy/","privacy statement",{"text":645,"config":646},"Cookie preferences",{"dataGaName":647,"dataGaLocation":585,"id":648,"isOneTrustButton":125},"cookie preferences","ot-sdk-btn",{"title":191,"links":650,"subMenu":659},[651,655],{"text":652,"config":653},"DevSecOps platform",{"href":173,"dataGaName":654,"dataGaLocation":585},"devsecops platform",{"text":656,"config":657},"AI-Assisted Development",{"href":180,"dataGaName":658,"dataGaLocation":585},"ai-assisted development",[660],{"title":661,"links":662},"Topics",[663,668,673,678,683,688,693,698],{"text":664,"config":665},"CICD",{"href":666,"dataGaName":667,"dataGaLocation":585},"/topics/ci-cd/","cicd",{"text":669,"config":670},"GitOps",{"href":671,"dataGaName":672,"dataGaLocation":585},"/topics/gitops/","gitops",{"text":674,"config":675},"DevOps",{"href":676,"dataGaName":677,"dataGaLocation":585},"/topics/devops/","devops",{"text":679,"config":680},"Version Control",{"href":681,"dataGaName":682,"dataGaLocation":585},"/topics/version-control/","version control",{"text":684,"config":685},"DevSecOps",{"href":686,"dataGaName":687,"dataGaLocation":585},"/topics/devsecops/","devsecops",{"text":689,"config":690},"Cloud Native",{"href":691,"dataGaName":692,"dataGaLocation":585},"/topics/cloud-native/","cloud native",{"text":694,"config":695},"AI for Coding",{"href":696,"dataGaName":697,"dataGaLocation":585},"/topics/devops/ai-for-coding/","ai for coding",{"text":699,"config":700},"Agentic AI",{"href":701,"dataGaName":702,"dataGaLocation":585},"/topics/agentic-ai/","agentic ai",{"title":704,"links":705},"Solutions",[706,708,710,715,719,722,726,729,731,734,737,742],{"text":235,"config":707},{"href":230,"dataGaName":235,"dataGaLocation":585},{"text":224,"config":709},{"href":207,"dataGaName":208,"dataGaLocation":585},{"text":711,"config":712},"Agile development",{"href":713,"dataGaName":714,"dataGaLocation":585},"/solutions/agile-delivery/","agile delivery",{"text":716,"config":717},"SCM",{"href":220,"dataGaName":718,"dataGaLocation":585},"source code management",{"text":664,"config":720},{"href":213,"dataGaName":721,"dataGaLocation":585},"continuous integration & delivery",{"text":723,"config":724},"Value stream management",{"href":263,"dataGaName":725,"dataGaLocation":585},"value stream management",{"text":669,"config":727},{"href":728,"dataGaName":672,"dataGaLocation":585},"/solutions/gitops/",{"text":273,"config":730},{"href":276,"dataGaName":277,"dataGaLocation":585},{"text":732,"config":733},"Small business",{"href":282,"dataGaName":283,"dataGaLocation":585},{"text":735,"config":736},"Public sector",{"href":288,"dataGaName":289,"dataGaLocation":585},{"text":738,"config":739},"Education",{"href":740,"dataGaName":741,"dataGaLocation":585},"/solutions/education/","education",{"text":743,"config":744},"Financial services",{"href":745,"dataGaName":746,"dataGaLocation":585},"/solutions/finance/","financial services",{"title":296,"links":748},[749,751,753,755,758,760,763,765,767,769,771,773,775,777],{"text":309,"config":750},{"href":311,"dataGaName":312,"dataGaLocation":585},{"text":314,"config":752},{"href":316,"dataGaName":317,"dataGaLocation":585},{"text":319,"config":754},{"href":321,"dataGaName":322,"dataGaLocation":585},{"text":324,"config":756},{"href":326,"dataGaName":757,"dataGaLocation":585},"docs",{"text":347,"config":759},{"href":349,"dataGaName":350,"dataGaLocation":585},{"text":761,"config":762},"What's new",{"href":407,"dataGaName":408,"dataGaLocation":585},{"text":342,"config":764},{"href":344,"dataGaName":345,"dataGaLocation":585},{"text":361,"config":766},{"href":363,"dataGaName":364,"dataGaLocation":585},{"text":369,"config":768},{"href":371,"dataGaName":372,"dataGaLocation":585},{"text":374,"config":770},{"href":376,"dataGaName":377,"dataGaLocation":585},{"text":379,"config":772},{"href":381,"dataGaName":382,"dataGaLocation":585},{"text":384,"config":774},{"href":386,"dataGaName":387,"dataGaLocation":585},{"text":389,"config":776},{"href":391,"dataGaName":392,"dataGaLocation":585},{"text":394,"config":778},{"href":396,"dataGaName":397,"dataGaLocation":585},{"title":410,"links":780},[781,783,785,787,789,791,795,800,802,804,806],{"text":418,"config":782},{"href":420,"dataGaName":412,"dataGaLocation":585},{"text":423,"config":784},{"href":425,"dataGaName":426,"dataGaLocation":585},{"text":431,"config":786},{"href":433,"dataGaName":434,"dataGaLocation":585},{"text":436,"config":788},{"href":438,"dataGaName":439,"dataGaLocation":585},{"text":441,"config":790},{"href":443,"dataGaName":444,"dataGaLocation":585},{"text":792,"config":793},"Sustainability",{"href":794,"dataGaName":792,"dataGaLocation":585},"/sustainability/",{"text":796,"config":797},"Diversity, inclusion and belonging (DIB)",{"href":798,"dataGaName":799,"dataGaLocation":585},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":446,"config":801},{"href":448,"dataGaName":449,"dataGaLocation":585},{"text":456,"config":803},{"href":458,"dataGaName":459,"dataGaLocation":585},{"text":461,"config":805},{"href":463,"dataGaName":464,"dataGaLocation":585},{"text":807,"config":808},"Modern Slavery Transparency Statement",{"href":809,"dataGaName":810,"dataGaLocation":585},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":812},[813,816,819],{"text":814,"config":815},"Terms",{"href":637,"dataGaName":638,"dataGaLocation":585},{"text":817,"config":818},"Cookies",{"dataGaName":647,"dataGaLocation":585,"id":648,"isOneTrustButton":125},{"text":820,"config":821},"Privacy",{"href":642,"dataGaName":643,"dataGaLocation":585},[823],{"id":824,"title":7,"body":121,"config":825,"content":827,"description":121,"extension":831,"meta":832,"navigation":125,"path":833,"seo":834,"stem":835,"__hash__":836},"blogAuthors/en-us/blog/authors/suri-patel.yml",{"template":826},"BlogAuthor",{"name":7,"config":828},{"headshot":829,"ctfId":830},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","suripatel","yml",{},"/en-us/blog/authors/suri-patel",{},"en-us/blog/authors/suri-patel","6uYSrzx-VYqO5jfherOjew8qtD9VYm7TE1H5W0GKC4I",[838,847,855],{"title":839,"description":840,"heroImage":841,"category":117,"date":842,"authors":843,"slug":846,"externalUrl":121},"Confidential AI for GitLab Self-Hosted","Give developers AI coding agents in GitLab Duo without source code leaving a hardware-encrypted boundary — no GPUs needed.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773866173/vte9qh8rriznvyclhkes.png","2026-08-06",[844,845],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":848,"description":849,"heroImage":850,"category":117,"date":851,"authors":852,"slug":854,"externalUrl":121},"Green DevOps: Why carbon measurement belongs in your CI/CD pipeline","CI/CD pipelines have a hidden carbon cost. Here's why measuring it matters, and how you can get started with Eco CI and Carmen in GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-07-09",[853],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":856,"description":857,"heroImage":858,"category":117,"date":859,"authors":860,"slug":862,"externalUrl":121},"How to build CI/CD observability at scale","This practical guide to GitLab pipeline analytics helps self-managed users gain operational insights using Prometheus and Grafana.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-04-28",[861],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":864},[865,879,891,903],{"id":866,"categories":867,"header":869,"text":870,"button":871,"image":876},"ai-modernization",[868],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":872,"config":873},"Get your AI maturity score",{"href":874,"dataGaName":875,"dataGaLocation":350},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":877},{"src":878},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":880,"categories":881,"header":883,"text":870,"button":884,"image":888},"devops-modernization",[882,687],"product","Are you just managing tools or shipping innovation?",{"text":885,"config":886},"Get your DevOps maturity score",{"href":887,"dataGaName":875,"dataGaLocation":350},"/assessments/devops-modernization-assessment/",{"config":889},{"src":890},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":892,"categories":893,"header":895,"text":870,"button":896,"image":900},"security-modernization",[894],"security","Are you trading speed for security?",{"text":897,"config":898},"Get your security maturity score",{"href":899,"dataGaName":875,"dataGaLocation":350},"/assessments/security-modernization-assessment/",{"config":901},{"src":902},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":904,"paths":905,"header":908,"text":909,"button":910,"image":915},"github-azure-migration",[906,907],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":911,"config":912},"See how GitLab compares to GitHub",{"href":913,"dataGaName":914,"dataGaLocation":350},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":916},{"src":890},{"header":918,"blurb":919,"button":920,"secondaryButton":925},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":921,"config":922},"Get your free trial",{"href":923,"dataGaName":149,"dataGaLocation":924},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":623,"config":926},{"href":475,"dataGaName":154,"dataGaLocation":924},1786803747219]