[{"data":1,"prerenderedAt":986},["ShallowReactive",2],{"/blog/iterating-on-sso":3,"navigation-en-us":203,"banner-en-us":630,"footer-en-us":640,"blog-post-authors-en-us-Eric Brinkman":885,"blog-related-posts-en-us-iterating-on-sso":899,"blog-promotions-en-us":923,"next-steps-en-us":976},{"id":4,"title":5,"authors":6,"body":8,"category":181,"date":182,"description":183,"extension":184,"externalUrl":185,"faq":185,"featured":186,"heroImage":187,"meta":188,"navigation":189,"path":190,"seo":191,"slug":195,"stem":196,"tags":197,"template":201,"updatedDate":185,"__hash__":202},"blogPosts/en-us/blog/iterating-on-sso.md","How we are iterating on Group Single Sign On for GitLab.com",[7],"Eric Brinkman",{"type":9,"value":10,"toc":170},"minimark",[11,28,31,40,55,58,63,66,70,73,77,91,95,115,119,134,138,147,156],[12,13,14,15,21,22,27],"p",{},"At GitLab, we do things a little differently. We believe in shipping what we call the MVC, or minimum viable change, rather than waiting for something to be perfect. We’d rather our customers get their hands on a portion of the feature to ensure we are on the right track and that our next iteration is spot on, than wait several months to ship a full feature that may not be exactly what customers desire. In fact, ",[16,17,20],"a",{"href":18,"rel":19},"https://handbook.gitlab.com/handbook/values/#iteration",[],"iteration is one of our six core values"," at GitLab, and it’s something that drives our day-to-day decision making. In this blog post, we’ll take a look at how a recent enterprise authentication feature challenged our organization with respect to prioritization, core values, and ",[16,23,26],{"href":24,"rel":25},"https://handbook.gitlab.com/handbook/values/#transparency",[],"transparency"," with customers. We’ll also discuss our vision for GitLab.com, and the associated challenges we’ve come across while ensuring it’s a solution that works seamlessly for enterprise adoption of GitLab.",[12,29,30],{},"Single Sign On, or SSO, has been at the forefront of most enterprises’ digital transformation requirements for quite some time. Enterprise organizations require access to software to be controlled by their Identity Provider of choice as there are hundreds, if not thousands, of users. Manually provisioning users and revoking access across multiple systems when employees leave is not scalable and is error prone in organizations of any size.",[12,32,33,34,39],{},"We’ve long had ",[16,35,38],{"href":36,"rel":37},"https://docs.gitlab.com/administration/auth/",[],"support for SAML, LDAP, and OAuth configuration"," for self-managed GitLab, which assumes our customers have admin access at the instance level. While this works great for individual instances, a different approach is needed for GitLab.com, which is a giant, multi-tenant version of a single instance, primarily segregated at the group level for enterprises.",[12,41,42,43,48,49,54],{},"In ",[16,44,47],{"href":45,"rel":46},"https://docs.gitlab.com/releases/#saml-single-sign-on-for-groups-beta",[],"GitLab 11.0",", shipped in June 2018, we launched the ",[16,50,53],{"href":51,"rel":52},"https://gitlab.com/groups/gitlab-org/-/epics/40",[],"MVC to take the first step in SAML-based SSO on GitLab.com",". When we launched this functionality, we knew it wasn’t going to solve 100 percent of enterprise authentication needs, but rather than keeping this functionality private until we had other SSO features (such as automated provisioning of users and revocation of permissions), we decided to launch it to get as much feedback as possible, and to ensure our product velocity stays at the high levels we’ve come to expect.",[12,56,57],{},"Here are some of the factors at play and how we're moving forward:",[59,60,62],"h3",{"id":61},"_1-we-havent-always-focused-on-enterprise-features-for-gitlabcom","1. We haven't always focused on enterprise features for GitLab.com",[12,64,65],{},"GitLab.com has typically been the GitLab solution for hobbyists and small development teams. Enterprises have typically gravitated towards self-managed, self-hosted GitLab. Because of this bifurcation, enterprise features such as SSO were not prioritized as high in mid-2018.",[59,67,69],{"id":68},"the-fix-we-are-now-prioritizing-enterprise-features","The fix: We are now prioritizing enterprise features",[12,71,72],{},"This includes features like SSO at the top of our list. In 2019, enterprise customers looking to use GitLab are coming with a SaaS-first approach, led by a desire to get out of traditional hosting arrangements, shying away from long procure times, and looking for quick time to market on SaaS implementation. Most importantly, we’ve heard this directly from enough customers recently that we couldn't sit idly by and not activate on this.",[59,74,76],{"id":75},"_2-security-issues-have-burdened-our-manage-team","2. Security issues have burdened our Manage team",[12,78,79,80,84,85,90],{},"The ",[16,81,83],{"href":82},"/stages-devops-lifecycle/","Manage"," team, responsible for authentication at GitLab, has been hit with the most security issues of any team (170 open issues) and has been required to prioritize these over new feature releases. Manage has released ",[16,86,89],{"href":87,"rel":88},"https://gitlab.com/groups/gitlab-org/-/issues?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=Any&label_name%5B%5D=Manage&label_name%5B%5D=security",[],"eight security fixes"," that we've made public since September. We're proud of this work, as it’s required to protect our customers.",[59,92,94],{"id":93},"the-fix-measures-to-improve-our-velocity-in-finding-and-fixing-security-issues","The fix: Measures to improve our velocity in finding and fixing security issues",[12,96,97,98,103,104,109,110,114],{},"We will continue to prioritize P1 security issues above all new features and functionality, consistent with our ",[16,99,102],{"href":100,"rel":101},"https://handbook.gitlab.com/handbook/product/product-processes/#how-we-prioritize-work",[],"prioritization framework"," and ensuring a secure application. If GitLab isn’t a secure application where customers can trust that their data is safe and secure, all of the features in the world won’t make a difference as we won’t be around for long. In order to improve our security posture and increase the velocity at which we identify and fix security vulnerabilities, we've launched our ",[16,105,108],{"href":106,"rel":107},"https://hackerone.com/gitlab",[],"HackerOne Bug Bounty Program"," with rewards of up to $12,000! ",[16,111,113],{"href":112},"/blog/gitlab-hackerone-bug-bounty-program-is-public-today/","This program was launched"," on Dec. 12, 2018 and has already paid out over $265,000 in bug bounties, over 215 reports!",[59,116,118],{"id":117},"_3-the-manage-team-has-been-stretched","3. The Manage team has been stretched",[12,120,121,122,127,128,133],{},"The Manage team has an incredibly broad scope, ranging from permissions and authentication, to cycle analytics and DevOps scoring for organizations. In the few spare cycles our engineering team has had in between security issues, we had to spend time on high-severity, non-security bugfixes and promised features – like ",[16,123,126],{"href":124,"rel":125},"https://gitlab.com/gitlab-org/gitlab-ee/issues/726",[],"adding smart card support"," and keeping instances more secure by ",[16,129,132],{"href":130,"rel":131},"https://gitlab.com/gitlab-org/gitlab-ce/issues/40385",[],"prohibiting admin impersonation",". Simply put, we didn’t have enough resources to activate on all fronts.",[59,135,137],{"id":136},"the-fix-were-growing-to-meet-demand","The fix: We're growing to meet demand",[12,139,140,141,146],{},"GitLab will grow from ~400 employees at the start of 2019 to ~800 by the end of the year. We will be splitting Manage into several teams, starting with the ",[16,142,145],{"href":143,"rel":144},"https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/18087",[],"Fulfillment team",", allowing for more resources to push along each of these areas in parallel.",[12,148,149,150,155],{},"GitLab.com is one of our highest-growth areas based on most Key Performance Indicators, including monthly active users, revenue, and feature usage. It’s the quickest way to get started using GitLab, and we need to do a better job knocking down barriers for large organization adoption. We’re already activating heavily on ",[16,151,154],{"href":152,"rel":153},"https://gitlab.com/groups/gitlab-org/-/epics/731",[],"SAML-based SSO for enterprises"," in early 2019 and look forward to regaining our customers’ trust in being a company that quickly adapts to your feedback.",[12,157,158,159,164,165,169],{},"If this type of organization and ",[16,160,163],{"href":161,"rel":162},"https://handbook.gitlab.com/handbook/product/",[],"product philosophy"," seems exciting to you, drop me a note at ",[16,166,168],{"href":167},"mailto:ebrinkman@gitlab.com","ebrinkman@gitlab.com",". We will be doubling the size of the product team and are looking for talented product managers to help us scale GitLab and drive the direction and growth of our application.",{"title":171,"searchDepth":172,"depth":172,"links":173},"",2,[174,176,177,178,179,180],{"id":61,"depth":175,"text":62},3,{"id":68,"depth":175,"text":69},{"id":75,"depth":175,"text":76},{"id":93,"depth":175,"text":94},{"id":117,"depth":175,"text":118},{"id":136,"depth":175,"text":137},"company","2019-01-17","Here's some insight into our approach to improving a key enterprise capability for GitLab.com, SSO.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663397/Blog/Hero%20Images/logoforblogpost.jpg",{},true,"/en-us/blog/iterating-on-sso",{"title":5,"description":183,"ogTitle":5,"ogDescription":183,"noIndex":186,"ogImage":187,"ogUrl":192,"ogSiteName":193,"ogType":194,"canonicalUrls":192},"https://about.gitlab.com/blog/iterating-on-sso","https://about.gitlab.com","article","iterating-on-sso","en-us/blog/iterating-on-sso",[198,199,200],"features","inside GitLab","security","BlogPost","PUGsF4xdSfk_0-74DYRhEYVtOUd0HnIcWg0CYfW_p2k",{"logo":204,"freeTrial":209,"sales":214,"login":219,"items":224,"search":550,"minimal":581,"duo":600,"switchNav":609,"pricingDeployment":620},{"config":205},{"href":206,"dataGaName":207,"dataGaLocation":208},"/","gitlab logo","header",{"text":210,"config":211},"Get free trial",{"href":212,"dataGaName":213,"dataGaLocation":208},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":215,"config":216},"Request a demo",{"href":217,"dataGaName":218,"dataGaLocation":208},"/sales/?contact-topic=request-demo","sales",{"text":220,"config":221},"Sign in",{"href":222,"dataGaName":223,"dataGaLocation":208},"https://gitlab.com/users/sign_in/","sign in",[225,254,354,359,473,528],{"text":226,"config":227,"menu":229},"Platform",{"dataNavLevelOne":228},"platform",{"type":230,"columns":231},"cards",[232,238,246],{"title":226,"description":233,"link":234},"The intelligent orchestration platform for DevSecOps",{"text":235,"config":236},"Explore our Platform",{"href":237,"dataGaName":228,"dataGaLocation":208},"/platform/",{"title":239,"description":240,"link":241},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":242,"config":243},"Meet GitLab Duo",{"href":244,"dataGaName":245,"dataGaLocation":208},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":247,"description":248,"link":249},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":250,"config":251},"Learn more",{"href":252,"dataGaName":253,"dataGaLocation":208},"/why-gitlab/","why gitlab",{"text":255,"left":189,"config":256,"menu":258},"Product",{"dataNavLevelOne":257},"solutions",{"type":259,"link":260,"columns":264,"feature":333},"lists",{"text":261,"config":262},"View all Solutions",{"href":263,"dataGaName":257,"dataGaLocation":208},"/solutions/",[265,289,312],{"title":266,"description":267,"link":268,"items":273},"Automation","CI/CD and automation to accelerate deployment",{"config":269},{"icon":270,"href":271,"dataGaName":272,"dataGaLocation":208},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[274,278,281,285],{"text":275,"config":276},"CI/CD",{"href":277,"dataGaLocation":208,"dataGaName":275},"/solutions/continuous-integration/",{"text":239,"config":279},{"href":244,"dataGaLocation":208,"dataGaName":280},"gitlab duo agent platform - product menu",{"text":282,"config":283},"Source Code Management",{"href":284,"dataGaLocation":208,"dataGaName":282},"/solutions/source-code-management/",{"text":286,"config":287},"Automated Software Delivery",{"href":271,"dataGaLocation":208,"dataGaName":288},"Automated software delivery",{"title":290,"description":291,"link":292,"items":297},"Security","Deliver code faster without compromising security",{"config":293},{"href":294,"dataGaName":295,"dataGaLocation":208,"icon":296},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[298,302,307],{"text":299,"config":300},"Application Security Testing",{"href":294,"dataGaName":301,"dataGaLocation":208},"Application security testing",{"text":303,"config":304},"Software Supply Chain Security",{"href":305,"dataGaLocation":208,"dataGaName":306},"/solutions/supply-chain/","Software supply chain security",{"text":308,"config":309},"Software Compliance",{"href":310,"dataGaName":311,"dataGaLocation":208},"/solutions/software-compliance/","software compliance",{"title":313,"link":314,"items":319},"Measurement",{"config":315},{"icon":316,"href":317,"dataGaName":318,"dataGaLocation":208},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[320,324,328],{"text":321,"config":322},"Visibility & Measurement",{"href":317,"dataGaLocation":208,"dataGaName":323},"Visibility and Measurement",{"text":325,"config":326},"Value Stream Management",{"href":327,"dataGaLocation":208,"dataGaName":325},"/solutions/value-stream-management/",{"text":329,"config":330},"Analytics & Insights",{"href":331,"dataGaLocation":208,"dataGaName":332},"/solutions/analytics-and-insights/","Analytics and insights",{"title":334,"type":259,"items":335},"GitLab for",[336,342,348],{"text":337,"config":338},"Enterprise",{"icon":339,"href":340,"dataGaLocation":208,"dataGaName":341},"Building","/enterprise/","enterprise",{"text":343,"config":344},"Small Business",{"icon":345,"href":346,"dataGaLocation":208,"dataGaName":347},"Work","/small-business/","small business",{"text":349,"config":350},"Public Sector",{"icon":351,"href":352,"dataGaLocation":208,"dataGaName":353},"Organization","/solutions/public-sector/","public sector",{"text":355,"config":356},"Pricing",{"href":357,"dataGaName":358,"dataGaLocation":208,"dataNavLevelOne":358},"/pricing/","pricing",{"text":360,"config":361,"menu":363},"Resources",{"dataNavLevelOne":362},"resources",{"type":259,"link":364,"columns":368,"feature":462},{"text":365,"config":366},"View all resources",{"href":367,"dataGaName":362,"dataGaLocation":208},"/resources/",[369,402,429],{"title":370,"items":371},"Getting started",[372,377,382,387,392,397],{"text":373,"config":374},"Install",{"href":375,"dataGaName":376,"dataGaLocation":208},"/install/","install",{"text":378,"config":379},"Quick start guides",{"href":380,"dataGaName":381,"dataGaLocation":208},"/get-started/","quick setup checklists",{"text":383,"config":384},"Learn",{"href":385,"dataGaLocation":208,"dataGaName":386},"https://university.gitlab.com/","learn",{"text":388,"config":389},"Product documentation",{"href":390,"dataGaName":391,"dataGaLocation":208},"https://docs.gitlab.com/","product documentation",{"text":393,"config":394},"Best practice videos",{"href":395,"dataGaName":396,"dataGaLocation":208},"/getting-started-videos/","best practice videos",{"text":398,"config":399},"Integrations",{"href":400,"dataGaName":401,"dataGaLocation":208},"/integrations/","integrations",{"title":403,"items":404},"Discover",[405,410,415,420,424],{"text":406,"config":407},"Customer success stories",{"href":408,"dataGaName":409,"dataGaLocation":208},"/customers/","customer success stories",{"text":411,"config":412},"Blog",{"href":413,"dataGaName":414,"dataGaLocation":208},"/blog/","blog",{"text":416,"config":417},"Demo Hub",{"href":418,"dataGaName":419,"dataGaLocation":208},"/demo-hub/","demo hub",{"text":421,"config":422},"The Source",{"href":423,"dataGaName":414,"dataGaLocation":208},"/the-source/",{"text":425,"config":426},"Remote",{"href":427,"dataGaName":428,"dataGaLocation":208},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":430,"items":431},"Connect",[432,437,442,447,452,457],{"text":433,"config":434},"GitLab Services",{"href":435,"dataGaName":436,"dataGaLocation":208},"/services/","services",{"text":438,"config":439},"Contribute",{"href":440,"dataGaName":441,"dataGaLocation":208},"https://contributors.gitlab.com","contribute",{"text":443,"config":444},"Community",{"href":445,"dataGaName":446,"dataGaLocation":208},"/community/","community",{"text":448,"config":449},"Forum",{"href":450,"dataGaName":451,"dataGaLocation":208},"https://forum.gitlab.com/","forum",{"text":453,"config":454},"Events",{"href":455,"dataGaName":456,"dataGaLocation":208},"/events/","events",{"text":458,"config":459},"Partners",{"href":460,"dataGaName":461,"dataGaLocation":208},"/partners/","partners",{"config":463,"title":466,"text":467,"link":468},{"background":464,"textColor":465},"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":469,"config":470},"Read the latest",{"href":471,"dataGaName":472,"dataGaLocation":208},"/whats-new/","whats new",{"text":474,"config":475,"menu":476},"Company",{"dataNavLevelOne":181},{"type":259,"columns":477},[478],{"items":479},[480,485,491,493,498,503,508,513,518,523],{"text":481,"config":482},"About",{"href":483,"dataGaName":484,"dataGaLocation":208},"/company/","about",{"text":486,"config":487,"footerGa":490},"Jobs",{"href":488,"dataGaName":489,"dataGaLocation":208},"/jobs/","jobs",{"dataGaName":489},{"text":453,"config":492},{"href":455,"dataGaName":456,"dataGaLocation":208},{"text":494,"config":495},"Leadership",{"href":496,"dataGaName":497,"dataGaLocation":208},"/company/team/e-group/","leadership",{"text":499,"config":500},"Handbook",{"href":501,"dataGaName":502,"dataGaLocation":208},"https://handbook.gitlab.com/","handbook",{"text":504,"config":505},"Investor relations",{"href":506,"dataGaName":507,"dataGaLocation":208},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":509,"config":510},"Trust Center",{"href":511,"dataGaName":512,"dataGaLocation":208},"/security/","trust center",{"text":514,"config":515},"AI Transparency Center",{"href":516,"dataGaName":517,"dataGaLocation":208},"/ai-transparency-center/","ai transparency center",{"text":519,"config":520},"Newsletter",{"href":521,"dataGaName":522,"dataGaLocation":208},"/company/contact/#contact-forms","newsletter",{"text":524,"config":525},"Press",{"href":526,"dataGaName":527,"dataGaLocation":208},"/press/","press",{"text":529,"config":530,"menu":531},"Contact us",{"dataNavLevelOne":181},{"type":259,"columns":532},[533],{"items":534},[535,540,545],{"text":536,"config":537},"Talk to sales",{"href":538,"dataGaName":539,"dataGaLocation":208},"/sales/","talk to sales",{"text":541,"config":542},"Support portal",{"href":543,"dataGaName":544,"dataGaLocation":208},"https://support.gitlab.com/hc/en-us","support portal",{"text":546,"config":547},"Customer portal",{"href":548,"dataGaName":549,"dataGaLocation":208},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":551,"login":552,"suggestions":559},"Close",{"text":553,"link":554},"To search repositories and projects, login to",{"text":555,"config":556},"gitlab.com",{"href":222,"dataGaName":557,"dataGaLocation":558},"search login","search",{"text":560,"default":561},"Suggestions",[562,564,568,570,574,578],{"text":239,"config":563},{"href":244,"dataGaName":239,"dataGaLocation":558},{"text":565,"config":566},"Code Suggestions (AI)",{"href":567,"dataGaName":565,"dataGaLocation":558},"/solutions/code-suggestions/",{"text":275,"config":569},{"href":277,"dataGaName":275,"dataGaLocation":558},{"text":571,"config":572},"GitLab on AWS",{"href":573,"dataGaName":571,"dataGaLocation":558},"/partners/technology-partners/aws/",{"text":575,"config":576},"GitLab on Google Cloud",{"href":577,"dataGaName":575,"dataGaLocation":558},"/partners/technology-partners/google-cloud-platform/",{"text":579,"config":580},"Why GitLab?",{"href":252,"dataGaName":579,"dataGaLocation":558},{"freeTrial":582,"mobileIcon":587,"desktopIcon":592,"secondaryButton":595},{"text":583,"config":584},"Start free trial",{"href":585,"dataGaName":213,"dataGaLocation":586},"https://gitlab.com/-/trials/new/","nav",{"altText":588,"config":589},"Gitlab Icon",{"src":590,"dataGaName":591,"dataGaLocation":586},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":588,"config":593},{"src":594,"dataGaName":591,"dataGaLocation":586},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":596,"config":597},"Get Started",{"href":598,"dataGaName":599,"dataGaLocation":586},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":601,"mobileIcon":605,"desktopIcon":607},{"text":602,"config":603},"Learn more about GitLab Duo",{"href":244,"dataGaName":604,"dataGaLocation":586},"gitlab duo",{"altText":588,"config":606},{"src":590,"dataGaName":591,"dataGaLocation":586},{"altText":588,"config":608},{"src":594,"dataGaName":591,"dataGaLocation":586},{"button":610,"mobileIcon":615,"desktopIcon":617},{"text":611,"config":612},"/switch",{"href":613,"dataGaName":614,"dataGaLocation":586},"#contact","switch",{"altText":588,"config":616},{"src":590,"dataGaName":591,"dataGaLocation":586},{"altText":588,"config":618},{"src":619,"dataGaName":591,"dataGaLocation":586},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":621,"mobileIcon":626,"desktopIcon":628},{"text":622,"config":623},"Back to pricing",{"href":357,"dataGaName":624,"dataGaLocation":586,"icon":625},"back to pricing","GoBack",{"altText":588,"config":627},{"src":590,"dataGaName":591,"dataGaLocation":586},{"altText":588,"config":629},{"src":594,"dataGaName":591,"dataGaLocation":586},{"title":631,"titleMobile":632,"button":633,"config":638},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":250,"config":634},{"href":635,"dataGaName":636,"dataGaLocation":637},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":639,"disabled":186},"release",{"data":641},{"text":642,"source":643,"edit":649,"contribute":654,"config":659,"items":664,"minimal":874},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":644,"config":645},"View page source",{"href":646,"dataGaName":647,"dataGaLocation":648},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":650,"config":651},"Edit this page",{"href":652,"dataGaName":653,"dataGaLocation":648},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":655,"config":656},"Please contribute",{"href":657,"dataGaName":658,"dataGaLocation":648},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":660,"facebook":661,"youtube":662,"linkedin":663},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[665,712,766,810,842],{"title":355,"links":666,"subMenu":681},[667,671,676],{"text":668,"config":669},"View plans",{"href":357,"dataGaName":670,"dataGaLocation":648},"view plans",{"text":672,"config":673},"Why Premium?",{"href":674,"dataGaName":675,"dataGaLocation":648},"/pricing/premium/","why premium",{"text":677,"config":678},"Why Ultimate?",{"href":679,"dataGaName":680,"dataGaLocation":648},"/pricing/ultimate/","why ultimate",[682],{"title":683,"links":684},"Contact Us",[685,688,690,692,697,702,707],{"text":686,"config":687},"Contact sales",{"href":538,"dataGaName":218,"dataGaLocation":648},{"text":541,"config":689},{"href":543,"dataGaName":544,"dataGaLocation":648},{"text":546,"config":691},{"href":548,"dataGaName":549,"dataGaLocation":648},{"text":693,"config":694},"Status",{"href":695,"dataGaName":696,"dataGaLocation":648},"https://status.gitlab.com/","status",{"text":698,"config":699},"Terms of use",{"href":700,"dataGaName":701,"dataGaLocation":648},"/terms/","terms of use",{"text":703,"config":704},"Privacy statement",{"href":705,"dataGaName":706,"dataGaLocation":648},"/privacy/","privacy statement",{"text":708,"config":709},"Cookie preferences",{"dataGaName":710,"dataGaLocation":648,"id":711,"isOneTrustButton":189},"cookie preferences","ot-sdk-btn",{"title":255,"links":713,"subMenu":722},[714,718],{"text":715,"config":716},"DevSecOps platform",{"href":237,"dataGaName":717,"dataGaLocation":648},"devsecops platform",{"text":719,"config":720},"AI-Assisted Development",{"href":244,"dataGaName":721,"dataGaLocation":648},"ai-assisted development",[723],{"title":724,"links":725},"Topics",[726,731,736,741,746,751,756,761],{"text":727,"config":728},"CICD",{"href":729,"dataGaName":730,"dataGaLocation":648},"/topics/ci-cd/","cicd",{"text":732,"config":733},"GitOps",{"href":734,"dataGaName":735,"dataGaLocation":648},"/topics/gitops/","gitops",{"text":737,"config":738},"DevOps",{"href":739,"dataGaName":740,"dataGaLocation":648},"/topics/devops/","devops",{"text":742,"config":743},"Version Control",{"href":744,"dataGaName":745,"dataGaLocation":648},"/topics/version-control/","version control",{"text":747,"config":748},"DevSecOps",{"href":749,"dataGaName":750,"dataGaLocation":648},"/topics/devsecops/","devsecops",{"text":752,"config":753},"Cloud Native",{"href":754,"dataGaName":755,"dataGaLocation":648},"/topics/cloud-native/","cloud native",{"text":757,"config":758},"AI for Coding",{"href":759,"dataGaName":760,"dataGaLocation":648},"/topics/devops/ai-for-coding/","ai for coding",{"text":762,"config":763},"Agentic AI",{"href":764,"dataGaName":765,"dataGaLocation":648},"/topics/agentic-ai/","agentic ai",{"title":767,"links":768},"Solutions",[769,771,773,778,782,785,789,792,794,797,800,805],{"text":299,"config":770},{"href":294,"dataGaName":299,"dataGaLocation":648},{"text":288,"config":772},{"href":271,"dataGaName":272,"dataGaLocation":648},{"text":774,"config":775},"Agile development",{"href":776,"dataGaName":777,"dataGaLocation":648},"/solutions/agile-delivery/","agile delivery",{"text":779,"config":780},"SCM",{"href":284,"dataGaName":781,"dataGaLocation":648},"source code management",{"text":727,"config":783},{"href":277,"dataGaName":784,"dataGaLocation":648},"continuous integration & delivery",{"text":786,"config":787},"Value stream management",{"href":327,"dataGaName":788,"dataGaLocation":648},"value stream management",{"text":732,"config":790},{"href":791,"dataGaName":735,"dataGaLocation":648},"/solutions/gitops/",{"text":337,"config":793},{"href":340,"dataGaName":341,"dataGaLocation":648},{"text":795,"config":796},"Small business",{"href":346,"dataGaName":347,"dataGaLocation":648},{"text":798,"config":799},"Public sector",{"href":352,"dataGaName":353,"dataGaLocation":648},{"text":801,"config":802},"Education",{"href":803,"dataGaName":804,"dataGaLocation":648},"/solutions/education/","education",{"text":806,"config":807},"Financial services",{"href":808,"dataGaName":809,"dataGaLocation":648},"/solutions/finance/","financial services",{"title":360,"links":811},[812,814,816,818,821,823,826,828,830,832,834,836,838,840],{"text":373,"config":813},{"href":375,"dataGaName":376,"dataGaLocation":648},{"text":378,"config":815},{"href":380,"dataGaName":381,"dataGaLocation":648},{"text":383,"config":817},{"href":385,"dataGaName":386,"dataGaLocation":648},{"text":388,"config":819},{"href":390,"dataGaName":820,"dataGaLocation":648},"docs",{"text":411,"config":822},{"href":413,"dataGaName":414,"dataGaLocation":648},{"text":824,"config":825},"What's new",{"href":471,"dataGaName":472,"dataGaLocation":648},{"text":406,"config":827},{"href":408,"dataGaName":409,"dataGaLocation":648},{"text":425,"config":829},{"href":427,"dataGaName":428,"dataGaLocation":648},{"text":433,"config":831},{"href":435,"dataGaName":436,"dataGaLocation":648},{"text":438,"config":833},{"href":440,"dataGaName":441,"dataGaLocation":648},{"text":443,"config":835},{"href":445,"dataGaName":446,"dataGaLocation":648},{"text":448,"config":837},{"href":450,"dataGaName":451,"dataGaLocation":648},{"text":453,"config":839},{"href":455,"dataGaName":456,"dataGaLocation":648},{"text":458,"config":841},{"href":460,"dataGaName":461,"dataGaLocation":648},{"title":474,"links":843},[844,846,848,850,852,854,858,863,865,867,869],{"text":481,"config":845},{"href":483,"dataGaName":181,"dataGaLocation":648},{"text":486,"config":847},{"href":488,"dataGaName":489,"dataGaLocation":648},{"text":494,"config":849},{"href":496,"dataGaName":497,"dataGaLocation":648},{"text":499,"config":851},{"href":501,"dataGaName":502,"dataGaLocation":648},{"text":504,"config":853},{"href":506,"dataGaName":507,"dataGaLocation":648},{"text":855,"config":856},"Sustainability",{"href":857,"dataGaName":855,"dataGaLocation":648},"/sustainability/",{"text":859,"config":860},"Diversity, inclusion and belonging (DIB)",{"href":861,"dataGaName":862,"dataGaLocation":648},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":509,"config":864},{"href":511,"dataGaName":512,"dataGaLocation":648},{"text":519,"config":866},{"href":521,"dataGaName":522,"dataGaLocation":648},{"text":524,"config":868},{"href":526,"dataGaName":527,"dataGaLocation":648},{"text":870,"config":871},"Modern Slavery Transparency Statement",{"href":872,"dataGaName":873,"dataGaLocation":648},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":875},[876,879,882],{"text":877,"config":878},"Terms",{"href":700,"dataGaName":701,"dataGaLocation":648},{"text":880,"config":881},"Cookies",{"dataGaName":710,"dataGaLocation":648,"id":711,"isOneTrustButton":189},{"text":883,"config":884},"Privacy",{"href":705,"dataGaName":706,"dataGaLocation":648},[886],{"id":887,"title":7,"body":185,"config":888,"content":890,"description":185,"extension":893,"meta":894,"navigation":189,"path":895,"seo":896,"stem":897,"__hash__":898},"blogAuthors/en-us/blog/authors/eric-brinkman.yml",{"template":889},"BlogAuthor",{"name":7,"config":891},{"headshot":171,"ctfId":892},"ebrinkman","yml",{},"/en-us/blog/authors/eric-brinkman",{},"en-us/blog/authors/eric-brinkman","qMByPd7Ao-FHxKcmn6i7gnoxDILT8EZTktYivKsVwLc",[900,908,915],{"title":901,"description":902,"heroImage":903,"category":181,"date":904,"authors":905,"slug":907,"externalUrl":185},"Why GitLab signed the Open Weights and American AI Leadership letter","GitLab supports customer choice, data privacy, and AI model neutrality, empowering teams to run secure, cost-effective, local solutions.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785333264/ww4mlighwlvvzgnmbe6w.png","2026-07-29",[906],"Bill Staples","open-weight-model-letter",{"title":909,"description":910,"heroImage":911,"category":181,"date":912,"authors":913,"slug":914,"externalUrl":185},"GitLab Act 2","A letter to our customers and our investors.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776362275/ozbwn9tk0dditpnfddlz.png","2026-05-11",[906],"gitlab-act-2",{"title":916,"description":917,"heroImage":918,"category":181,"date":919,"authors":920,"slug":922,"externalUrl":185},"GitLab named a 2026 Omdia Universe Leader","Omdia's 2026 report on AI-assisted software development ranked 19 vendors. Here is what GitLab's top scores mean for engineering teams.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-04-13",[921],"Rebecca Carter","gitlab-named-a-2026-omdia-universe-leader",{"promotions":924},[925,939,951,962],{"id":926,"categories":927,"header":929,"text":930,"button":931,"image":936},"ai-modernization",[928],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":932,"config":933},"Get your AI maturity score",{"href":934,"dataGaName":935,"dataGaLocation":414},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":937},{"src":938},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":940,"categories":941,"header":943,"text":930,"button":944,"image":948},"devops-modernization",[942,750],"product","Are you just managing tools or shipping innovation?",{"text":945,"config":946},"Get your DevOps maturity score",{"href":947,"dataGaName":935,"dataGaLocation":414},"/assessments/devops-modernization-assessment/",{"config":949},{"src":950},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":952,"categories":953,"header":954,"text":930,"button":955,"image":959},"security-modernization",[200],"Are you trading speed for security?",{"text":956,"config":957},"Get your security maturity score",{"href":958,"dataGaName":935,"dataGaLocation":414},"/assessments/security-modernization-assessment/",{"config":960},{"src":961},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":963,"paths":964,"header":967,"text":968,"button":969,"image":974},"github-azure-migration",[965,966],"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":970,"config":971},"See how GitLab compares to GitHub",{"href":972,"dataGaName":973,"dataGaLocation":414},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":975},{"src":950},{"header":977,"blurb":978,"button":979,"secondaryButton":984},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":980,"config":981},"Get your free trial",{"href":982,"dataGaName":213,"dataGaLocation":983},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":686,"config":985},{"href":538,"dataGaName":218,"dataGaLocation":983},1786803772463]