[{"data":1,"prerenderedAt":1043},["ShallowReactive",2],{"/blog/gitlab-community-forks":3,"navigation-en-us":259,"banner-en-us":685,"footer-en-us":695,"blog-post-authors-en-us-Lee Tickett":940,"blog-related-posts-en-us-gitlab-community-forks":955,"blog-promotions-en-us":979,"next-steps-en-us":1033},{"id":4,"title":5,"authors":6,"body":8,"category":238,"date":239,"description":240,"extension":241,"externalUrl":242,"faq":242,"featured":243,"heroImage":244,"meta":245,"navigation":246,"path":247,"seo":248,"slug":252,"stem":253,"tags":254,"template":257,"updatedDate":242,"__hash__":258},"blogPosts/en-us/blog/gitlab-community-forks.md","Community forks: A new, easier way to contribute to GitLab",[7],"Lee Tickett",{"type":9,"value":10,"toc":231},"minimark",[11,22,27,30,58,61,85,89,115,118,159,163,166,180,183,195,204,207,216],[12,13,14,15,21],"p",{},"At GitLab, we believe ",[16,17,20],"a",{"href":18,"rel":19},"https://handbook.gitlab.com/handbook/company/mission/#mission",[],"everyone can contribute",".\nIn my role, as a member of GitLab's Contributor Success team, I'm focused on ensuring that contributing to GitLab is as easy and rewarding as possible. In this article, I will share a recent experiment in improving the GitLab contributor experience for community members: community forks.\nI'll explain what they are and, more importantly, the positive impact we've seen community forks have on contirbutions to GitLab.",[23,24,26],"h2",{"id":25},"what-is-a-community-fork","What is a community fork?",[12,28,29],{},"GitLab team members and wider community members have different levels of access to canonical GitLab projects. GitLab team members can contribute directly to the GitLab codebase; wider community members need to work from forks in order to contribute. This leads to two very different experiences. If you'd previously tried to contribute to GitLab from a personal fork, you probably encountered one of the following frustrations:",[31,32,33,49,52,55],"ul",{},[34,35,36,37,42,43,48],"li",{},"You need to fork the project before you can begin working on a code contribution. (This can take a while for big projects such as\n",[16,38,41],{"href":39,"rel":40},"https://gitlab.com/gitlab-org/gitlab",[],"GitLab"," and ",[16,44,47],{"href":45,"rel":46},"https://gitlab.com/gitlab-com/www-gitlab-com/",[],"www-gitlab-com",".)",[34,50,51],{},"Collaboration is \"opt-in\". That is, a contributor must manually opt-in to allow maintainers to push commits to their merge requests,\nand community members cannot push commits to team member branches.",[34,53,54],{},"Free tier quotas apply to individual contributors' forks. This can create a challenge when frequent contributors use up their free CI minutes allocation.",[34,56,57],{},"Personal forks need to be regularly updated (rebased) against the canonical projects.",[12,59,60],{},"To address issues like these in the past, we'd developed and introduced solutions like cost factors. Those worked to alleviate individual pain points, but our team wanted to test another idea, one we thought could address a number of these contribution hurdles at once.",[12,62,63,64,69,70,75,76,80,81,84],{},"Drawing inspiration from ",[16,65,68],{"href":66,"rel":67},"https://gitlab.com/weitzman",[],"Moshe Weitzman"," and a ",[16,71,74],{"href":72,"rel":73},"https://gitlab.com/drupalspoons/webmasters/-/blob/master/docs/onboarding_user.md",[],"similar solution from the Drupal project",",\nwe imagined establishing a \"community fork\" of GitLab. Instead of working on innumerable, individual, isolated forks of GitLab,\nwider community members could ",[77,78,79],"strong",{},"all"," contribute to a ",[77,82,83],{},"single, shared fork"," of GitLab available to everyone.",[23,86,88],{"id":87},"building-the-first-fork","Building the first fork",[12,90,91,92,97,98,103,104,42,109,114],{},"I spun up an ",[16,93,96],{"href":94,"rel":95},"https://gitlab.com/gitlab-org/gitlab/-/issues/378608",[],"issue"," and started to bounce ideas around.\nWe were sure to involve the GitLab security team and the wider community before starting an experiment.\nAfter some conversations, I took a ",[16,99,102],{"href":100,"rel":101},"https://handbook.gitlab.com/teamops/decision-velocity/#bias-for-action",[],"bias for action"," and created the first community fork.\nI shared this with a few regular community contributors (thank you, ",[16,105,108],{"href":106,"rel":107},"https://gitlab.com/zillemarco",[],"Marco",[16,110,113],{"href":111,"rel":112},"https://gitlab.com/Taucher2003",[],"Niklas"," for beta testing and now also maintaining the forks).\nAfter a few weeks, we didn't encounter any problems, so we started spinning up forks of more GitLab projects, and invited more community members to join us.",[12,116,117],{},"We believe community forks have the following effects (you'll note that these tie back to the contribution challenges outlined above):",[31,119,120,133,143],{},[34,121,122,125],{},[77,123,124],{},"Promote collaboration",[31,126,127,130],{},[34,128,129],{},"Community members and team members can work on the same merge request (pushing commits to eachother's branches).",[34,131,132],{},"They can also take over stuck/idle merge requests (from each other and from team members).",[34,134,135,138],{},[77,136,137],{},"Remove blockers",[31,139,140],{},[34,141,142],{},"Personal CI minute and storage quotas do not apply to the community forks as they are part of the GitLab for Open Source Program\nwhich provides GitLab Ultimate tier benefits (including larger quotas).",[34,144,145,148],{},[77,146,147],{},"Improve efficiency",[31,149,150,153,156],{},[34,151,152],{},"There is no longer a need to create a personal fork to get started contributing.",[34,154,155],{},"Danger runs automatically, without the need to configure personal access tokens and CI variables.",[34,157,158],{},"Pull mirroring keeps the community forks up to date, without regular manual rebasing.",[23,160,162],{"id":161},"whats-next-for-community-forks","What's next for community forks?",[12,164,165],{},"The experiment was considered a success based on the following:",[31,167,168,171,174,177],{},[34,169,170],{},"The problems identified and effects predicted were confirmed.",[34,172,173],{},"Adoption has been simple.",[34,175,176],{},"Feedback has been positive (both from community members and GitLab team members).",[34,178,179],{},"No blocking issues/concerns have been identified.",[12,181,182],{},"Thus, we are moving from \"experiment\" to \"production\".",[12,184,185,186,194],{},"The community forks concept forms part of my team's Q1 (February - April) objectives and key results (OKRs).\nAs such, we have started updating the documentation and contributor guides and looking at opportunities\nfor automation and promotion (for example, via ",[16,187,190],{"href":188,"rel":189},"https://gitlab.com/gitlab-org/quality/triage-ops/-/merge_requests/1993",[],[191,192,193],"code",{},"@gitlab-bot",").",[12,196,197,198,203],{},"We're also looking for opportunities to handle forks differently in the product.\nFor example, there are several areas (such as the WebIDE) that only check for personal forks and don't consider other types of fork.\nSome backend ",[16,199,202],{"href":200,"rel":201},"https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112167",[],"pre-requisite work"," has already started to facilitate this.",[12,205,206],{},"We have been working on automating and managing the community forks via Terraform.\nThis will make the process quicker, easier, and less prone to human error.",[12,208,209,210,215],{},"The Contributor Success team is already ",[16,211,214],{"href":212,"rel":213},"https://handbook.gitlab.com/handbook/values/#dogfooding",[],"dogfooding"," the community forks, and promoting internally,\nhoping that eventually all GitLab team members will use the community forks.\nWe'd love other open source projects to experiment with the concept and it become a new \"norm\" in community-driven open source software development.",[12,217,218,219,224,225,230],{},"You can read more about the community forks in the ",[16,220,223],{"href":221,"rel":222},"https://gitlab.com/gitlab-community/meta",[],"meta project",".\nThere you'll also find instructions for requesting access to community forks.\nIf you have additional questions, why not ask our community members over on ",[16,226,229],{"href":227,"rel":228},"https://discord.gg/gitlab",[],"Discord","?",{"title":232,"searchDepth":233,"depth":233,"links":234},"",2,[235,236,237],{"id":25,"depth":233,"text":26},{"id":87,"depth":233,"text":88},{"id":161,"depth":233,"text":162},"company","2023-04-04","Learn how we tackled a number of pain points and introduced an alternative to personal forks for open-source community contributions.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664087/Blog/Hero%20Images/tanukicover.jpg",{},true,"/en-us/blog/gitlab-community-forks",{"title":5,"description":240,"ogTitle":5,"ogDescription":240,"noIndex":243,"ogImage":244,"ogUrl":249,"ogSiteName":250,"ogType":251,"canonicalUrls":249},"https://about.gitlab.com/blog/gitlab-community-forks","https://about.gitlab.com","article","gitlab-community-forks","en-us/blog/gitlab-community-forks",[255,256],"contributors","community","BlogPost","KpQ3DNooNKnsyTI1bOsiurDOISjOL80JN8tgzuTXqk8",{"logo":260,"freeTrial":265,"sales":270,"login":275,"items":280,"search":605,"minimal":636,"duo":655,"switchNav":664,"pricingDeployment":675},{"config":261},{"href":262,"dataGaName":263,"dataGaLocation":264},"/","gitlab logo","header",{"text":266,"config":267},"Get free trial",{"href":268,"dataGaName":269,"dataGaLocation":264},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":271,"config":272},"Request a demo",{"href":273,"dataGaName":274,"dataGaLocation":264},"/sales/?contact-topic=request-demo","sales",{"text":276,"config":277},"Sign in",{"href":278,"dataGaName":279,"dataGaLocation":264},"https://gitlab.com/users/sign_in/","sign in",[281,310,410,415,528,583],{"text":282,"config":283,"menu":285},"Platform",{"dataNavLevelOne":284},"platform",{"type":286,"columns":287},"cards",[288,294,302],{"title":282,"description":289,"link":290},"The intelligent orchestration platform for DevSecOps",{"text":291,"config":292},"Explore our Platform",{"href":293,"dataGaName":284,"dataGaLocation":264},"/platform/",{"title":295,"description":296,"link":297},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":298,"config":299},"Meet GitLab Duo",{"href":300,"dataGaName":301,"dataGaLocation":264},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":303,"description":304,"link":305},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":306,"config":307},"Learn more",{"href":308,"dataGaName":309,"dataGaLocation":264},"/why-gitlab/","why gitlab",{"text":311,"left":246,"config":312,"menu":314},"Product",{"dataNavLevelOne":313},"solutions",{"type":315,"link":316,"columns":320,"feature":389},"lists",{"text":317,"config":318},"View all Solutions",{"href":319,"dataGaName":313,"dataGaLocation":264},"/solutions/",[321,345,368],{"title":322,"description":323,"link":324,"items":329},"Automation","CI/CD and automation to accelerate deployment",{"config":325},{"icon":326,"href":327,"dataGaName":328,"dataGaLocation":264},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[330,334,337,341],{"text":331,"config":332},"CI/CD",{"href":333,"dataGaLocation":264,"dataGaName":331},"/solutions/continuous-integration/",{"text":295,"config":335},{"href":300,"dataGaLocation":264,"dataGaName":336},"gitlab duo agent platform - product menu",{"text":338,"config":339},"Source Code Management",{"href":340,"dataGaLocation":264,"dataGaName":338},"/solutions/source-code-management/",{"text":342,"config":343},"Automated Software Delivery",{"href":327,"dataGaLocation":264,"dataGaName":344},"Automated software delivery",{"title":346,"description":347,"link":348,"items":353},"Security","Deliver code faster without compromising security",{"config":349},{"href":350,"dataGaName":351,"dataGaLocation":264,"icon":352},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[354,358,363],{"text":355,"config":356},"Application Security Testing",{"href":350,"dataGaName":357,"dataGaLocation":264},"Application security testing",{"text":359,"config":360},"Software Supply Chain Security",{"href":361,"dataGaLocation":264,"dataGaName":362},"/solutions/supply-chain/","Software supply chain security",{"text":364,"config":365},"Software Compliance",{"href":366,"dataGaName":367,"dataGaLocation":264},"/solutions/software-compliance/","software compliance",{"title":369,"link":370,"items":375},"Measurement",{"config":371},{"icon":372,"href":373,"dataGaName":374,"dataGaLocation":264},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[376,380,384],{"text":377,"config":378},"Visibility & Measurement",{"href":373,"dataGaLocation":264,"dataGaName":379},"Visibility and Measurement",{"text":381,"config":382},"Value Stream Management",{"href":383,"dataGaLocation":264,"dataGaName":381},"/solutions/value-stream-management/",{"text":385,"config":386},"Analytics & Insights",{"href":387,"dataGaLocation":264,"dataGaName":388},"/solutions/analytics-and-insights/","Analytics and insights",{"title":390,"type":315,"items":391},"GitLab for",[392,398,404],{"text":393,"config":394},"Enterprise",{"icon":395,"href":396,"dataGaLocation":264,"dataGaName":397},"Building","/enterprise/","enterprise",{"text":399,"config":400},"Small Business",{"icon":401,"href":402,"dataGaLocation":264,"dataGaName":403},"Work","/small-business/","small business",{"text":405,"config":406},"Public Sector",{"icon":407,"href":408,"dataGaLocation":264,"dataGaName":409},"Organization","/solutions/public-sector/","public sector",{"text":411,"config":412},"Pricing",{"href":413,"dataGaName":414,"dataGaLocation":264,"dataNavLevelOne":414},"/pricing/","pricing",{"text":416,"config":417,"menu":419},"Resources",{"dataNavLevelOne":418},"resources",{"type":315,"link":420,"columns":424,"feature":517},{"text":421,"config":422},"View all resources",{"href":423,"dataGaName":418,"dataGaLocation":264},"/resources/",[425,458,485],{"title":426,"items":427},"Getting started",[428,433,438,443,448,453],{"text":429,"config":430},"Install",{"href":431,"dataGaName":432,"dataGaLocation":264},"/install/","install",{"text":434,"config":435},"Quick start guides",{"href":436,"dataGaName":437,"dataGaLocation":264},"/get-started/","quick setup checklists",{"text":439,"config":440},"Learn",{"href":441,"dataGaLocation":264,"dataGaName":442},"https://university.gitlab.com/","learn",{"text":444,"config":445},"Product documentation",{"href":446,"dataGaName":447,"dataGaLocation":264},"https://docs.gitlab.com/","product documentation",{"text":449,"config":450},"Best practice videos",{"href":451,"dataGaName":452,"dataGaLocation":264},"/getting-started-videos/","best practice videos",{"text":454,"config":455},"Integrations",{"href":456,"dataGaName":457,"dataGaLocation":264},"/integrations/","integrations",{"title":459,"items":460},"Discover",[461,466,471,476,480],{"text":462,"config":463},"Customer success stories",{"href":464,"dataGaName":465,"dataGaLocation":264},"/customers/","customer success stories",{"text":467,"config":468},"Blog",{"href":469,"dataGaName":470,"dataGaLocation":264},"/blog/","blog",{"text":472,"config":473},"Demo Hub",{"href":474,"dataGaName":475,"dataGaLocation":264},"/demo-hub/","demo hub",{"text":477,"config":478},"The Source",{"href":479,"dataGaName":470,"dataGaLocation":264},"/the-source/",{"text":481,"config":482},"Remote",{"href":483,"dataGaName":484,"dataGaLocation":264},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":486,"items":487},"Connect",[488,493,498,502,507,512],{"text":489,"config":490},"GitLab Services",{"href":491,"dataGaName":492,"dataGaLocation":264},"/services/","services",{"text":494,"config":495},"Contribute",{"href":496,"dataGaName":497,"dataGaLocation":264},"https://contributors.gitlab.com","contribute",{"text":499,"config":500},"Community",{"href":501,"dataGaName":256,"dataGaLocation":264},"/community/",{"text":503,"config":504},"Forum",{"href":505,"dataGaName":506,"dataGaLocation":264},"https://forum.gitlab.com/","forum",{"text":508,"config":509},"Events",{"href":510,"dataGaName":511,"dataGaLocation":264},"/events/","events",{"text":513,"config":514},"Partners",{"href":515,"dataGaName":516,"dataGaLocation":264},"/partners/","partners",{"config":518,"title":521,"text":522,"link":523},{"background":519,"textColor":520},"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":524,"config":525},"Read the latest",{"href":526,"dataGaName":527,"dataGaLocation":264},"/whats-new/","whats new",{"text":529,"config":530,"menu":531},"Company",{"dataNavLevelOne":238},{"type":315,"columns":532},[533],{"items":534},[535,540,546,548,553,558,563,568,573,578],{"text":536,"config":537},"About",{"href":538,"dataGaName":539,"dataGaLocation":264},"/company/","about",{"text":541,"config":542,"footerGa":545},"Jobs",{"href":543,"dataGaName":544,"dataGaLocation":264},"/jobs/","jobs",{"dataGaName":544},{"text":508,"config":547},{"href":510,"dataGaName":511,"dataGaLocation":264},{"text":549,"config":550},"Leadership",{"href":551,"dataGaName":552,"dataGaLocation":264},"/company/team/e-group/","leadership",{"text":554,"config":555},"Handbook",{"href":556,"dataGaName":557,"dataGaLocation":264},"https://handbook.gitlab.com/","handbook",{"text":559,"config":560},"Investor relations",{"href":561,"dataGaName":562,"dataGaLocation":264},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":564,"config":565},"Trust Center",{"href":566,"dataGaName":567,"dataGaLocation":264},"/security/","trust center",{"text":569,"config":570},"AI Transparency Center",{"href":571,"dataGaName":572,"dataGaLocation":264},"/ai-transparency-center/","ai transparency center",{"text":574,"config":575},"Newsletter",{"href":576,"dataGaName":577,"dataGaLocation":264},"/company/contact/#contact-forms","newsletter",{"text":579,"config":580},"Press",{"href":581,"dataGaName":582,"dataGaLocation":264},"/press/","press",{"text":584,"config":585,"menu":586},"Contact us",{"dataNavLevelOne":238},{"type":315,"columns":587},[588],{"items":589},[590,595,600],{"text":591,"config":592},"Talk to sales",{"href":593,"dataGaName":594,"dataGaLocation":264},"/sales/","talk to sales",{"text":596,"config":597},"Support portal",{"href":598,"dataGaName":599,"dataGaLocation":264},"https://support.gitlab.com/hc/en-us","support portal",{"text":601,"config":602},"Customer portal",{"href":603,"dataGaName":604,"dataGaLocation":264},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":606,"login":607,"suggestions":614},"Close",{"text":608,"link":609},"To search repositories and projects, login to",{"text":610,"config":611},"gitlab.com",{"href":278,"dataGaName":612,"dataGaLocation":613},"search login","search",{"text":615,"default":616},"Suggestions",[617,619,623,625,629,633],{"text":295,"config":618},{"href":300,"dataGaName":295,"dataGaLocation":613},{"text":620,"config":621},"Code Suggestions (AI)",{"href":622,"dataGaName":620,"dataGaLocation":613},"/solutions/code-suggestions/",{"text":331,"config":624},{"href":333,"dataGaName":331,"dataGaLocation":613},{"text":626,"config":627},"GitLab on AWS",{"href":628,"dataGaName":626,"dataGaLocation":613},"/partners/technology-partners/aws/",{"text":630,"config":631},"GitLab on Google Cloud",{"href":632,"dataGaName":630,"dataGaLocation":613},"/partners/technology-partners/google-cloud-platform/",{"text":634,"config":635},"Why GitLab?",{"href":308,"dataGaName":634,"dataGaLocation":613},{"freeTrial":637,"mobileIcon":642,"desktopIcon":647,"secondaryButton":650},{"text":638,"config":639},"Start free trial",{"href":640,"dataGaName":269,"dataGaLocation":641},"https://gitlab.com/-/trials/new/","nav",{"altText":643,"config":644},"Gitlab Icon",{"src":645,"dataGaName":646,"dataGaLocation":641},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":643,"config":648},{"src":649,"dataGaName":646,"dataGaLocation":641},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":651,"config":652},"Get Started",{"href":653,"dataGaName":654,"dataGaLocation":641},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":656,"mobileIcon":660,"desktopIcon":662},{"text":657,"config":658},"Learn more about GitLab Duo",{"href":300,"dataGaName":659,"dataGaLocation":641},"gitlab duo",{"altText":643,"config":661},{"src":645,"dataGaName":646,"dataGaLocation":641},{"altText":643,"config":663},{"src":649,"dataGaName":646,"dataGaLocation":641},{"button":665,"mobileIcon":670,"desktopIcon":672},{"text":666,"config":667},"/switch",{"href":668,"dataGaName":669,"dataGaLocation":641},"#contact","switch",{"altText":643,"config":671},{"src":645,"dataGaName":646,"dataGaLocation":641},{"altText":643,"config":673},{"src":674,"dataGaName":646,"dataGaLocation":641},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":676,"mobileIcon":681,"desktopIcon":683},{"text":677,"config":678},"Back to pricing",{"href":413,"dataGaName":679,"dataGaLocation":641,"icon":680},"back to pricing","GoBack",{"altText":643,"config":682},{"src":645,"dataGaName":646,"dataGaLocation":641},{"altText":643,"config":684},{"src":649,"dataGaName":646,"dataGaLocation":641},{"title":686,"titleMobile":687,"button":688,"config":693},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":306,"config":689},{"href":690,"dataGaName":691,"dataGaLocation":692},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":694,"disabled":243},"release",{"data":696},{"text":697,"source":698,"edit":704,"contribute":709,"config":714,"items":719,"minimal":929},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":699,"config":700},"View page source",{"href":701,"dataGaName":702,"dataGaLocation":703},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":705,"config":706},"Edit this page",{"href":707,"dataGaName":708,"dataGaLocation":703},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":710,"config":711},"Please contribute",{"href":712,"dataGaName":713,"dataGaLocation":703},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":715,"facebook":716,"youtube":717,"linkedin":718},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[720,767,821,865,897],{"title":411,"links":721,"subMenu":736},[722,726,731],{"text":723,"config":724},"View plans",{"href":413,"dataGaName":725,"dataGaLocation":703},"view plans",{"text":727,"config":728},"Why Premium?",{"href":729,"dataGaName":730,"dataGaLocation":703},"/pricing/premium/","why premium",{"text":732,"config":733},"Why Ultimate?",{"href":734,"dataGaName":735,"dataGaLocation":703},"/pricing/ultimate/","why ultimate",[737],{"title":738,"links":739},"Contact Us",[740,743,745,747,752,757,762],{"text":741,"config":742},"Contact sales",{"href":593,"dataGaName":274,"dataGaLocation":703},{"text":596,"config":744},{"href":598,"dataGaName":599,"dataGaLocation":703},{"text":601,"config":746},{"href":603,"dataGaName":604,"dataGaLocation":703},{"text":748,"config":749},"Status",{"href":750,"dataGaName":751,"dataGaLocation":703},"https://status.gitlab.com/","status",{"text":753,"config":754},"Terms of use",{"href":755,"dataGaName":756,"dataGaLocation":703},"/terms/","terms of use",{"text":758,"config":759},"Privacy statement",{"href":760,"dataGaName":761,"dataGaLocation":703},"/privacy/","privacy statement",{"text":763,"config":764},"Cookie preferences",{"dataGaName":765,"dataGaLocation":703,"id":766,"isOneTrustButton":246},"cookie preferences","ot-sdk-btn",{"title":311,"links":768,"subMenu":777},[769,773],{"text":770,"config":771},"DevSecOps platform",{"href":293,"dataGaName":772,"dataGaLocation":703},"devsecops platform",{"text":774,"config":775},"AI-Assisted Development",{"href":300,"dataGaName":776,"dataGaLocation":703},"ai-assisted development",[778],{"title":779,"links":780},"Topics",[781,786,791,796,801,806,811,816],{"text":782,"config":783},"CICD",{"href":784,"dataGaName":785,"dataGaLocation":703},"/topics/ci-cd/","cicd",{"text":787,"config":788},"GitOps",{"href":789,"dataGaName":790,"dataGaLocation":703},"/topics/gitops/","gitops",{"text":792,"config":793},"DevOps",{"href":794,"dataGaName":795,"dataGaLocation":703},"/topics/devops/","devops",{"text":797,"config":798},"Version Control",{"href":799,"dataGaName":800,"dataGaLocation":703},"/topics/version-control/","version control",{"text":802,"config":803},"DevSecOps",{"href":804,"dataGaName":805,"dataGaLocation":703},"/topics/devsecops/","devsecops",{"text":807,"config":808},"Cloud Native",{"href":809,"dataGaName":810,"dataGaLocation":703},"/topics/cloud-native/","cloud native",{"text":812,"config":813},"AI for Coding",{"href":814,"dataGaName":815,"dataGaLocation":703},"/topics/devops/ai-for-coding/","ai for coding",{"text":817,"config":818},"Agentic AI",{"href":819,"dataGaName":820,"dataGaLocation":703},"/topics/agentic-ai/","agentic ai",{"title":822,"links":823},"Solutions",[824,826,828,833,837,840,844,847,849,852,855,860],{"text":355,"config":825},{"href":350,"dataGaName":355,"dataGaLocation":703},{"text":344,"config":827},{"href":327,"dataGaName":328,"dataGaLocation":703},{"text":829,"config":830},"Agile development",{"href":831,"dataGaName":832,"dataGaLocation":703},"/solutions/agile-delivery/","agile delivery",{"text":834,"config":835},"SCM",{"href":340,"dataGaName":836,"dataGaLocation":703},"source code management",{"text":782,"config":838},{"href":333,"dataGaName":839,"dataGaLocation":703},"continuous integration & delivery",{"text":841,"config":842},"Value stream management",{"href":383,"dataGaName":843,"dataGaLocation":703},"value stream management",{"text":787,"config":845},{"href":846,"dataGaName":790,"dataGaLocation":703},"/solutions/gitops/",{"text":393,"config":848},{"href":396,"dataGaName":397,"dataGaLocation":703},{"text":850,"config":851},"Small business",{"href":402,"dataGaName":403,"dataGaLocation":703},{"text":853,"config":854},"Public sector",{"href":408,"dataGaName":409,"dataGaLocation":703},{"text":856,"config":857},"Education",{"href":858,"dataGaName":859,"dataGaLocation":703},"/solutions/education/","education",{"text":861,"config":862},"Financial services",{"href":863,"dataGaName":864,"dataGaLocation":703},"/solutions/finance/","financial services",{"title":416,"links":866},[867,869,871,873,876,878,881,883,885,887,889,891,893,895],{"text":429,"config":868},{"href":431,"dataGaName":432,"dataGaLocation":703},{"text":434,"config":870},{"href":436,"dataGaName":437,"dataGaLocation":703},{"text":439,"config":872},{"href":441,"dataGaName":442,"dataGaLocation":703},{"text":444,"config":874},{"href":446,"dataGaName":875,"dataGaLocation":703},"docs",{"text":467,"config":877},{"href":469,"dataGaName":470,"dataGaLocation":703},{"text":879,"config":880},"What's new",{"href":526,"dataGaName":527,"dataGaLocation":703},{"text":462,"config":882},{"href":464,"dataGaName":465,"dataGaLocation":703},{"text":481,"config":884},{"href":483,"dataGaName":484,"dataGaLocation":703},{"text":489,"config":886},{"href":491,"dataGaName":492,"dataGaLocation":703},{"text":494,"config":888},{"href":496,"dataGaName":497,"dataGaLocation":703},{"text":499,"config":890},{"href":501,"dataGaName":256,"dataGaLocation":703},{"text":503,"config":892},{"href":505,"dataGaName":506,"dataGaLocation":703},{"text":508,"config":894},{"href":510,"dataGaName":511,"dataGaLocation":703},{"text":513,"config":896},{"href":515,"dataGaName":516,"dataGaLocation":703},{"title":529,"links":898},[899,901,903,905,907,909,913,918,920,922,924],{"text":536,"config":900},{"href":538,"dataGaName":238,"dataGaLocation":703},{"text":541,"config":902},{"href":543,"dataGaName":544,"dataGaLocation":703},{"text":549,"config":904},{"href":551,"dataGaName":552,"dataGaLocation":703},{"text":554,"config":906},{"href":556,"dataGaName":557,"dataGaLocation":703},{"text":559,"config":908},{"href":561,"dataGaName":562,"dataGaLocation":703},{"text":910,"config":911},"Sustainability",{"href":912,"dataGaName":910,"dataGaLocation":703},"/sustainability/",{"text":914,"config":915},"Diversity, inclusion and belonging (DIB)",{"href":916,"dataGaName":917,"dataGaLocation":703},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":564,"config":919},{"href":566,"dataGaName":567,"dataGaLocation":703},{"text":574,"config":921},{"href":576,"dataGaName":577,"dataGaLocation":703},{"text":579,"config":923},{"href":581,"dataGaName":582,"dataGaLocation":703},{"text":925,"config":926},"Modern Slavery Transparency Statement",{"href":927,"dataGaName":928,"dataGaLocation":703},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":930},[931,934,937],{"text":932,"config":933},"Terms",{"href":755,"dataGaName":756,"dataGaLocation":703},{"text":935,"config":936},"Cookies",{"dataGaName":765,"dataGaLocation":703,"id":766,"isOneTrustButton":246},{"text":938,"config":939},"Privacy",{"href":760,"dataGaName":761,"dataGaLocation":703},[941],{"id":942,"title":7,"body":242,"config":943,"content":945,"description":242,"extension":949,"meta":950,"navigation":246,"path":951,"seo":952,"stem":953,"__hash__":954},"blogAuthors/en-us/blog/authors/lee-tickett.yml",{"template":944},"BlogAuthor",{"name":7,"config":946},{"headshot":947,"ctfId":948},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752592356/ibeixykxeiey9aiebylt.png","leetickett","yml",{},"/en-us/blog/authors/lee-tickett",{},"en-us/blog/authors/lee-tickett","pjnpw0lMQmdffRTIj30HBAHqTEvadkz2cw3rJyXrG5I",[956,964,971],{"title":957,"description":958,"heroImage":959,"category":238,"date":960,"authors":961,"slug":963,"externalUrl":242},"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",[962],"Bill Staples","open-weight-model-letter",{"title":965,"description":966,"heroImage":967,"category":238,"date":968,"authors":969,"slug":970,"externalUrl":242},"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",[962],"gitlab-act-2",{"title":972,"description":973,"heroImage":974,"category":238,"date":975,"authors":976,"slug":978,"externalUrl":242},"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",[977],"Rebecca Carter","gitlab-named-a-2026-omdia-universe-leader",{"promotions":980},[981,995,1007,1019],{"id":982,"categories":983,"header":985,"text":986,"button":987,"image":992},"ai-modernization",[984],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":988,"config":989},"Get your AI maturity score",{"href":990,"dataGaName":991,"dataGaLocation":470},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":993},{"src":994},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":996,"categories":997,"header":999,"text":986,"button":1000,"image":1004},"devops-modernization",[998,805],"product","Are you just managing tools or shipping innovation?",{"text":1001,"config":1002},"Get your DevOps maturity score",{"href":1003,"dataGaName":991,"dataGaLocation":470},"/assessments/devops-modernization-assessment/",{"config":1005},{"src":1006},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1008,"categories":1009,"header":1011,"text":986,"button":1012,"image":1016},"security-modernization",[1010],"security","Are you trading speed for security?",{"text":1013,"config":1014},"Get your security maturity score",{"href":1015,"dataGaName":991,"dataGaLocation":470},"/assessments/security-modernization-assessment/",{"config":1017},{"src":1018},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1020,"paths":1021,"header":1024,"text":1025,"button":1026,"image":1031},"github-azure-migration",[1022,1023],"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":1027,"config":1028},"See how GitLab compares to GitHub",{"href":1029,"dataGaName":1030,"dataGaLocation":470},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1032},{"src":1006},{"header":1034,"blurb":1035,"button":1036,"secondaryButton":1041},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1037,"config":1038},"Get your free trial",{"href":1039,"dataGaName":269,"dataGaLocation":1040},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":741,"config":1042},{"href":593,"dataGaName":274,"dataGaLocation":1040},1786803760264]