[{"data":1,"prerenderedAt":1132},["ShallowReactive",2],{"/blog/how-start-ospo-ten-minutes-using-gitlab":3,"navigation-en-us":347,"banner-en-us":774,"footer-en-us":784,"blog-post-authors-en-us-Boris Baldassari":1028,"blog-related-posts-en-us-how-start-ospo-ten-minutes-using-gitlab":1042,"blog-promotions-en-us":1068,"next-steps-en-us":1122},{"id":4,"title":5,"authors":6,"body":8,"category":325,"date":326,"description":327,"extension":328,"externalUrl":329,"faq":329,"featured":330,"heroImage":331,"meta":332,"navigation":333,"path":334,"seo":335,"slug":339,"stem":340,"tags":341,"template":345,"updatedDate":329,"__hash__":346},"blogPosts/en-us/blog/how-start-ospo-ten-minutes-using-gitlab.md","Start an open source center of excellence in 10 minutes using GitLab",[7],"Boris Baldassari",{"type":9,"value":10,"toc":315},"minimark",[11,15,25,28,49,58,61,66,69,72,75,91,94,99,102,111,123,135,138,145,152,171,179,182,188,207,213,226,232,235,239,242,248,251,254,260,264,267,279,282,288,295,301],[12,13,14],"p",{},"Now that open source has finally become a mainstream topic of conversation in the software industry, many organizations are increasingly curious about best practices for consuming, using, managing, and contributing to open source software projects. Open source software can seem alien and intimidating for organizations unfamiliar with it, and participating meaningfully and effectively in the open source ecosystem can be challenging.",[12,16,17,18,24],{},"Organizations especially serious about working in open source have formed ",[19,20,23],"a",{"href":21,"rel":22},"https://opensource.com/business/16/5/whats-open-source-program-office",[],"open source program offices"," (OSPOs) to spearhead their efforts. These offices are centers of excellence for an organization's ongoing work in open source. They help the organization realize the benefits of working with open source communities to accelerate innovation and build more secure tools.",[12,26,27],{},"Perhaps your organization is considering establishing an OSPO. If it is, you likely have questions about how to get started – and especially about the best ways to help your organization become a valuable participant in the open source ecosystem.",[12,29,30,31,36,37,42,43,48],{},"The ",[19,32,35],{"href":33,"rel":34},"https://ospo.zone/",[],"OSPO Alliance"," can help. Formed in 2021, the OSPO Alliance connects ",[19,38,41],{"href":39,"rel":40},"https://ospo.zone/membership/",[],"experienced open source practitioners"," with organizations in need of seasoned guides to the open source world. Since the organization's founding, its members have composed a corpus of best open source practices called the ",[19,44,47],{"href":45,"rel":46},"https://ospo.zone/ggi/",[],"Good Governance Initiative Handbook",", which explores various legal, cultural, and strategic considerations organizations face when working with open source software (and, naturally, the handbook itself is openly licensed, so anyone can contribute to it).",[12,50,51,52,57],{},"To celebrate the launch of the GGI Handbook Version 1.1, the OSPO Alliance went a step further: We have released the ",[19,53,56],{"href":54,"rel":55},"https://gitlab.ow2.org/ggi/my-ggi-board",[],"MyGGI project",", which allows organizations to quickly create the infrastructure for their own open source program offices using GitLab.",[12,59,60],{},"Now, let's look at what the MyGGI project can help your organization accomplish, including how to use the tool to establish an OSPO built on GGI principles — in only 10 minutes.",[62,63,65],"h2",{"id":64},"working-with-the-ggi-handbook","Working with the GGI Handbook",[12,67,68],{},"The GGI Handbook defines 25 activities, or best practices, organized according to various goals an organization may seek to accomplish with open source. Examples of activities include recommendations like \"Manage open source skills and resources,\" \"Manage software dependencies,\" \"Upstream first,\" or \"Engage with open source projects.\" Each of these activities, then, has a corresponding description and rationale, and the handbook provides resources, tools, and hints for successfully implementing them.",[12,70,71],{},"Activites are intentionally generic and must be adapted to your organization's specific, unique, local context. The GGI Hanbook offers tools for doing this, too: scorecards. Scorecards allow you to assess your organization's engagement in and progress with various open source best practices.",[12,73,74],{},"So working with the GGI Handbook in your organization might look something like this:",[76,77,78,82,85,88],"ol",{},[79,80,81],"li",{},"Evaluate the open source-related activities the handbook proposes and remove those that don't fit your specific context (maybe some activities will require a bit of adptation to be more relevant to the domain, while some others may just be discarded).",[79,83,84],{},"Identify the activities that would be most beneficial to reaching your organization's goals in engaging with open source.",[79,86,87],{},"Construct an Agile-like, iterative process for working on a small set of these activities. Do this in the form of sprints by tracking your progress with scorecards, and adapt the activity to your local context, team cultures, and available resources as you go.",[79,89,90],{},"At the end of each iteration, review the activities your teams have completed, select a new scope for improvement, and repeat the process.",[12,92,93],{},"The MyGGI project provides a push-button infrastructure for doing this work. Next, let's examine how to deploy it on GitLab.",[95,96,98],"h3",{"id":97},"deploying-the-ggi-handbook-on-gitlab","Deploying the GGI Handbook on GitLab",[12,100,101],{},"The OSPO Alliance wanted to provide a quick and straightforward way for organizations to establish their own open source program activities using a dashboard, so they can start implementing the GGI Handbook's methods without delay. We didn't want to reinvent the wheel with some heavy custom tooling. Instead, we decided to build the project using tools already available to us. We had already used GitLab issues to model activities during the early stages of handbook development, so reusing this GitLab feature made most sense. By simply adding some scripting to automate the initialization of activities and updating a static website on GitLab Pages, we were able to launch the project so others could easily deploy it in their own GitLab instances.",[12,103,104,105,110],{},"Instructions for deploying the program are available in the project's ",[19,106,109],{"href":107,"rel":108},"https://gitlab.ow2.org/ggi/my-ggi-board/-/blob/main/README.md",[],"README",". Let's review them here and start your own OSPO together.",[12,112,113,114,118,119,122],{},"First, we need to create a new project on our GitLab instance. Select ",[115,116,117],"code",{},"Import project",", then ",[115,120,121],{},"From repository by URL",".",[12,124,125,126,131,132,122],{},"Next, we will need to provide a remote URL. Copy the existing MyGGI project by using the ",[19,127,130],{"href":128,"rel":129},"https://gitlab.com/gitlab-com/marketing/community-relations/open-source-program/gitlab-open-source-partners/publications-and-presentations/-/tree/main",[],"URL"," ",[115,133,134],{},"[https://gitlab.ow2.org/ggi/my-ggi-board.git](https://gitlab.ow2.org/ggi/my-ggi-board.git)",[12,136,137],{},"Then we will give our project a unique name and choose a visibility level. Here's an example of how it might look:",[12,139,140],{},[141,142],"img",{"alt":143,"src":144},"Repository by URL","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398784/blog/Content%20Images/ospointenminutes/screenshot-1.png",[12,146,147,148,151],{},"When you have configured your desired settings, click ",[115,149,150],{},"Create project"," to continue.",[12,153,154,155,158,159,162,163,166,167,170],{},"Our next step is to configure access privileges. Go to ",[115,156,157],{},"Project Settings > Access Tokens"," and create a ",[115,160,161],{},"Project Access Token"," with ",[115,164,165],{},"API"," privilege and ",[115,168,169],{},"Maintainer"," role. The project's scripts will use these to create the issues and generate the static website dashboard for your OSPO.",[12,172,173,174,178],{},"When the token is created, copy it to a safe place, as ",[175,176,177],"strong",{},"you will never be able to see it again",". Note that some GitLab instances prefer to disable the Project Access Token feature in favor of Personal Access Tokens. This is perfectly okay; the preference won't affect the deployment of this project (see the instructions for more details).",[12,180,181],{},"Here's an example of what you will see at this stage:",[12,183,184],{},[141,185],{"alt":186,"src":187},"Project access tokens","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398784/blog/Content%20Images/ospointenminutes/screenshot-2.png",[12,189,190,191,194,195,198,199,202,203,206],{},"We will then provide this access token to the pipelines and scripts by creating a CI/CD environment variable. Go to ",[115,192,193],{},"Project Settings"," and then ",[115,196,197],{},"CI/CD",". Scroll to the ",[115,200,201],{},"Variables"," section and add a new variable with name ",[115,204,205],{},"GGI_GITLAB_TOKEN",". Input the access token you created in the last step as the value. Here's an example:",[12,208,209],{},[141,210],{"alt":211,"src":212},"Add variable screen","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398784/blog/Content%20Images/ospointenminutes/screenshot-3.png",[12,214,215,216,118,218,221,222,225],{},"We can now execute the pipeline to begin the process of creating your OSPO infrastructure. Go to ",[115,217,197],{},[115,219,220],{},"Pipelines",", and click on ",[115,223,224],{},"Run pipeline",". After a couple of minutes, the pipeline should finish and the website will deploy. You will see something like this when the pipeline finishes:",[12,227,228],{},[141,229],{"alt":230,"src":231},"Pipeline passed screen","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398784/blog/Content%20Images/ospointenminutes/screenshot-4.png",[12,233,234],{},"Infrastructure for your open source program office is now ready!",[95,236,238],{"id":237},"using-the-tools","Using the tools",[12,240,241],{},"The MyGGI project creates a set of 25 activities, along with a nice project board to help you visualize them:",[12,243,244],{},[141,245],{"alt":246,"src":247},"Project board","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398784/blog/Content%20Images/ospointenminutes/screenshot-5.png",[12,249,250],{},"Users can click on specific activities (rendered as issues) to read the description of the activity, understand the tools and resources that might help them complete it, and begin completing relevant scorecards. Users can also define their own perspectives on the activities, as they see them from the organization's specific context. Then they can create tasks to narrow the scope of each activity so they can iterate on it and track progress.",[12,252,253],{},"Their work is displayed on a static website hosted on GitLab Pages and updated nightly according to the organization's progress on various activities and tasks. This web page is especially useful to present the program and its day-to-day evolution to the organization (or the world); participants, stakeholders, and executives can review it to learn more about the various initiatives, see what work is underway, and track the overall development of the organization's open source program office. The initial website looks like this:",[12,255,256],{},[141,257],{"alt":258,"src":259},"Welcome screen of website","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398785/blog/Content%20Images/ospointenminutes/screenshot-6.png",[95,261,263],{"id":262},"running-your-ospo","Running your OSPO",[12,265,266],{},"Selecting an open source program manager to oversee the work on the project boards is beneficial at this step. That person will:",[268,269,270,273,276],"ul",{},[79,271,272],{},"Assign issues to team members to start working on new activities, create scorecards to track the work and associated tasks, and label them as \"In Progress\" instead of \"Not Started\".",[79,274,275],{},"Oversee the evolution of the work as it moves through various iterations, completing the scorecards with local resources and information, and closing issues as tasks are complete.",[79,277,278],{},"Ensure that issues keep making progress and, as team members complete them, assign new ones.",[12,280,281],{},"As changes occur in both the project and its issues, your OSPO's static website will regularly update to reflect the current status of activities, tasks, and the overall progress. After some time, for instance, the dashboard may look like this:",[12,283,284],{},[141,285],{"alt":286,"src":287},"Dashboard with current status","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398794/blog/Content%20Images/ospointenminutes/screenshot-9.png",[12,289,290,291,294],{},"You're now on your way to establishing your organization's open source program office. Don't hesitate to connect with the ",[19,292,35],{"href":33,"rel":293},[]," for help and support as you continue your journey!",[12,296,297],{},[298,299,300],"em",{},"Boris Baldassari is an open source consultant at the Eclipse Foundation Europe, and an active contributor to the OSPO Alliance.",[12,302,303,304,309,310],{},"Cover image by ",[19,305,308],{"href":306,"rel":307},"https://unsplash.com/@claybanks?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText",[],"Clay Banks"," on ",[19,311,314],{"href":312,"rel":313},"https://www.unsplash.com",[],"Unsplash",{"title":316,"searchDepth":317,"depth":317,"links":318},"",2,[319],{"id":64,"depth":317,"text":65,"children":320},[321,323,324],{"id":97,"depth":322,"text":98},3,{"id":237,"depth":322,"text":238},{"id":262,"depth":322,"text":263},"engineering","2023-01-30","Launch your own open source program office using the OSPO Alliance's tools on GitLab","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682593/Blog/Hero%20Images/opensign.jpg",{},true,"/en-us/blog/how-start-ospo-ten-minutes-using-gitlab",{"title":5,"description":327,"ogTitle":5,"ogDescription":327,"noIndex":330,"ogImage":331,"ogUrl":336,"ogSiteName":337,"ogType":338,"canonicalUrls":336},"https://about.gitlab.com/blog/how-start-ospo-ten-minutes-using-gitlab","https://about.gitlab.com","article","how-start-ospo-ten-minutes-using-gitlab","en-us/blog/how-start-ospo-ten-minutes-using-gitlab",[342,343,344],"open source","tutorial","DevOps","BlogPost","ETV0J70aaVcg4h6aMFgIN2XN5maqnzUE-RDm8-jr4do",{"logo":348,"freeTrial":353,"sales":358,"login":363,"items":368,"search":694,"minimal":725,"duo":744,"switchNav":753,"pricingDeployment":764},{"config":349},{"href":350,"dataGaName":351,"dataGaLocation":352},"/","gitlab logo","header",{"text":354,"config":355},"Get free trial",{"href":356,"dataGaName":357,"dataGaLocation":352},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":359,"config":360},"Request a demo",{"href":361,"dataGaName":362,"dataGaLocation":352},"/sales/?contact-topic=request-demo","sales",{"text":364,"config":365},"Sign in",{"href":366,"dataGaName":367,"dataGaLocation":352},"https://gitlab.com/users/sign_in/","sign in",[369,398,497,502,616,672],{"text":370,"config":371,"menu":373},"Platform",{"dataNavLevelOne":372},"platform",{"type":374,"columns":375},"cards",[376,382,390],{"title":370,"description":377,"link":378},"The intelligent orchestration platform for DevSecOps",{"text":379,"config":380},"Explore our Platform",{"href":381,"dataGaName":372,"dataGaLocation":352},"/platform/",{"title":383,"description":384,"link":385},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":386,"config":387},"Meet GitLab Duo",{"href":388,"dataGaName":389,"dataGaLocation":352},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":391,"description":392,"link":393},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":394,"config":395},"Learn more",{"href":396,"dataGaName":397,"dataGaLocation":352},"/why-gitlab/","why gitlab",{"text":399,"left":333,"config":400,"menu":402},"Product",{"dataNavLevelOne":401},"solutions",{"type":403,"link":404,"columns":408,"feature":476},"lists",{"text":405,"config":406},"View all Solutions",{"href":407,"dataGaName":401,"dataGaLocation":352},"/solutions/",[409,432,455],{"title":410,"description":411,"link":412,"items":417},"Automation","CI/CD and automation to accelerate deployment",{"config":413},{"icon":414,"href":415,"dataGaName":416,"dataGaLocation":352},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[418,421,424,428],{"text":197,"config":419},{"href":420,"dataGaLocation":352,"dataGaName":197},"/solutions/continuous-integration/",{"text":383,"config":422},{"href":388,"dataGaLocation":352,"dataGaName":423},"gitlab duo agent platform - product menu",{"text":425,"config":426},"Source Code Management",{"href":427,"dataGaLocation":352,"dataGaName":425},"/solutions/source-code-management/",{"text":429,"config":430},"Automated Software Delivery",{"href":415,"dataGaLocation":352,"dataGaName":431},"Automated software delivery",{"title":433,"description":434,"link":435,"items":440},"Security","Deliver code faster without compromising security",{"config":436},{"href":437,"dataGaName":438,"dataGaLocation":352,"icon":439},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[441,445,450],{"text":442,"config":443},"Application Security Testing",{"href":437,"dataGaName":444,"dataGaLocation":352},"Application security testing",{"text":446,"config":447},"Software Supply Chain Security",{"href":448,"dataGaLocation":352,"dataGaName":449},"/solutions/supply-chain/","Software supply chain security",{"text":451,"config":452},"Software Compliance",{"href":453,"dataGaName":454,"dataGaLocation":352},"/solutions/software-compliance/","software compliance",{"title":456,"link":457,"items":462},"Measurement",{"config":458},{"icon":459,"href":460,"dataGaName":461,"dataGaLocation":352},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[463,467,471],{"text":464,"config":465},"Visibility & Measurement",{"href":460,"dataGaLocation":352,"dataGaName":466},"Visibility and Measurement",{"text":468,"config":469},"Value Stream Management",{"href":470,"dataGaLocation":352,"dataGaName":468},"/solutions/value-stream-management/",{"text":472,"config":473},"Analytics & Insights",{"href":474,"dataGaLocation":352,"dataGaName":475},"/solutions/analytics-and-insights/","Analytics and insights",{"title":477,"type":403,"items":478},"GitLab for",[479,485,491],{"text":480,"config":481},"Enterprise",{"icon":482,"href":483,"dataGaLocation":352,"dataGaName":484},"Building","/enterprise/","enterprise",{"text":486,"config":487},"Small Business",{"icon":488,"href":489,"dataGaLocation":352,"dataGaName":490},"Work","/small-business/","small business",{"text":492,"config":493},"Public Sector",{"icon":494,"href":495,"dataGaLocation":352,"dataGaName":496},"Organization","/solutions/public-sector/","public sector",{"text":498,"config":499},"Pricing",{"href":500,"dataGaName":501,"dataGaLocation":352,"dataNavLevelOne":501},"/pricing/","pricing",{"text":503,"config":504,"menu":506},"Resources",{"dataNavLevelOne":505},"resources",{"type":403,"link":507,"columns":511,"feature":605},{"text":508,"config":509},"View all resources",{"href":510,"dataGaName":505,"dataGaLocation":352},"/resources/",[512,545,572],{"title":513,"items":514},"Getting started",[515,520,525,530,535,540],{"text":516,"config":517},"Install",{"href":518,"dataGaName":519,"dataGaLocation":352},"/install/","install",{"text":521,"config":522},"Quick start guides",{"href":523,"dataGaName":524,"dataGaLocation":352},"/get-started/","quick setup checklists",{"text":526,"config":527},"Learn",{"href":528,"dataGaLocation":352,"dataGaName":529},"https://university.gitlab.com/","learn",{"text":531,"config":532},"Product documentation",{"href":533,"dataGaName":534,"dataGaLocation":352},"https://docs.gitlab.com/","product documentation",{"text":536,"config":537},"Best practice videos",{"href":538,"dataGaName":539,"dataGaLocation":352},"/getting-started-videos/","best practice videos",{"text":541,"config":542},"Integrations",{"href":543,"dataGaName":544,"dataGaLocation":352},"/integrations/","integrations",{"title":546,"items":547},"Discover",[548,553,558,563,567],{"text":549,"config":550},"Customer success stories",{"href":551,"dataGaName":552,"dataGaLocation":352},"/customers/","customer success stories",{"text":554,"config":555},"Blog",{"href":556,"dataGaName":557,"dataGaLocation":352},"/blog/","blog",{"text":559,"config":560},"Demo Hub",{"href":561,"dataGaName":562,"dataGaLocation":352},"/demo-hub/","demo hub",{"text":564,"config":565},"The Source",{"href":566,"dataGaName":557,"dataGaLocation":352},"/the-source/",{"text":568,"config":569},"Remote",{"href":570,"dataGaName":571,"dataGaLocation":352},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":573,"items":574},"Connect",[575,580,585,590,595,600],{"text":576,"config":577},"GitLab Services",{"href":578,"dataGaName":579,"dataGaLocation":352},"/services/","services",{"text":581,"config":582},"Contribute",{"href":583,"dataGaName":584,"dataGaLocation":352},"https://contributors.gitlab.com","contribute",{"text":586,"config":587},"Community",{"href":588,"dataGaName":589,"dataGaLocation":352},"/community/","community",{"text":591,"config":592},"Forum",{"href":593,"dataGaName":594,"dataGaLocation":352},"https://forum.gitlab.com/","forum",{"text":596,"config":597},"Events",{"href":598,"dataGaName":599,"dataGaLocation":352},"/events/","events",{"text":601,"config":602},"Partners",{"href":603,"dataGaName":604,"dataGaLocation":352},"/partners/","partners",{"config":606,"title":609,"text":610,"link":611},{"background":607,"textColor":608},"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":612,"config":613},"Read the latest",{"href":614,"dataGaName":615,"dataGaLocation":352},"/whats-new/","whats new",{"text":617,"config":618,"menu":620},"Company",{"dataNavLevelOne":619},"company",{"type":403,"columns":621},[622],{"items":623},[624,629,635,637,642,647,652,657,662,667],{"text":625,"config":626},"About",{"href":627,"dataGaName":628,"dataGaLocation":352},"/company/","about",{"text":630,"config":631,"footerGa":634},"Jobs",{"href":632,"dataGaName":633,"dataGaLocation":352},"/jobs/","jobs",{"dataGaName":633},{"text":596,"config":636},{"href":598,"dataGaName":599,"dataGaLocation":352},{"text":638,"config":639},"Leadership",{"href":640,"dataGaName":641,"dataGaLocation":352},"/company/team/e-group/","leadership",{"text":643,"config":644},"Handbook",{"href":645,"dataGaName":646,"dataGaLocation":352},"https://handbook.gitlab.com/","handbook",{"text":648,"config":649},"Investor relations",{"href":650,"dataGaName":651,"dataGaLocation":352},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":653,"config":654},"Trust Center",{"href":655,"dataGaName":656,"dataGaLocation":352},"/security/","trust center",{"text":658,"config":659},"AI Transparency Center",{"href":660,"dataGaName":661,"dataGaLocation":352},"/ai-transparency-center/","ai transparency center",{"text":663,"config":664},"Newsletter",{"href":665,"dataGaName":666,"dataGaLocation":352},"/company/contact/#contact-forms","newsletter",{"text":668,"config":669},"Press",{"href":670,"dataGaName":671,"dataGaLocation":352},"/press/","press",{"text":673,"config":674,"menu":675},"Contact us",{"dataNavLevelOne":619},{"type":403,"columns":676},[677],{"items":678},[679,684,689],{"text":680,"config":681},"Talk to sales",{"href":682,"dataGaName":683,"dataGaLocation":352},"/sales/","talk to sales",{"text":685,"config":686},"Support portal",{"href":687,"dataGaName":688,"dataGaLocation":352},"https://support.gitlab.com/hc/en-us","support portal",{"text":690,"config":691},"Customer portal",{"href":692,"dataGaName":693,"dataGaLocation":352},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":695,"login":696,"suggestions":703},"Close",{"text":697,"link":698},"To search repositories and projects, login to",{"text":699,"config":700},"gitlab.com",{"href":366,"dataGaName":701,"dataGaLocation":702},"search login","search",{"text":704,"default":705},"Suggestions",[706,708,712,714,718,722],{"text":383,"config":707},{"href":388,"dataGaName":383,"dataGaLocation":702},{"text":709,"config":710},"Code Suggestions (AI)",{"href":711,"dataGaName":709,"dataGaLocation":702},"/solutions/code-suggestions/",{"text":197,"config":713},{"href":420,"dataGaName":197,"dataGaLocation":702},{"text":715,"config":716},"GitLab on AWS",{"href":717,"dataGaName":715,"dataGaLocation":702},"/partners/technology-partners/aws/",{"text":719,"config":720},"GitLab on Google Cloud",{"href":721,"dataGaName":719,"dataGaLocation":702},"/partners/technology-partners/google-cloud-platform/",{"text":723,"config":724},"Why GitLab?",{"href":396,"dataGaName":723,"dataGaLocation":702},{"freeTrial":726,"mobileIcon":731,"desktopIcon":736,"secondaryButton":739},{"text":727,"config":728},"Start free trial",{"href":729,"dataGaName":357,"dataGaLocation":730},"https://gitlab.com/-/trials/new/","nav",{"altText":732,"config":733},"Gitlab Icon",{"src":734,"dataGaName":735,"dataGaLocation":730},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":732,"config":737},{"src":738,"dataGaName":735,"dataGaLocation":730},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":740,"config":741},"Get Started",{"href":742,"dataGaName":743,"dataGaLocation":730},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":745,"mobileIcon":749,"desktopIcon":751},{"text":746,"config":747},"Learn more about GitLab Duo",{"href":388,"dataGaName":748,"dataGaLocation":730},"gitlab duo",{"altText":732,"config":750},{"src":734,"dataGaName":735,"dataGaLocation":730},{"altText":732,"config":752},{"src":738,"dataGaName":735,"dataGaLocation":730},{"button":754,"mobileIcon":759,"desktopIcon":761},{"text":755,"config":756},"/switch",{"href":757,"dataGaName":758,"dataGaLocation":730},"#contact","switch",{"altText":732,"config":760},{"src":734,"dataGaName":735,"dataGaLocation":730},{"altText":732,"config":762},{"src":763,"dataGaName":735,"dataGaLocation":730},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":765,"mobileIcon":770,"desktopIcon":772},{"text":766,"config":767},"Back to pricing",{"href":500,"dataGaName":768,"dataGaLocation":730,"icon":769},"back to pricing","GoBack",{"altText":732,"config":771},{"src":734,"dataGaName":735,"dataGaLocation":730},{"altText":732,"config":773},{"src":738,"dataGaName":735,"dataGaLocation":730},{"title":775,"titleMobile":776,"button":777,"config":782},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":394,"config":778},{"href":779,"dataGaName":780,"dataGaLocation":781},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":783,"disabled":330},"release",{"data":785},{"text":786,"source":787,"edit":793,"contribute":798,"config":803,"items":808,"minimal":1017},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":788,"config":789},"View page source",{"href":790,"dataGaName":791,"dataGaLocation":792},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":794,"config":795},"Edit this page",{"href":796,"dataGaName":797,"dataGaLocation":792},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":799,"config":800},"Please contribute",{"href":801,"dataGaName":802,"dataGaLocation":792},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":804,"facebook":805,"youtube":806,"linkedin":807},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[809,856,909,953,985],{"title":498,"links":810,"subMenu":825},[811,815,820],{"text":812,"config":813},"View plans",{"href":500,"dataGaName":814,"dataGaLocation":792},"view plans",{"text":816,"config":817},"Why Premium?",{"href":818,"dataGaName":819,"dataGaLocation":792},"/pricing/premium/","why premium",{"text":821,"config":822},"Why Ultimate?",{"href":823,"dataGaName":824,"dataGaLocation":792},"/pricing/ultimate/","why ultimate",[826],{"title":827,"links":828},"Contact Us",[829,832,834,836,841,846,851],{"text":830,"config":831},"Contact sales",{"href":682,"dataGaName":362,"dataGaLocation":792},{"text":685,"config":833},{"href":687,"dataGaName":688,"dataGaLocation":792},{"text":690,"config":835},{"href":692,"dataGaName":693,"dataGaLocation":792},{"text":837,"config":838},"Status",{"href":839,"dataGaName":840,"dataGaLocation":792},"https://status.gitlab.com/","status",{"text":842,"config":843},"Terms of use",{"href":844,"dataGaName":845,"dataGaLocation":792},"/terms/","terms of use",{"text":847,"config":848},"Privacy statement",{"href":849,"dataGaName":850,"dataGaLocation":792},"/privacy/","privacy statement",{"text":852,"config":853},"Cookie preferences",{"dataGaName":854,"dataGaLocation":792,"id":855,"isOneTrustButton":333},"cookie preferences","ot-sdk-btn",{"title":399,"links":857,"subMenu":866},[858,862],{"text":859,"config":860},"DevSecOps platform",{"href":381,"dataGaName":861,"dataGaLocation":792},"devsecops platform",{"text":863,"config":864},"AI-Assisted Development",{"href":388,"dataGaName":865,"dataGaLocation":792},"ai-assisted development",[867],{"title":868,"links":869},"Topics",[870,875,880,884,889,894,899,904],{"text":871,"config":872},"CICD",{"href":873,"dataGaName":874,"dataGaLocation":792},"/topics/ci-cd/","cicd",{"text":876,"config":877},"GitOps",{"href":878,"dataGaName":879,"dataGaLocation":792},"/topics/gitops/","gitops",{"text":344,"config":881},{"href":882,"dataGaName":883,"dataGaLocation":792},"/topics/devops/","devops",{"text":885,"config":886},"Version Control",{"href":887,"dataGaName":888,"dataGaLocation":792},"/topics/version-control/","version control",{"text":890,"config":891},"DevSecOps",{"href":892,"dataGaName":893,"dataGaLocation":792},"/topics/devsecops/","devsecops",{"text":895,"config":896},"Cloud Native",{"href":897,"dataGaName":898,"dataGaLocation":792},"/topics/cloud-native/","cloud native",{"text":900,"config":901},"AI for Coding",{"href":902,"dataGaName":903,"dataGaLocation":792},"/topics/devops/ai-for-coding/","ai for coding",{"text":905,"config":906},"Agentic AI",{"href":907,"dataGaName":908,"dataGaLocation":792},"/topics/agentic-ai/","agentic ai",{"title":910,"links":911},"Solutions",[912,914,916,921,925,928,932,935,937,940,943,948],{"text":442,"config":913},{"href":437,"dataGaName":442,"dataGaLocation":792},{"text":431,"config":915},{"href":415,"dataGaName":416,"dataGaLocation":792},{"text":917,"config":918},"Agile development",{"href":919,"dataGaName":920,"dataGaLocation":792},"/solutions/agile-delivery/","agile delivery",{"text":922,"config":923},"SCM",{"href":427,"dataGaName":924,"dataGaLocation":792},"source code management",{"text":871,"config":926},{"href":420,"dataGaName":927,"dataGaLocation":792},"continuous integration & delivery",{"text":929,"config":930},"Value stream management",{"href":470,"dataGaName":931,"dataGaLocation":792},"value stream management",{"text":876,"config":933},{"href":934,"dataGaName":879,"dataGaLocation":792},"/solutions/gitops/",{"text":480,"config":936},{"href":483,"dataGaName":484,"dataGaLocation":792},{"text":938,"config":939},"Small business",{"href":489,"dataGaName":490,"dataGaLocation":792},{"text":941,"config":942},"Public sector",{"href":495,"dataGaName":496,"dataGaLocation":792},{"text":944,"config":945},"Education",{"href":946,"dataGaName":947,"dataGaLocation":792},"/solutions/education/","education",{"text":949,"config":950},"Financial services",{"href":951,"dataGaName":952,"dataGaLocation":792},"/solutions/finance/","financial services",{"title":503,"links":954},[955,957,959,961,964,966,969,971,973,975,977,979,981,983],{"text":516,"config":956},{"href":518,"dataGaName":519,"dataGaLocation":792},{"text":521,"config":958},{"href":523,"dataGaName":524,"dataGaLocation":792},{"text":526,"config":960},{"href":528,"dataGaName":529,"dataGaLocation":792},{"text":531,"config":962},{"href":533,"dataGaName":963,"dataGaLocation":792},"docs",{"text":554,"config":965},{"href":556,"dataGaName":557,"dataGaLocation":792},{"text":967,"config":968},"What's new",{"href":614,"dataGaName":615,"dataGaLocation":792},{"text":549,"config":970},{"href":551,"dataGaName":552,"dataGaLocation":792},{"text":568,"config":972},{"href":570,"dataGaName":571,"dataGaLocation":792},{"text":576,"config":974},{"href":578,"dataGaName":579,"dataGaLocation":792},{"text":581,"config":976},{"href":583,"dataGaName":584,"dataGaLocation":792},{"text":586,"config":978},{"href":588,"dataGaName":589,"dataGaLocation":792},{"text":591,"config":980},{"href":593,"dataGaName":594,"dataGaLocation":792},{"text":596,"config":982},{"href":598,"dataGaName":599,"dataGaLocation":792},{"text":601,"config":984},{"href":603,"dataGaName":604,"dataGaLocation":792},{"title":617,"links":986},[987,989,991,993,995,997,1001,1006,1008,1010,1012],{"text":625,"config":988},{"href":627,"dataGaName":619,"dataGaLocation":792},{"text":630,"config":990},{"href":632,"dataGaName":633,"dataGaLocation":792},{"text":638,"config":992},{"href":640,"dataGaName":641,"dataGaLocation":792},{"text":643,"config":994},{"href":645,"dataGaName":646,"dataGaLocation":792},{"text":648,"config":996},{"href":650,"dataGaName":651,"dataGaLocation":792},{"text":998,"config":999},"Sustainability",{"href":1000,"dataGaName":998,"dataGaLocation":792},"/sustainability/",{"text":1002,"config":1003},"Diversity, inclusion and belonging (DIB)",{"href":1004,"dataGaName":1005,"dataGaLocation":792},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":653,"config":1007},{"href":655,"dataGaName":656,"dataGaLocation":792},{"text":663,"config":1009},{"href":665,"dataGaName":666,"dataGaLocation":792},{"text":668,"config":1011},{"href":670,"dataGaName":671,"dataGaLocation":792},{"text":1013,"config":1014},"Modern Slavery Transparency Statement",{"href":1015,"dataGaName":1016,"dataGaLocation":792},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1018},[1019,1022,1025],{"text":1020,"config":1021},"Terms",{"href":844,"dataGaName":845,"dataGaLocation":792},{"text":1023,"config":1024},"Cookies",{"dataGaName":854,"dataGaLocation":792,"id":855,"isOneTrustButton":333},{"text":1026,"config":1027},"Privacy",{"href":849,"dataGaName":850,"dataGaLocation":792},[1029],{"id":1030,"title":7,"body":329,"config":1031,"content":1033,"description":329,"extension":1036,"meta":1037,"navigation":333,"path":1038,"seo":1039,"stem":1040,"__hash__":1041},"blogAuthors/en-us/blog/authors/boris-baldassari.yml",{"template":1032},"BlogAuthor",{"name":7,"config":1034},{"headshot":316,"ctfId":1035},"bbaldassari","yml",{},"/en-us/blog/authors/boris-baldassari",{},"en-us/blog/authors/boris-baldassari","WFeJOv_PG80Jf0WJu681DY6PmaceH1pny-3LmfWe2Jw",[1043,1052,1060],{"title":1044,"description":1045,"heroImage":1046,"category":325,"date":1047,"authors":1048,"slug":1051,"externalUrl":329},"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",[1049,1050],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":1053,"description":1054,"heroImage":1055,"category":325,"date":1056,"authors":1057,"slug":1059,"externalUrl":329},"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",[1058],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1061,"description":1062,"heroImage":1063,"category":325,"date":1064,"authors":1065,"slug":1067,"externalUrl":329},"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",[1066],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":1069},[1070,1084,1096,1108],{"id":1071,"categories":1072,"header":1074,"text":1075,"button":1076,"image":1081},"ai-modernization",[1073],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1077,"config":1078},"Get your AI maturity score",{"href":1079,"dataGaName":1080,"dataGaLocation":557},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1082},{"src":1083},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1085,"categories":1086,"header":1088,"text":1075,"button":1089,"image":1093},"devops-modernization",[1087,893],"product","Are you just managing tools or shipping innovation?",{"text":1090,"config":1091},"Get your DevOps maturity score",{"href":1092,"dataGaName":1080,"dataGaLocation":557},"/assessments/devops-modernization-assessment/",{"config":1094},{"src":1095},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1097,"categories":1098,"header":1100,"text":1075,"button":1101,"image":1105},"security-modernization",[1099],"security","Are you trading speed for security?",{"text":1102,"config":1103},"Get your security maturity score",{"href":1104,"dataGaName":1080,"dataGaLocation":557},"/assessments/security-modernization-assessment/",{"config":1106},{"src":1107},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1109,"paths":1110,"header":1113,"text":1114,"button":1115,"image":1120},"github-azure-migration",[1111,1112],"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":1116,"config":1117},"See how GitLab compares to GitHub",{"href":1118,"dataGaName":1119,"dataGaLocation":557},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1121},{"src":1095},{"header":1123,"blurb":1124,"button":1125,"secondaryButton":1130},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1126,"config":1127},"Get your free trial",{"href":1128,"dataGaName":357,"dataGaLocation":1129},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":830,"config":1131},{"href":682,"dataGaName":362,"dataGaLocation":1129},1786803751587]