[{"data":1,"prerenderedAt":1057},["ShallowReactive",2],{"/blog/five-fast-facts-about-docs-as-code-at-gitlab":3,"navigation-en-us":247,"banner-en-us":674,"footer-en-us":684,"blog-post-authors-en-us-Suzanne Selhorn|Susan Tacker|Diana Logan":929,"blog-related-posts-en-us-five-fast-facts-about-docs-as-code-at-gitlab":968,"blog-promotions-en-us":993,"next-steps-en-us":1047},{"id":4,"title":5,"authors":6,"body":10,"category":225,"date":226,"description":227,"extension":228,"externalUrl":229,"faq":229,"featured":230,"heroImage":231,"meta":232,"navigation":233,"path":234,"seo":235,"slug":239,"stem":240,"tags":241,"template":245,"updatedDate":229,"__hash__":246},"blogPosts/en-us/blog/five-fast-facts-about-docs-as-code-at-gitlab.md","Five fast facts about docs as code at GitLab",[7,8,9],"Suzanne Selhorn","Susan Tacker","Diana Logan",{"type":11,"value":12,"toc":216},"minimark",[13,17,27,30,38,41,46,49,64,71,74,77,81,84,87,90,93,99,102,105,108,114,117,121,124,130,133,137,140,143,146,152,167,171,179,185,188,191,194,207],[14,15,16],"p",{},"At GitLab, we use GitLab as our single platform to document GitLab by using a “docs-as-code” workflow. Sound confusing?",[14,18,19,20,26],{},"The GitLab technical writing team uses GitLab to plan, create, review, edit, and publish the ",[21,22,25],"a",{"href":23,"rel":24},"https://docs.gitlab.com/",[],"GitLab documentation",". And because we use the docs-as-code workflow, we can produce a large amount of content with a small, passionate, efficient team.",[14,28,29],{},"If you aren’t familiar with docs as code, here’s a quick definition:",[14,31,32,37],{},[21,33,36],{"href":34,"rel":35},"https://idratherbewriting.com/trends/trends-to-follow-or-forget-docs-as-code.html#what-is-docs-as-code",[],"Docs as code"," is a way to develop and publish product documentation. It uses the same tools and processes as software code development, placing the documentation files along with the code files in a repository for version control.",[14,39,40],{},"If you are wondering whether your organization could adopt a docs-as-code workflow in GitLab, read on for five fast facts that help explain how our team does it.",[42,43,45],"h2",{"id":44},"we-use-gitlab-to-plan-both-gitlab-features-and-docs-content-updates","We use GitLab to plan both GitLab features and docs content updates",[14,47,48],{},"Our product managers, UX designers, engineers, and quality assurance teams work together to plan our feature work. Maybe when you’re planning releases, you use a Kanban board, or you create issues in a third-party tool.",[14,50,51,52,57,58,63],{},"At GitLab, we use epics and ",[21,53,56],{"href":54,"rel":55},"https://gitlab.com/gitlab-org/technical-writing/-/issues/680",[],"issues"," to plan our work, and ",[21,59,62],{"href":60,"rel":61},"https://gitlab.com/groups/gitlab-org/-/boards/4340643?label_name%5B%5D=Category%3ADocs%20Site",[],"issue boards"," to track our progress. We value transparency, so all of this information is available to everyone, including discussions about planning. The tech writing team has visibility into the status of development at any time.",[14,65,66],{},[67,68],"img",{"alt":69,"src":70},"planning issue","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398839/blog/Content%20Images/planning_issue.png",[14,72,73],{},"If we have larger doc efforts, we track them in GitLab, make the changes by using GitLab, and mark issues as done in GitLab. If a year passes and we want to remember why we made a change, we search GitLab and find who made the change and why. If you’re working in many different tools right now, imagine what it would be like to view everything in one place. Everything feels faster and more efficient. You skip the time you’d normally spend going through emails and websites and Slack to find lost discussions. It’s all here in GitLab.",[14,75,76],{},"And if you love your wiki and don’t want to go without it, we have a wiki feature too.",[42,78,80],{"id":79},"we-use-gitlab-to-give-and-receive-feedback-on-the-docs","We use GitLab to give and receive feedback on the docs",[14,82,83],{},"If you’ve been a writer for any amount of time, you know what a pain it can be to get people to review your content.",[14,85,86],{},"At GitLab, our developers write the first draft of content for all our new features. They save the content in the same repository as their code. Feature documentation is part of our development “definition of done.” They assign the draft content to our writers, who review it, add suggestions, and send their ideas and edits back to the authors.",[14,88,89],{},"The writers themselves also open merge requests (MRs) for content changes. And no matter who opens the MR (the writer, a developer, a support engineer, a community contributor), we all have the ability to easily comment on each other’s work.",[14,91,92],{},"In a merge request, it’s as simple as selecting a Suggestion button. You can comment on one line or several. You can provide changes or edits, and the person who authored the merge request can easily apply your change, or create their own competing suggestion, and you can discuss it. To invite others to the conversation, you can type their username in a comment, and they see your comment as a to-do item in GitLab. In this way, you can discuss any change. It’s transparent and inclusive.",[14,94,95],{},[67,96],{"alt":97,"src":98},"making a suggestion","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782399059/blog/Content%20Images/suggestion.png",[14,100,101],{},"Because the doc content is in markdown, which is similar to plain text, it’s easy to view the differences between file versions, and to see who committed which change.",[14,103,104],{},"Maybe you’ve worked in places where reviews were done in PDFs, or Word docs, or Google docs with comments. When you try this workflow, you'll see how much more efficient the process is. No one is passing around outdated versions of documents. No one is making updates that inadvertently wipe out someone else’s comments.",[14,106,107],{},"And if anyone ever wants to know why we made a change, it’s easy to view the history of the page or even view who is to “blame” for a specific line.",[14,109,110],{},[67,111],{"alt":112,"src":113},"who to blame?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397997/blog/Content%20Images/blame.png",[14,115,116],{},"You don’t have to store versions of a PDF document and try to search for who suggested which change. It’s all in GitLab.",[42,118,120],{"id":119},"we-use-gitlab-to-preview-the-docs-content","We use GitLab to preview the docs content",[14,122,123],{},"At GitLab, we have tools to generate the docs site content locally, but you can also easily share a view of the docs site right from a merge request. If you’re playing with an idea and you want to show someone, you open a merge request, generate what we call “a review app” and voila, the changed docs site is available at a publicly available URL.",[14,125,126],{},[67,127],{"alt":128,"src":129},"the review app","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782399273/blog/Content%20Images/view_app.png",[14,131,132],{},"Your changes are visible, and you can iterate on them or commit as-is. Which brings us to another one of the most useful features we have at GitLab.",[42,134,136],{"id":135},"we-use-gitlab-to-test-every-content-change","We use GitLab to test every content change",[14,138,139],{},"Maybe you’re using a third-party tool to test the links in your docs, or to check spelling and grammar rules.",[14,141,142],{},"We are using third-party tools (Nanoc for links, Vale for spelling and grammar), but like everything else, these tools can be incorporated into GitLab, and into the writer workflow.",[14,144,145],{},"Each writer has our tools installed locally and can view everything, from the document’s reading level to passive and active voice fixes on their local machine. But for those contributors who don’t have the toolset, we run a version of our tests in a pipeline as part of every commit.",[14,147,148],{},[67,149],{"alt":150,"src":151},"a lint error","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398640/blog/Content%20Images/lint_error_2.png",[14,153,154,155,160,161,166],{},"If you’re a developer and you don’t consider yourself to be an expert writer, you might find that the pipeline failed on your merge request because of an important grammar or branding rule. We’ve defined a list of many rules, and assigned levels of importance to them. So not only do we have a ",[21,156,159],{"href":157,"rel":158},"https://docs.gitlab.com/development/documentation/styleguide/",[],"style guide"," and ",[21,162,165],{"href":163,"rel":164},"https://docs.gitlab.com/development/documentation/styleguide/word_list/",[],"word list",", but we also run tests to ensure our content doesn’t stray too far from those rules.",[42,168,170],{"id":169},"we-use-gitlab-to-generate-the-html-output-and-we-host-the-output-on-gitlab-pages","We use GitLab to generate the HTML output and we host the output on GitLab Pages",[14,172,173,174,178],{},"Our CI/CD pipeline converts our markdown content and compiles it into HTML. Then we host this output on GitLab Pages, at the ",[21,175,177],{"href":23,"rel":176},[],"docs.gitlab.com"," website.",[14,180,181],{},[67,182],{"alt":183,"src":184},"the pipeline","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398839/blog/Content%20Images/pipeline2.png",[14,186,187],{},"Having the output generated by a pipeline means that we can update the docs site whenever we want. While the product is released once a month, we update the docs site once every hour. That means docs.gitlab.com always contains the most up-to-date content available, sometimes even pre-release information. Since the development planning and implementation issues are typically open to the public as part of our transparency value, pre-announcing features isn’t an issue.",[14,189,190],{},"So as you can see, for a multitude of reasons, we love our docs-as-code workflow. It can be an adjustment to transition to one tool for all of your doc needs, but GitLab supports the full writer workflow, no matter who writes your content. And we know, because we’ve been using it for years.",[14,192,193],{},"Learn more about the tech writing docs-as-code work at GitLab:",[195,196,199,200],"figure",{"className":197},[198],"video_container","\n  ",[201,202,206],"iframe",{"src":203,"frameBorder":204,"allowFullScreen":205},"https://www.youtube.com/embed/ZlabtdA-gZE","0","true"," ",[14,208,209,210,215],{},"To learn more about contributing to our open source documentation, check out our instructions in “",[21,211,214],{"href":212,"rel":213},"https://docs.gitlab.com/development/documentation/workflow/#how-to-update-the-docs",[],"How to update the docs",".” We welcome your contributions!",{"title":217,"searchDepth":218,"depth":218,"links":219},"",2,[220,221,222,223,224],{"id":44,"depth":218,"text":45},{"id":79,"depth":218,"text":80},{"id":119,"depth":218,"text":120},{"id":135,"depth":218,"text":136},{"id":169,"depth":218,"text":170},"insights","2022-10-12","Here are five fast facts about how GitLab technical writers use GitLab in a docs-as-code workflow.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660257/Blog/Hero%20Images/pen.jpg",{},true,"/en-us/blog/five-fast-facts-about-docs-as-code-at-gitlab",{"title":5,"description":227,"ogTitle":5,"ogDescription":227,"noIndex":230,"ogImage":231,"ogUrl":236,"ogSiteName":237,"ogType":238,"canonicalUrls":236},"https://about.gitlab.com/blog/five-fast-facts-about-docs-as-code-at-gitlab","https://about.gitlab.com","article","five-fast-facts-about-docs-as-code-at-gitlab","en-us/blog/five-fast-facts-about-docs-as-code-at-gitlab",[242,243,244],"careers","contributors","inside GitLab","BlogPost","FXJEh9qbouSI1DKwAJzC8L642m5LLb00SQmDcaLRIm4",{"logo":248,"freeTrial":253,"sales":258,"login":263,"items":268,"search":594,"minimal":625,"duo":644,"switchNav":653,"pricingDeployment":664},{"config":249},{"href":250,"dataGaName":251,"dataGaLocation":252},"/","gitlab logo","header",{"text":254,"config":255},"Get free trial",{"href":256,"dataGaName":257,"dataGaLocation":252},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":259,"config":260},"Request a demo",{"href":261,"dataGaName":262,"dataGaLocation":252},"/sales/?contact-topic=request-demo","sales",{"text":264,"config":265},"Sign in",{"href":266,"dataGaName":267,"dataGaLocation":252},"https://gitlab.com/users/sign_in/","sign in",[269,298,398,403,516,572],{"text":270,"config":271,"menu":273},"Platform",{"dataNavLevelOne":272},"platform",{"type":274,"columns":275},"cards",[276,282,290],{"title":270,"description":277,"link":278},"The intelligent orchestration platform for DevSecOps",{"text":279,"config":280},"Explore our Platform",{"href":281,"dataGaName":272,"dataGaLocation":252},"/platform/",{"title":283,"description":284,"link":285},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":286,"config":287},"Meet GitLab Duo",{"href":288,"dataGaName":289,"dataGaLocation":252},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":291,"description":292,"link":293},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":294,"config":295},"Learn more",{"href":296,"dataGaName":297,"dataGaLocation":252},"/why-gitlab/","why gitlab",{"text":299,"left":233,"config":300,"menu":302},"Product",{"dataNavLevelOne":301},"solutions",{"type":303,"link":304,"columns":308,"feature":377},"lists",{"text":305,"config":306},"View all Solutions",{"href":307,"dataGaName":301,"dataGaLocation":252},"/solutions/",[309,333,356],{"title":310,"description":311,"link":312,"items":317},"Automation","CI/CD and automation to accelerate deployment",{"config":313},{"icon":314,"href":315,"dataGaName":316,"dataGaLocation":252},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[318,322,325,329],{"text":319,"config":320},"CI/CD",{"href":321,"dataGaLocation":252,"dataGaName":319},"/solutions/continuous-integration/",{"text":283,"config":323},{"href":288,"dataGaLocation":252,"dataGaName":324},"gitlab duo agent platform - product menu",{"text":326,"config":327},"Source Code Management",{"href":328,"dataGaLocation":252,"dataGaName":326},"/solutions/source-code-management/",{"text":330,"config":331},"Automated Software Delivery",{"href":315,"dataGaLocation":252,"dataGaName":332},"Automated software delivery",{"title":334,"description":335,"link":336,"items":341},"Security","Deliver code faster without compromising security",{"config":337},{"href":338,"dataGaName":339,"dataGaLocation":252,"icon":340},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[342,346,351],{"text":343,"config":344},"Application Security Testing",{"href":338,"dataGaName":345,"dataGaLocation":252},"Application security testing",{"text":347,"config":348},"Software Supply Chain Security",{"href":349,"dataGaLocation":252,"dataGaName":350},"/solutions/supply-chain/","Software supply chain security",{"text":352,"config":353},"Software Compliance",{"href":354,"dataGaName":355,"dataGaLocation":252},"/solutions/software-compliance/","software compliance",{"title":357,"link":358,"items":363},"Measurement",{"config":359},{"icon":360,"href":361,"dataGaName":362,"dataGaLocation":252},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[364,368,372],{"text":365,"config":366},"Visibility & Measurement",{"href":361,"dataGaLocation":252,"dataGaName":367},"Visibility and Measurement",{"text":369,"config":370},"Value Stream Management",{"href":371,"dataGaLocation":252,"dataGaName":369},"/solutions/value-stream-management/",{"text":373,"config":374},"Analytics & Insights",{"href":375,"dataGaLocation":252,"dataGaName":376},"/solutions/analytics-and-insights/","Analytics and insights",{"title":378,"type":303,"items":379},"GitLab for",[380,386,392],{"text":381,"config":382},"Enterprise",{"icon":383,"href":384,"dataGaLocation":252,"dataGaName":385},"Building","/enterprise/","enterprise",{"text":387,"config":388},"Small Business",{"icon":389,"href":390,"dataGaLocation":252,"dataGaName":391},"Work","/small-business/","small business",{"text":393,"config":394},"Public Sector",{"icon":395,"href":396,"dataGaLocation":252,"dataGaName":397},"Organization","/solutions/public-sector/","public sector",{"text":399,"config":400},"Pricing",{"href":401,"dataGaName":402,"dataGaLocation":252,"dataNavLevelOne":402},"/pricing/","pricing",{"text":404,"config":405,"menu":407},"Resources",{"dataNavLevelOne":406},"resources",{"type":303,"link":408,"columns":412,"feature":505},{"text":409,"config":410},"View all resources",{"href":411,"dataGaName":406,"dataGaLocation":252},"/resources/",[413,445,472],{"title":414,"items":415},"Getting started",[416,421,426,431,435,440],{"text":417,"config":418},"Install",{"href":419,"dataGaName":420,"dataGaLocation":252},"/install/","install",{"text":422,"config":423},"Quick start guides",{"href":424,"dataGaName":425,"dataGaLocation":252},"/get-started/","quick setup checklists",{"text":427,"config":428},"Learn",{"href":429,"dataGaLocation":252,"dataGaName":430},"https://university.gitlab.com/","learn",{"text":432,"config":433},"Product documentation",{"href":23,"dataGaName":434,"dataGaLocation":252},"product documentation",{"text":436,"config":437},"Best practice videos",{"href":438,"dataGaName":439,"dataGaLocation":252},"/getting-started-videos/","best practice videos",{"text":441,"config":442},"Integrations",{"href":443,"dataGaName":444,"dataGaLocation":252},"/integrations/","integrations",{"title":446,"items":447},"Discover",[448,453,458,463,467],{"text":449,"config":450},"Customer success stories",{"href":451,"dataGaName":452,"dataGaLocation":252},"/customers/","customer success stories",{"text":454,"config":455},"Blog",{"href":456,"dataGaName":457,"dataGaLocation":252},"/blog/","blog",{"text":459,"config":460},"Demo Hub",{"href":461,"dataGaName":462,"dataGaLocation":252},"/demo-hub/","demo hub",{"text":464,"config":465},"The Source",{"href":466,"dataGaName":457,"dataGaLocation":252},"/the-source/",{"text":468,"config":469},"Remote",{"href":470,"dataGaName":471,"dataGaLocation":252},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":473,"items":474},"Connect",[475,480,485,490,495,500],{"text":476,"config":477},"GitLab Services",{"href":478,"dataGaName":479,"dataGaLocation":252},"/services/","services",{"text":481,"config":482},"Contribute",{"href":483,"dataGaName":484,"dataGaLocation":252},"https://contributors.gitlab.com","contribute",{"text":486,"config":487},"Community",{"href":488,"dataGaName":489,"dataGaLocation":252},"/community/","community",{"text":491,"config":492},"Forum",{"href":493,"dataGaName":494,"dataGaLocation":252},"https://forum.gitlab.com/","forum",{"text":496,"config":497},"Events",{"href":498,"dataGaName":499,"dataGaLocation":252},"/events/","events",{"text":501,"config":502},"Partners",{"href":503,"dataGaName":504,"dataGaLocation":252},"/partners/","partners",{"config":506,"title":509,"text":510,"link":511},{"background":507,"textColor":508},"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":512,"config":513},"Read the latest",{"href":514,"dataGaName":515,"dataGaLocation":252},"/whats-new/","whats new",{"text":517,"config":518,"menu":520},"Company",{"dataNavLevelOne":519},"company",{"type":303,"columns":521},[522],{"items":523},[524,529,535,537,542,547,552,557,562,567],{"text":525,"config":526},"About",{"href":527,"dataGaName":528,"dataGaLocation":252},"/company/","about",{"text":530,"config":531,"footerGa":534},"Jobs",{"href":532,"dataGaName":533,"dataGaLocation":252},"/jobs/","jobs",{"dataGaName":533},{"text":496,"config":536},{"href":498,"dataGaName":499,"dataGaLocation":252},{"text":538,"config":539},"Leadership",{"href":540,"dataGaName":541,"dataGaLocation":252},"/company/team/e-group/","leadership",{"text":543,"config":544},"Handbook",{"href":545,"dataGaName":546,"dataGaLocation":252},"https://handbook.gitlab.com/","handbook",{"text":548,"config":549},"Investor relations",{"href":550,"dataGaName":551,"dataGaLocation":252},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":553,"config":554},"Trust Center",{"href":555,"dataGaName":556,"dataGaLocation":252},"/security/","trust center",{"text":558,"config":559},"AI Transparency Center",{"href":560,"dataGaName":561,"dataGaLocation":252},"/ai-transparency-center/","ai transparency center",{"text":563,"config":564},"Newsletter",{"href":565,"dataGaName":566,"dataGaLocation":252},"/company/contact/#contact-forms","newsletter",{"text":568,"config":569},"Press",{"href":570,"dataGaName":571,"dataGaLocation":252},"/press/","press",{"text":573,"config":574,"menu":575},"Contact us",{"dataNavLevelOne":519},{"type":303,"columns":576},[577],{"items":578},[579,584,589],{"text":580,"config":581},"Talk to sales",{"href":582,"dataGaName":583,"dataGaLocation":252},"/sales/","talk to sales",{"text":585,"config":586},"Support portal",{"href":587,"dataGaName":588,"dataGaLocation":252},"https://support.gitlab.com/hc/en-us","support portal",{"text":590,"config":591},"Customer portal",{"href":592,"dataGaName":593,"dataGaLocation":252},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":595,"login":596,"suggestions":603},"Close",{"text":597,"link":598},"To search repositories and projects, login to",{"text":599,"config":600},"gitlab.com",{"href":266,"dataGaName":601,"dataGaLocation":602},"search login","search",{"text":604,"default":605},"Suggestions",[606,608,612,614,618,622],{"text":283,"config":607},{"href":288,"dataGaName":283,"dataGaLocation":602},{"text":609,"config":610},"Code Suggestions (AI)",{"href":611,"dataGaName":609,"dataGaLocation":602},"/solutions/code-suggestions/",{"text":319,"config":613},{"href":321,"dataGaName":319,"dataGaLocation":602},{"text":615,"config":616},"GitLab on AWS",{"href":617,"dataGaName":615,"dataGaLocation":602},"/partners/technology-partners/aws/",{"text":619,"config":620},"GitLab on Google Cloud",{"href":621,"dataGaName":619,"dataGaLocation":602},"/partners/technology-partners/google-cloud-platform/",{"text":623,"config":624},"Why GitLab?",{"href":296,"dataGaName":623,"dataGaLocation":602},{"freeTrial":626,"mobileIcon":631,"desktopIcon":636,"secondaryButton":639},{"text":627,"config":628},"Start free trial",{"href":629,"dataGaName":257,"dataGaLocation":630},"https://gitlab.com/-/trials/new/","nav",{"altText":632,"config":633},"Gitlab Icon",{"src":634,"dataGaName":635,"dataGaLocation":630},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":632,"config":637},{"src":638,"dataGaName":635,"dataGaLocation":630},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":640,"config":641},"Get Started",{"href":642,"dataGaName":643,"dataGaLocation":630},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":645,"mobileIcon":649,"desktopIcon":651},{"text":646,"config":647},"Learn more about GitLab Duo",{"href":288,"dataGaName":648,"dataGaLocation":630},"gitlab duo",{"altText":632,"config":650},{"src":634,"dataGaName":635,"dataGaLocation":630},{"altText":632,"config":652},{"src":638,"dataGaName":635,"dataGaLocation":630},{"button":654,"mobileIcon":659,"desktopIcon":661},{"text":655,"config":656},"/switch",{"href":657,"dataGaName":658,"dataGaLocation":630},"#contact","switch",{"altText":632,"config":660},{"src":634,"dataGaName":635,"dataGaLocation":630},{"altText":632,"config":662},{"src":663,"dataGaName":635,"dataGaLocation":630},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":665,"mobileIcon":670,"desktopIcon":672},{"text":666,"config":667},"Back to pricing",{"href":401,"dataGaName":668,"dataGaLocation":630,"icon":669},"back to pricing","GoBack",{"altText":632,"config":671},{"src":634,"dataGaName":635,"dataGaLocation":630},{"altText":632,"config":673},{"src":638,"dataGaName":635,"dataGaLocation":630},{"title":675,"titleMobile":676,"button":677,"config":682},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":294,"config":678},{"href":679,"dataGaName":680,"dataGaLocation":681},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":683,"disabled":230},"release",{"data":685},{"text":686,"source":687,"edit":693,"contribute":698,"config":703,"items":708,"minimal":918},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":688,"config":689},"View page source",{"href":690,"dataGaName":691,"dataGaLocation":692},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":694,"config":695},"Edit this page",{"href":696,"dataGaName":697,"dataGaLocation":692},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":699,"config":700},"Please contribute",{"href":701,"dataGaName":702,"dataGaLocation":692},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":704,"facebook":705,"youtube":706,"linkedin":707},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[709,756,810,854,886],{"title":399,"links":710,"subMenu":725},[711,715,720],{"text":712,"config":713},"View plans",{"href":401,"dataGaName":714,"dataGaLocation":692},"view plans",{"text":716,"config":717},"Why Premium?",{"href":718,"dataGaName":719,"dataGaLocation":692},"/pricing/premium/","why premium",{"text":721,"config":722},"Why Ultimate?",{"href":723,"dataGaName":724,"dataGaLocation":692},"/pricing/ultimate/","why ultimate",[726],{"title":727,"links":728},"Contact Us",[729,732,734,736,741,746,751],{"text":730,"config":731},"Contact sales",{"href":582,"dataGaName":262,"dataGaLocation":692},{"text":585,"config":733},{"href":587,"dataGaName":588,"dataGaLocation":692},{"text":590,"config":735},{"href":592,"dataGaName":593,"dataGaLocation":692},{"text":737,"config":738},"Status",{"href":739,"dataGaName":740,"dataGaLocation":692},"https://status.gitlab.com/","status",{"text":742,"config":743},"Terms of use",{"href":744,"dataGaName":745,"dataGaLocation":692},"/terms/","terms of use",{"text":747,"config":748},"Privacy statement",{"href":749,"dataGaName":750,"dataGaLocation":692},"/privacy/","privacy statement",{"text":752,"config":753},"Cookie preferences",{"dataGaName":754,"dataGaLocation":692,"id":755,"isOneTrustButton":233},"cookie preferences","ot-sdk-btn",{"title":299,"links":757,"subMenu":766},[758,762],{"text":759,"config":760},"DevSecOps platform",{"href":281,"dataGaName":761,"dataGaLocation":692},"devsecops platform",{"text":763,"config":764},"AI-Assisted Development",{"href":288,"dataGaName":765,"dataGaLocation":692},"ai-assisted development",[767],{"title":768,"links":769},"Topics",[770,775,780,785,790,795,800,805],{"text":771,"config":772},"CICD",{"href":773,"dataGaName":774,"dataGaLocation":692},"/topics/ci-cd/","cicd",{"text":776,"config":777},"GitOps",{"href":778,"dataGaName":779,"dataGaLocation":692},"/topics/gitops/","gitops",{"text":781,"config":782},"DevOps",{"href":783,"dataGaName":784,"dataGaLocation":692},"/topics/devops/","devops",{"text":786,"config":787},"Version Control",{"href":788,"dataGaName":789,"dataGaLocation":692},"/topics/version-control/","version control",{"text":791,"config":792},"DevSecOps",{"href":793,"dataGaName":794,"dataGaLocation":692},"/topics/devsecops/","devsecops",{"text":796,"config":797},"Cloud Native",{"href":798,"dataGaName":799,"dataGaLocation":692},"/topics/cloud-native/","cloud native",{"text":801,"config":802},"AI for Coding",{"href":803,"dataGaName":804,"dataGaLocation":692},"/topics/devops/ai-for-coding/","ai for coding",{"text":806,"config":807},"Agentic AI",{"href":808,"dataGaName":809,"dataGaLocation":692},"/topics/agentic-ai/","agentic ai",{"title":811,"links":812},"Solutions",[813,815,817,822,826,829,833,836,838,841,844,849],{"text":343,"config":814},{"href":338,"dataGaName":343,"dataGaLocation":692},{"text":332,"config":816},{"href":315,"dataGaName":316,"dataGaLocation":692},{"text":818,"config":819},"Agile development",{"href":820,"dataGaName":821,"dataGaLocation":692},"/solutions/agile-delivery/","agile delivery",{"text":823,"config":824},"SCM",{"href":328,"dataGaName":825,"dataGaLocation":692},"source code management",{"text":771,"config":827},{"href":321,"dataGaName":828,"dataGaLocation":692},"continuous integration & delivery",{"text":830,"config":831},"Value stream management",{"href":371,"dataGaName":832,"dataGaLocation":692},"value stream management",{"text":776,"config":834},{"href":835,"dataGaName":779,"dataGaLocation":692},"/solutions/gitops/",{"text":381,"config":837},{"href":384,"dataGaName":385,"dataGaLocation":692},{"text":839,"config":840},"Small business",{"href":390,"dataGaName":391,"dataGaLocation":692},{"text":842,"config":843},"Public sector",{"href":396,"dataGaName":397,"dataGaLocation":692},{"text":845,"config":846},"Education",{"href":847,"dataGaName":848,"dataGaLocation":692},"/solutions/education/","education",{"text":850,"config":851},"Financial services",{"href":852,"dataGaName":853,"dataGaLocation":692},"/solutions/finance/","financial services",{"title":404,"links":855},[856,858,860,862,865,867,870,872,874,876,878,880,882,884],{"text":417,"config":857},{"href":419,"dataGaName":420,"dataGaLocation":692},{"text":422,"config":859},{"href":424,"dataGaName":425,"dataGaLocation":692},{"text":427,"config":861},{"href":429,"dataGaName":430,"dataGaLocation":692},{"text":432,"config":863},{"href":23,"dataGaName":864,"dataGaLocation":692},"docs",{"text":454,"config":866},{"href":456,"dataGaName":457,"dataGaLocation":692},{"text":868,"config":869},"What's new",{"href":514,"dataGaName":515,"dataGaLocation":692},{"text":449,"config":871},{"href":451,"dataGaName":452,"dataGaLocation":692},{"text":468,"config":873},{"href":470,"dataGaName":471,"dataGaLocation":692},{"text":476,"config":875},{"href":478,"dataGaName":479,"dataGaLocation":692},{"text":481,"config":877},{"href":483,"dataGaName":484,"dataGaLocation":692},{"text":486,"config":879},{"href":488,"dataGaName":489,"dataGaLocation":692},{"text":491,"config":881},{"href":493,"dataGaName":494,"dataGaLocation":692},{"text":496,"config":883},{"href":498,"dataGaName":499,"dataGaLocation":692},{"text":501,"config":885},{"href":503,"dataGaName":504,"dataGaLocation":692},{"title":517,"links":887},[888,890,892,894,896,898,902,907,909,911,913],{"text":525,"config":889},{"href":527,"dataGaName":519,"dataGaLocation":692},{"text":530,"config":891},{"href":532,"dataGaName":533,"dataGaLocation":692},{"text":538,"config":893},{"href":540,"dataGaName":541,"dataGaLocation":692},{"text":543,"config":895},{"href":545,"dataGaName":546,"dataGaLocation":692},{"text":548,"config":897},{"href":550,"dataGaName":551,"dataGaLocation":692},{"text":899,"config":900},"Sustainability",{"href":901,"dataGaName":899,"dataGaLocation":692},"/sustainability/",{"text":903,"config":904},"Diversity, inclusion and belonging (DIB)",{"href":905,"dataGaName":906,"dataGaLocation":692},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":553,"config":908},{"href":555,"dataGaName":556,"dataGaLocation":692},{"text":563,"config":910},{"href":565,"dataGaName":566,"dataGaLocation":692},{"text":568,"config":912},{"href":570,"dataGaName":571,"dataGaLocation":692},{"text":914,"config":915},"Modern Slavery Transparency Statement",{"href":916,"dataGaName":917,"dataGaLocation":692},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":919},[920,923,926],{"text":921,"config":922},"Terms",{"href":744,"dataGaName":745,"dataGaLocation":692},{"text":924,"config":925},"Cookies",{"dataGaName":754,"dataGaLocation":692,"id":755,"isOneTrustButton":233},{"text":927,"config":928},"Privacy",{"href":749,"dataGaName":750,"dataGaLocation":692},[930,944,956],{"id":931,"title":7,"body":229,"config":932,"content":934,"description":229,"extension":938,"meta":939,"navigation":233,"path":940,"seo":941,"stem":942,"__hash__":943},"blogAuthors/en-us/blog/authors/suzanne-selhorn.yml",{"template":933},"BlogAuthor",{"name":7,"config":935},{"headshot":936,"ctfId":937},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1755616156/vboecuoyo8tjfdis7c5a.jpg","6SK0DpWNK5NmfLyn2vWMPI","yml",{},"/en-us/blog/authors/suzanne-selhorn",{},"en-us/blog/authors/suzanne-selhorn","CiU5TOoNLo7BlyHAPSbAR41rLuSx950NfJfaPG1rjZI",{"id":945,"title":8,"body":229,"config":946,"content":947,"description":229,"extension":938,"meta":951,"navigation":233,"path":952,"seo":953,"stem":954,"__hash__":955},"blogAuthors/en-us/blog/authors/susan-tacker.yml",{"template":933},{"name":8,"config":948},{"headshot":949,"ctfId":950},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660253/Blog/Author%20Headshots/susantacker-headshot.jpg","6uxN75wAjT3afaKtVlr9GM",{},"/en-us/blog/authors/susan-tacker",{},"en-us/blog/authors/susan-tacker","h7vgK-KMZACM5px7XT9CQ_bYRNV9VtohEWM2y-5eA7o",{"id":957,"title":9,"body":229,"config":958,"content":959,"description":229,"extension":938,"meta":963,"navigation":233,"path":964,"seo":965,"stem":966,"__hash__":967},"blogAuthors/en-us/blog/authors/diana-logan.yml",{"template":933},{"name":9,"config":960},{"headshot":961,"ctfId":962},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","6poIwhQe6W9ysm5rBuSPXX",{},"/en-us/blog/authors/diana-logan",{},"en-us/blog/authors/diana-logan","abhZHI7covkEFaBG5GwqnR-muafYHLwlFfFWAEoEzqA",[969,977,985],{"title":970,"description":971,"heroImage":972,"category":225,"date":973,"authors":974,"slug":976,"externalUrl":229},"How we overhauled GitLab navigation","Users weren't getting what they needed from our navigation. Here are the steps we took to turn that experience around.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682884/Blog/Hero%20Images/navigation.jpg","2023-08-15",[975],"Ashley Knobloch","navigation-research-blog-post",{"title":978,"description":979,"heroImage":980,"category":225,"date":981,"authors":982,"slug":984,"externalUrl":229},"Beautifying our UI: Giving GitLab build features a fresh look","Get an inside look at how we are improving the usability of GitLab build features with multiple visual design improvements.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682807/Blog/Hero%20Images/beautify.jpg","2023-07-05",[983],"Veethika Mishra","beautifying-of-our-ui",{"title":986,"description":987,"heroImage":988,"category":225,"date":989,"authors":990,"slug":992,"externalUrl":229},"4 best practices leading orgs to release software faster","GitLab's 2023 Global DevSecOps Survey illuminates the strategies that organizations deploying more frequently have in common.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663908/Blog/Hero%20Images/2023-devsecops-report-blog-banner2.png","2023-06-08",[991],"Kristina Weis","best-practices-leading-orgs-to-release-software-faster",{"promotions":994},[995,1009,1021,1033],{"id":996,"categories":997,"header":999,"text":1000,"button":1001,"image":1006},"ai-modernization",[998],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1002,"config":1003},"Get your AI maturity score",{"href":1004,"dataGaName":1005,"dataGaLocation":457},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1007},{"src":1008},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1010,"categories":1011,"header":1013,"text":1000,"button":1014,"image":1018},"devops-modernization",[1012,794],"product","Are you just managing tools or shipping innovation?",{"text":1015,"config":1016},"Get your DevOps maturity score",{"href":1017,"dataGaName":1005,"dataGaLocation":457},"/assessments/devops-modernization-assessment/",{"config":1019},{"src":1020},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1022,"categories":1023,"header":1025,"text":1000,"button":1026,"image":1030},"security-modernization",[1024],"security","Are you trading speed for security?",{"text":1027,"config":1028},"Get your security maturity score",{"href":1029,"dataGaName":1005,"dataGaLocation":457},"/assessments/security-modernization-assessment/",{"config":1031},{"src":1032},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1034,"paths":1035,"header":1038,"text":1039,"button":1040,"image":1045},"github-azure-migration",[1036,1037],"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":1041,"config":1042},"See how GitLab compares to GitHub",{"href":1043,"dataGaName":1044,"dataGaLocation":457},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1046},{"src":1020},{"header":1048,"blurb":1049,"button":1050,"secondaryButton":1055},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1051,"config":1052},"Get your free trial",{"href":1053,"dataGaName":257,"dataGaLocation":1054},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":730,"config":1056},{"href":582,"dataGaName":262,"dataGaLocation":1054},1786803749148]