[{"data":1,"prerenderedAt":1403},["ShallowReactive",2],{"/blog/ssg-overview-gitlab-pages-part-1-dynamic-x-static":3,"navigation-en-us":616,"banner-en-us":1044,"footer-en-us":1054,"blog-post-authors-en-us-Marcia Ramos":1298,"blog-related-posts-en-us-ssg-overview-gitlab-pages-part-1-dynamic-x-static":1313,"blog-promotions-en-us":1339,"next-steps-en-us":1393},{"id":4,"title":5,"authors":6,"body":8,"category":556,"date":557,"description":558,"extension":559,"externalUrl":560,"faq":560,"featured":561,"heroImage":562,"meta":563,"navigation":606,"path":607,"seo":608,"slug":612,"stem":613,"tags":560,"template":614,"updatedDate":560,"__hash__":615},"blogPosts/en-us/blog/ssg-overview-gitlab-pages-part-1-dynamic-x-static.md","SSGs Part 1: A Static vs Dynamic Website",[7],"Marcia Ramos",{"type":9,"value":10,"toc":543},"minimark",[11,31,42,49,52,73,79,82,87,92,94,99,102,106,129,134,137,140,144,147,150,154,177,181,184,187,191,194,197,200,204,246,287,296,314,320,351,358,362,371,403,420,426,445,479,482,485,488,491,495,506,512,521,524,534],[12,13,14,18,19,22,23,26,27,30],"p",{},[15,16,17],"strong",{},"Static"," Vs ",[15,20,21],{},"Dynamic"," websites, what is the difference? What are the advantages of one over another? Which ones can I use with ",[15,24,25],{},"GitLab Pages","? What about ",[15,28,29],{},"Static Site Generators","?",[12,32,33,34,37,38,41],{},"If these questions ring a bell, this ",[15,35,36],{},"series of posts"," is for you! We are preparing three articles around the same theme \"",[15,39,40],{},"Static Site Generators (SSGs)","\".",[12,43,44,45,48],{},"This is ",[15,46,47],{},"Part 1: Dynamic vs Static Websites",", where we go over their differences, pros and cons.",[12,50,51],{},"Stay tuned for the next two posts:",[53,54,55,65],"ul",{},[56,57,58],"li",{},[15,59,60],{},[61,62,64],"a",{"href":63},"/blog/ssg-overview-gitlab-pages-part-2/","Part 2: Modern Static Site Generators",[56,66,67],{},[15,68,69],{},[61,70,72],{"href":71},"/blog/ssg-overview-gitlab-pages-part-3-examples-ci/","Part 3: Build any SSG site with GitLab Pages",[12,74,75,78],{},[15,76,77],{},"Note:"," For this series, we assume you are familiar with web development, curious about Static Site Generators, and excited to see your site getting deployed with GitLab Pages.",[80,81],"hr",{},[83,84,86],"h3",{"id":85},"whats-in-this-page","What's in this page?",[53,88,89],{},[56,90,91],{},"TOC",[80,93],{},[95,96,98],"h2",{"id":97},"a-static-vs-dynamic-website","A static Vs dynamic Website",[12,100,101],{},"At the core, the difference between static and dynamic websites is that a static website appears the same for every user that visits it. Static websites can only change when the source files are modified by a developer. A dynamic website, however, changes based on data from visitor behaviors and serves up different look, feel and content depending on the users.",[83,103,105],{"id":104},"static-website","Static website",[12,107,108,109,115,116,120,121,124,125,128],{},"A static website is a combination of HTML markup (the text we see written on web pages), CSS (Cascading Style Sheets), which are the styles and layouts applied to that pages, and JavaScript, a programming language that defines their behavior (e.g., fade in and fade out, hover effects, etc.). These pages are stored as simple files, usually in a ",[61,110,114],{"href":111,"rel":112,"title":113},"https://en.wikipedia.org/wiki/Virtual_private_server",[],"Virtual Private Server","VPS",", which are then served by a web server. When we type in our web browsers the URL for a web page like that, our browser (called ",[117,118,119],"em",{},"client",") is making an ",[117,122,123],{},"HTTP request"," to that server, which identifies which files are being requested, and send them back to our browsers via an ",[117,126,127],{},"HTTP response",".",[130,131,133],"h4",{"id":132},"advantages-of-a-static-site","Advantages of a static site",[12,135,136],{},"Static sites are simple. They’re a collection of basic files that are manually updated as needed. Static sites are generally built using HTML and CSS and they’re a common choice for new or small companies to get their presence on the web.",[12,138,139],{},"And even though static sites can require more time on the backend, they can also be faster from a user perspective because they don’t undergo any changes when requested - they just are as they are.",[130,141,143],{"id":142},"disadvantages-of-a-static-site","Disadvantages of a static site",[12,145,146],{},"Though it can be an advantage, the simple style of a static site can also be a roadblock. The process of making changes to a given page is entirely manual because there’s no user interface or data processing to automate page changes. It can be time-consuming and repetitive, and far less scalable than a dynamic site.",[12,148,149],{},"The other major disadvantage of a static site is that it shows the same content to every visitor. That may work for certain page purposes, but content creation isn’t a one-size-fits-all scenario. Different content attracts and converts different visitors, so the same page for all is not always a good thing.",[83,151,153],{"id":152},"dynamic-website","Dynamic website",[12,155,156,157,160,161,164,165,168,169,172,173,176],{},"A dynamic website is more complicated than that. Besides the markup, the styles and the behavior, they do more things that our ",[15,158,159],{},"web browsers"," can identify. For example, if you are buying something online, it's easy to understand that the prices and the availability of that item are ",[117,162,163],{},"dynamically"," recovered from some data, generally stored in ",[117,166,167],{},"databases",". This process of recovering data and processing it ",[117,170,171],{},"before"," responding to our browsers as web pages containing that information, is called ",[117,174,175],{},"server-side"," processing.",[130,178,180],{"id":179},"advantages-of-a-dynamic-site","Advantages of a dynamic site",[12,182,183],{},"A dynamic site is a bit more easily customizable without nearly the amount of manual work a static site change requires. This type of site changes more fluidly based on a visitor’s geographic location, time zone, and other preferences. Web servers build dynamic site pages at a random pace when a user requests a page.",[12,185,186],{},"After that request, information is pulled by the server from one or more databases to custom build an HTML file that gets shipped back to the browser and becomes the page. No site visitor necessarily sees the same page as another, making the user experience more personalized.",[130,188,190],{"id":189},"disadvantages-of-a-dynamic-site","Disadvantages of a dynamic site",[12,192,193],{},"As opposed to the simplicity of a static site, a dynamic site can be a bit more complex to build and maintain due to its ever-changing nature. It may require a bit more developer knowledge or the help of an experienced developer to keep it updated, which can cost more in terms of learning or hiring.",[12,195,196],{},"Also, since the pages are more customized, the load time can be affected. Now let's take a better look into these processes to be able to understand how those things work, how important they are, and why this information is useful for us.",[12,198,199],{},"How about starting from the beginning?",[83,201,203],{"id":202},"a-static-vs-dynamic-website-the-history","A static Vs dynamic website: the history",[12,205,206,207,212,213,218,219,224,225,229,230,233,234,239,240,245],{},"About 25 years ago, in 1990, ",[61,208,211],{"href":209,"rel":210},"https://en.wikipedia.org/wiki/Tim_Berners-Lee",[],"Tim Berners-Lee"," ",[61,214,217],{"href":215,"rel":216},"http://www.telegraph.co.uk/technology/internet/12061803/The-worlds-first-website-went-online-25-years-ago-today.html",[],"published"," the ",[61,220,223],{"href":221,"rel":222},"http://info.cern.ch/hypertext/WWW/TheProject.html",[],"first website in history",". It was a plain ",[226,227,228],"span",{},"static webpage"," with a few tags and links. Three years later, in 1993, the birth of the ",[226,231,232],{},"dynamic web"," took place, when the ",[61,235,238],{"href":236,"rel":237},"https://en.wikipedia.org/wiki/Common_Gateway_Interface",[],"Common Gateway Interface (CGI)"," was ",[61,241,244],{"href":242,"rel":243},"https://www.pingdom.com/blog/a-history-of-the-dynamic-web/",[],"first introduced",". CGI was a way to let a website run scripts on the web server and display the output.\nFrom then on, the evolution was huge.",[12,247,248,249,254,255,260,261,264,265,268,269,268,272,268,275,268,278,281,282,128],{},"With the advent of processing server-side scripts, came forward the ",[61,250,253],{"href":251,"rel":252},"https://en.wikipedia.org/wiki/Web_content_management_system",[],"Web Content Management Systems (WCMS)",", allowing us to create and maintain databases connected to the internet. Websites with such server-side processing, which provide high-level interactivity with the user, are commonly referred as ",[61,256,259],{"href":257,"rel":258},"https://en.wikipedia.org/wiki/Web_application",[],"web applications",". ",[226,262,263],{},"GitLab"," is one of them. Some notable examples are ",[226,266,267],{},"WordPress",", ",[226,270,271],{},"Joomla!",[226,273,274],{},"Drupal",[226,276,277],{},"Magento",[226,279,280],{},"Ghost",", and ",[61,283,286],{"href":284,"rel":285},"https://en.wikipedia.org/wiki/List_of_content_management_systems",[],"many others",[12,288,289,290,295],{},"Besides connecting websites with databases, the dynamic web is an important asset to work with ",[61,291,294],{"href":292,"rel":293},"https://en.wikipedia.org/wiki/Web_template_system",[],"template systems",". By using them, developers write fast, update websites faster, and reduce mistakes (provoked by repetition).",[12,297,298,299,260,304,307,308,313],{},"Unfortunately, with the growing popularity of server-side based websites, came together their ",[61,300,303],{"href":301,"rel":302},"https://www.toptal.com/security/10-most-common-web-security-vulnerabilities",[],"vulnerabilities",[226,305,306],{},"Security issues"," are common among them, and there are a lot of ",[61,309,312],{"href":310,"rel":311},"https://msdn.microsoft.com/en-us/library/zdh19h94.aspx",[],"measures"," we need to take to prevent attacks of uncountable natures. We need to protect our users, our site, and our server. Everything in between is subjected to attacks.",[12,315,316,317,319],{},"An intelligent counter-measure for avoiding those security threats and, at the same time, maintaining the benefits of templating systems, was the creation of ",[15,318,40],{},". With them, we write dynamically and publish statically.",[12,321,322,323,326,327,330,331,336,337,340,341,346,347,350],{},"SSGs came out on the early 2000's, with ",[226,324,325],{},"Blosxom"," in 2003, and ",[226,328,329],{},"WebGen"," in 2004. In 2008, ",[61,332,335],{"href":333,"rel":334},"https://en.wikipedia.org/wiki/Tom_Preston-Werner",[],"Tom Preston-Werner"," released ",[226,338,339],{},"Jekyll",", by far the ",[61,342,345],{"href":343,"rel":344},"https://staticsitegenerators.net/",[],"most popular SSG"," up to now. The interest for Static Site Generators have increased considerably in the last few years, as you can see at the chart below, from ",[226,348,349],{},"Google Trends",":",[12,352,353],{},[354,355],"img",{"alt":356,"src":357},"Static Site Generators - Google Trends","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782399044/blog/Content%20Images/ssg-gitlab-pages-series/part-1-ssg-google-trends.png",[95,359,361],{"id":360},"server-processing-static-vs-dynamic-web-pages","Server processing: static vs dynamic web pages",[12,363,364,365,370],{},"Let's take a look at the image below and see ",[61,366,369],{"href":367,"rel":368},"https://www.youtube.com/watch?v=zC03bcuVZHY",[],"how static pages and dynamic pages"," communicate with the web server.",[12,372,373,376,377,268,380,383,384,387,388,391,392,268,395,398,399,402],{},[15,374,375],{},"Web server"," software, such as ",[226,378,379],{},"Apache",[226,381,382],{},"NGINX"," and ",[226,385,386],{},"IIS",", are able to store and read static files only: HTML, CSS and JavaScript. ",[15,389,390],{},"Application server"," software, as ",[226,393,394],{},"PHP",[226,396,397],{},"Cold Fusion"," or ",[226,400,401],{},"ASP.NET"," to name a few, are the only ones able to interpret dynamic scripting.",[12,404,405,406,408,409,412,413,416,417,128],{},"Every browser (known as ",[117,407,119],{},") communicates with ",[15,410,411],{},"web servers only",", via HTTP ",[117,414,415],{},"(HyperText Transfer Protocol)",", with a URL ",[117,418,419],{},"(Uniform Resource Locator)",[12,421,422],{},[354,423],{"alt":424,"src":425},"Static vs Dynamic server processing","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782399044/blog/Content%20Images/ssg-gitlab-pages-series/part-1-dynamic-x-static-server.png",[12,427,428,431,432,434,435,438,439,441,442,128],{},[15,429,430],{},"Scheme A:"," the client (web browser) sends an ",[15,433,123],{}," to the web server with a URL. The HTML ",[117,436,437],{},"(HyperText Markup Language)"," file requested, stored in the web server, is immediately returned to the client with an ",[15,440,127],{},", and its content is interpreted by the browser and then displayed to the user. This is known as ",[117,443,444],{},"client-side processing",[12,446,447,450,451,453,454,457,458,461,462,465,466,469,470,472,473,475,476,128],{},[15,448,449],{},"Scheme B:"," the client sends an ",[15,452,123],{}," to the ",[15,455,456],{},"web server",", which dispatches the request to the ",[15,459,460],{},"application server",". The application server may ",[15,463,464],{},"request data from a database"," first, and then ",[15,467,468],{},"constructs the HTTP response"," based on the data recovered from the database. This response is passed back to the ",[15,471,456],{},", which returns the HTML file, constructed by the application server, to the client, via ",[15,474,127],{},". This is called ",[117,477,478],{},"server-side processing",[12,480,481],{},"The main difference is, dynamic webpages are not served as-is by the web server as static pages are. They are constructed for every HTTP request sent by each client.",[12,483,484],{},"These additional steps, necessary for dynamic websites, increase the time for the user to receive the HTTP response from the server with the requested page (URL). And nobody likes waiting.",[12,486,487],{},"Server resources are also affected by dynamic websites as for each HTTP request, the same content needs to be constructed again and again.",[12,489,490],{},"There's another main advantage of static over dynamic sites. Static pages don't process user data, circumventing a major security issue related to dynamic web applications: user privacy. If the users don't send any data to your server, there is no data to be stolen.",[95,492,494],{"id":493},"conclusion","Conclusion",[12,496,497,498,502,503,128],{},"Fully-featured server providers (Scheme B) have the capability of processing server-side scripts for web applications. Their structure is more complex and naturally more expensive, whereas static web servers (Scheme A), which only handle static pages, can be maintained with less cost. With ",[61,499,25],{"href":500,"rel":501},"https://pages.gitlab.io",[]," you can host your site for ",[15,504,505],{},"free",[12,507,508,509,511],{},"The majority of web developers don't write static sites anymore. It does take a lot more time, both to write and update, than dynamic ones. But, as previously commented, SSGs resolve this problem. We can code dynamically and the SSG outputs only static webpages for us. That's the content uploaded to our web server, in this particular case, ",[15,510,25],{},", which runs on NGINX.",[12,513,514,515,520],{},"Stay tuned for the next article of this series, in which we will provide you with an overview on ",[15,516,517],{},[61,518,519],{"href":63},"Modern Static Site Generators",", explaining how they work, what they support, and why should we really consider using SSGs for our sites.",[12,522,523],{},"See you there!",[12,525,526,527,533],{},"Don't you have an account on ",[61,528,532],{"href":529,"rel":530,"title":531},"https://gitlab.com/users/sign_in",[],"Sign Up!","GitLab.com"," yet? Let's create one!",[12,535,536,537,542],{},"Follow ",[61,538,541],{"href":539,"rel":540},"https://twitter.com/gitlab",[],"@GitLab"," on Twitter and stay tuned for updates!",{"title":544,"searchDepth":545,"depth":545,"links":546},"",2,[547,549,554,555],{"id":85,"depth":548,"text":86},3,{"id":97,"depth":545,"text":98,"children":550},[551,552,553],{"id":104,"depth":548,"text":105},{"id":152,"depth":548,"text":153},{"id":202,"depth":548,"text":203},{"id":360,"depth":545,"text":361},{"id":493,"depth":545,"text":494},"engineering","2016-06-03","This is Part 1: A Dynamic vs Static Website, where we go over their differences, pros and cons.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684818/Blog/Hero%20Images/part-1-static-x-dynamic-cover.jpg",{"excerpt":564},{"type":9,"value":565},[566,576,582,586,588,602],[12,567,568,18,570,22,572,26,574,30],{},[15,569,17],{},[15,571,21],{},[15,573,25],{},[15,575,29],{},[12,577,33,578,37,580,41],{},[15,579,36],{},[15,581,40],{},[12,583,44,584,48],{},[15,585,47],{},[12,587,51],{},[53,589,590,596],{},[56,591,592],{},[15,593,594],{},[61,595,64],{"href":63},[56,597,598],{},[15,599,600],{},[61,601,72],{"href":71},[12,603,604,78],{},[15,605,77],{},true,"/en-us/blog/ssg-overview-gitlab-pages-part-1-dynamic-x-static",{"title":5,"description":558,"ogTitle":5,"ogDescription":558,"noIndex":561,"ogImage":562,"ogUrl":609,"ogSiteName":610,"ogType":611,"canonicalUrls":609},"https://about.gitlab.com/blog/ssg-overview-gitlab-pages-part-1-dynamic-x-static","https://about.gitlab.com","article","ssg-overview-gitlab-pages-part-1-dynamic-x-static","en-us/blog/ssg-overview-gitlab-pages-part-1-dynamic-x-static","BlogPost","njPHwEIzim4z6UcbT4CdzCM6bKB5VvRheQMME6honkM",{"logo":617,"freeTrial":622,"sales":627,"login":632,"items":637,"search":964,"minimal":995,"duo":1014,"switchNav":1023,"pricingDeployment":1034},{"config":618},{"href":619,"dataGaName":620,"dataGaLocation":621},"/","gitlab logo","header",{"text":623,"config":624},"Get free trial",{"href":625,"dataGaName":626,"dataGaLocation":621},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":628,"config":629},"Request a demo",{"href":630,"dataGaName":631,"dataGaLocation":621},"/sales/?contact-topic=request-demo","sales",{"text":633,"config":634},"Sign in",{"href":635,"dataGaName":636,"dataGaLocation":621},"https://gitlab.com/users/sign_in/","sign in",[638,667,767,772,886,942],{"text":639,"config":640,"menu":642},"Platform",{"dataNavLevelOne":641},"platform",{"type":643,"columns":644},"cards",[645,651,659],{"title":639,"description":646,"link":647},"The intelligent orchestration platform for DevSecOps",{"text":648,"config":649},"Explore our Platform",{"href":650,"dataGaName":641,"dataGaLocation":621},"/platform/",{"title":652,"description":653,"link":654},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":655,"config":656},"Meet GitLab Duo",{"href":657,"dataGaName":658,"dataGaLocation":621},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":660,"description":661,"link":662},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":663,"config":664},"Learn more",{"href":665,"dataGaName":666,"dataGaLocation":621},"/why-gitlab/","why gitlab",{"text":668,"left":606,"config":669,"menu":671},"Product",{"dataNavLevelOne":670},"solutions",{"type":672,"link":673,"columns":677,"feature":746},"lists",{"text":674,"config":675},"View all Solutions",{"href":676,"dataGaName":670,"dataGaLocation":621},"/solutions/",[678,702,725],{"title":679,"description":680,"link":681,"items":686},"Automation","CI/CD and automation to accelerate deployment",{"config":682},{"icon":683,"href":684,"dataGaName":685,"dataGaLocation":621},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[687,691,694,698],{"text":688,"config":689},"CI/CD",{"href":690,"dataGaLocation":621,"dataGaName":688},"/solutions/continuous-integration/",{"text":652,"config":692},{"href":657,"dataGaLocation":621,"dataGaName":693},"gitlab duo agent platform - product menu",{"text":695,"config":696},"Source Code Management",{"href":697,"dataGaLocation":621,"dataGaName":695},"/solutions/source-code-management/",{"text":699,"config":700},"Automated Software Delivery",{"href":684,"dataGaLocation":621,"dataGaName":701},"Automated software delivery",{"title":703,"description":704,"link":705,"items":710},"Security","Deliver code faster without compromising security",{"config":706},{"href":707,"dataGaName":708,"dataGaLocation":621,"icon":709},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[711,715,720],{"text":712,"config":713},"Application Security Testing",{"href":707,"dataGaName":714,"dataGaLocation":621},"Application security testing",{"text":716,"config":717},"Software Supply Chain Security",{"href":718,"dataGaLocation":621,"dataGaName":719},"/solutions/supply-chain/","Software supply chain security",{"text":721,"config":722},"Software Compliance",{"href":723,"dataGaName":724,"dataGaLocation":621},"/solutions/software-compliance/","software compliance",{"title":726,"link":727,"items":732},"Measurement",{"config":728},{"icon":729,"href":730,"dataGaName":731,"dataGaLocation":621},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[733,737,741],{"text":734,"config":735},"Visibility & Measurement",{"href":730,"dataGaLocation":621,"dataGaName":736},"Visibility and Measurement",{"text":738,"config":739},"Value Stream Management",{"href":740,"dataGaLocation":621,"dataGaName":738},"/solutions/value-stream-management/",{"text":742,"config":743},"Analytics & Insights",{"href":744,"dataGaLocation":621,"dataGaName":745},"/solutions/analytics-and-insights/","Analytics and insights",{"title":747,"type":672,"items":748},"GitLab for",[749,755,761],{"text":750,"config":751},"Enterprise",{"icon":752,"href":753,"dataGaLocation":621,"dataGaName":754},"Building","/enterprise/","enterprise",{"text":756,"config":757},"Small Business",{"icon":758,"href":759,"dataGaLocation":621,"dataGaName":760},"Work","/small-business/","small business",{"text":762,"config":763},"Public Sector",{"icon":764,"href":765,"dataGaLocation":621,"dataGaName":766},"Organization","/solutions/public-sector/","public sector",{"text":768,"config":769},"Pricing",{"href":770,"dataGaName":771,"dataGaLocation":621,"dataNavLevelOne":771},"/pricing/","pricing",{"text":773,"config":774,"menu":776},"Resources",{"dataNavLevelOne":775},"resources",{"type":672,"link":777,"columns":781,"feature":875},{"text":778,"config":779},"View all resources",{"href":780,"dataGaName":775,"dataGaLocation":621},"/resources/",[782,815,842],{"title":783,"items":784},"Getting started",[785,790,795,800,805,810],{"text":786,"config":787},"Install",{"href":788,"dataGaName":789,"dataGaLocation":621},"/install/","install",{"text":791,"config":792},"Quick start guides",{"href":793,"dataGaName":794,"dataGaLocation":621},"/get-started/","quick setup checklists",{"text":796,"config":797},"Learn",{"href":798,"dataGaLocation":621,"dataGaName":799},"https://university.gitlab.com/","learn",{"text":801,"config":802},"Product documentation",{"href":803,"dataGaName":804,"dataGaLocation":621},"https://docs.gitlab.com/","product documentation",{"text":806,"config":807},"Best practice videos",{"href":808,"dataGaName":809,"dataGaLocation":621},"/getting-started-videos/","best practice videos",{"text":811,"config":812},"Integrations",{"href":813,"dataGaName":814,"dataGaLocation":621},"/integrations/","integrations",{"title":816,"items":817},"Discover",[818,823,828,833,837],{"text":819,"config":820},"Customer success stories",{"href":821,"dataGaName":822,"dataGaLocation":621},"/customers/","customer success stories",{"text":824,"config":825},"Blog",{"href":826,"dataGaName":827,"dataGaLocation":621},"/blog/","blog",{"text":829,"config":830},"Demo Hub",{"href":831,"dataGaName":832,"dataGaLocation":621},"/demo-hub/","demo hub",{"text":834,"config":835},"The Source",{"href":836,"dataGaName":827,"dataGaLocation":621},"/the-source/",{"text":838,"config":839},"Remote",{"href":840,"dataGaName":841,"dataGaLocation":621},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":843,"items":844},"Connect",[845,850,855,860,865,870],{"text":846,"config":847},"GitLab Services",{"href":848,"dataGaName":849,"dataGaLocation":621},"/services/","services",{"text":851,"config":852},"Contribute",{"href":853,"dataGaName":854,"dataGaLocation":621},"https://contributors.gitlab.com","contribute",{"text":856,"config":857},"Community",{"href":858,"dataGaName":859,"dataGaLocation":621},"/community/","community",{"text":861,"config":862},"Forum",{"href":863,"dataGaName":864,"dataGaLocation":621},"https://forum.gitlab.com/","forum",{"text":866,"config":867},"Events",{"href":868,"dataGaName":869,"dataGaLocation":621},"/events/","events",{"text":871,"config":872},"Partners",{"href":873,"dataGaName":874,"dataGaLocation":621},"/partners/","partners",{"config":876,"title":879,"text":880,"link":881},{"background":877,"textColor":878},"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":882,"config":883},"Read the latest",{"href":884,"dataGaName":885,"dataGaLocation":621},"/whats-new/","whats new",{"text":887,"config":888,"menu":890},"Company",{"dataNavLevelOne":889},"company",{"type":672,"columns":891},[892],{"items":893},[894,899,905,907,912,917,922,927,932,937],{"text":895,"config":896},"About",{"href":897,"dataGaName":898,"dataGaLocation":621},"/company/","about",{"text":900,"config":901,"footerGa":904},"Jobs",{"href":902,"dataGaName":903,"dataGaLocation":621},"/jobs/","jobs",{"dataGaName":903},{"text":866,"config":906},{"href":868,"dataGaName":869,"dataGaLocation":621},{"text":908,"config":909},"Leadership",{"href":910,"dataGaName":911,"dataGaLocation":621},"/company/team/e-group/","leadership",{"text":913,"config":914},"Handbook",{"href":915,"dataGaName":916,"dataGaLocation":621},"https://handbook.gitlab.com/","handbook",{"text":918,"config":919},"Investor relations",{"href":920,"dataGaName":921,"dataGaLocation":621},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":923,"config":924},"Trust Center",{"href":925,"dataGaName":926,"dataGaLocation":621},"/security/","trust center",{"text":928,"config":929},"AI Transparency Center",{"href":930,"dataGaName":931,"dataGaLocation":621},"/ai-transparency-center/","ai transparency center",{"text":933,"config":934},"Newsletter",{"href":935,"dataGaName":936,"dataGaLocation":621},"/company/contact/#contact-forms","newsletter",{"text":938,"config":939},"Press",{"href":940,"dataGaName":941,"dataGaLocation":621},"/press/","press",{"text":943,"config":944,"menu":945},"Contact us",{"dataNavLevelOne":889},{"type":672,"columns":946},[947],{"items":948},[949,954,959],{"text":950,"config":951},"Talk to sales",{"href":952,"dataGaName":953,"dataGaLocation":621},"/sales/","talk to sales",{"text":955,"config":956},"Support portal",{"href":957,"dataGaName":958,"dataGaLocation":621},"https://support.gitlab.com/hc/en-us","support portal",{"text":960,"config":961},"Customer portal",{"href":962,"dataGaName":963,"dataGaLocation":621},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":965,"login":966,"suggestions":973},"Close",{"text":967,"link":968},"To search repositories and projects, login to",{"text":969,"config":970},"gitlab.com",{"href":635,"dataGaName":971,"dataGaLocation":972},"search login","search",{"text":974,"default":975},"Suggestions",[976,978,982,984,988,992],{"text":652,"config":977},{"href":657,"dataGaName":652,"dataGaLocation":972},{"text":979,"config":980},"Code Suggestions (AI)",{"href":981,"dataGaName":979,"dataGaLocation":972},"/solutions/code-suggestions/",{"text":688,"config":983},{"href":690,"dataGaName":688,"dataGaLocation":972},{"text":985,"config":986},"GitLab on AWS",{"href":987,"dataGaName":985,"dataGaLocation":972},"/partners/technology-partners/aws/",{"text":989,"config":990},"GitLab on Google Cloud",{"href":991,"dataGaName":989,"dataGaLocation":972},"/partners/technology-partners/google-cloud-platform/",{"text":993,"config":994},"Why GitLab?",{"href":665,"dataGaName":993,"dataGaLocation":972},{"freeTrial":996,"mobileIcon":1001,"desktopIcon":1006,"secondaryButton":1009},{"text":997,"config":998},"Start free trial",{"href":999,"dataGaName":626,"dataGaLocation":1000},"https://gitlab.com/-/trials/new/","nav",{"altText":1002,"config":1003},"Gitlab Icon",{"src":1004,"dataGaName":1005,"dataGaLocation":1000},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1002,"config":1007},{"src":1008,"dataGaName":1005,"dataGaLocation":1000},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1010,"config":1011},"Get Started",{"href":1012,"dataGaName":1013,"dataGaLocation":1000},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":1015,"mobileIcon":1019,"desktopIcon":1021},{"text":1016,"config":1017},"Learn more about GitLab Duo",{"href":657,"dataGaName":1018,"dataGaLocation":1000},"gitlab duo",{"altText":1002,"config":1020},{"src":1004,"dataGaName":1005,"dataGaLocation":1000},{"altText":1002,"config":1022},{"src":1008,"dataGaName":1005,"dataGaLocation":1000},{"button":1024,"mobileIcon":1029,"desktopIcon":1031},{"text":1025,"config":1026},"/switch",{"href":1027,"dataGaName":1028,"dataGaLocation":1000},"#contact","switch",{"altText":1002,"config":1030},{"src":1004,"dataGaName":1005,"dataGaLocation":1000},{"altText":1002,"config":1032},{"src":1033,"dataGaName":1005,"dataGaLocation":1000},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1035,"mobileIcon":1040,"desktopIcon":1042},{"text":1036,"config":1037},"Back to pricing",{"href":770,"dataGaName":1038,"dataGaLocation":1000,"icon":1039},"back to pricing","GoBack",{"altText":1002,"config":1041},{"src":1004,"dataGaName":1005,"dataGaLocation":1000},{"altText":1002,"config":1043},{"src":1008,"dataGaName":1005,"dataGaLocation":1000},{"title":1045,"titleMobile":1046,"button":1047,"config":1052},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":663,"config":1048},{"href":1049,"dataGaName":1050,"dataGaLocation":1051},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":1053,"disabled":561},"release",{"data":1055},{"text":1056,"source":1057,"edit":1063,"contribute":1068,"config":1073,"items":1077,"minimal":1287},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":1058,"config":1059},"View page source",{"href":1060,"dataGaName":1061,"dataGaLocation":1062},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1064,"config":1065},"Edit this page",{"href":1066,"dataGaName":1067,"dataGaLocation":1062},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1069,"config":1070},"Please contribute",{"href":1071,"dataGaName":1072,"dataGaLocation":1062},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":539,"facebook":1074,"youtube":1075,"linkedin":1076},"https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1078,1125,1179,1223,1255],{"title":768,"links":1079,"subMenu":1094},[1080,1084,1089],{"text":1081,"config":1082},"View plans",{"href":770,"dataGaName":1083,"dataGaLocation":1062},"view plans",{"text":1085,"config":1086},"Why Premium?",{"href":1087,"dataGaName":1088,"dataGaLocation":1062},"/pricing/premium/","why premium",{"text":1090,"config":1091},"Why Ultimate?",{"href":1092,"dataGaName":1093,"dataGaLocation":1062},"/pricing/ultimate/","why ultimate",[1095],{"title":1096,"links":1097},"Contact Us",[1098,1101,1103,1105,1110,1115,1120],{"text":1099,"config":1100},"Contact sales",{"href":952,"dataGaName":631,"dataGaLocation":1062},{"text":955,"config":1102},{"href":957,"dataGaName":958,"dataGaLocation":1062},{"text":960,"config":1104},{"href":962,"dataGaName":963,"dataGaLocation":1062},{"text":1106,"config":1107},"Status",{"href":1108,"dataGaName":1109,"dataGaLocation":1062},"https://status.gitlab.com/","status",{"text":1111,"config":1112},"Terms of use",{"href":1113,"dataGaName":1114,"dataGaLocation":1062},"/terms/","terms of use",{"text":1116,"config":1117},"Privacy statement",{"href":1118,"dataGaName":1119,"dataGaLocation":1062},"/privacy/","privacy statement",{"text":1121,"config":1122},"Cookie preferences",{"dataGaName":1123,"dataGaLocation":1062,"id":1124,"isOneTrustButton":606},"cookie preferences","ot-sdk-btn",{"title":668,"links":1126,"subMenu":1135},[1127,1131],{"text":1128,"config":1129},"DevSecOps platform",{"href":650,"dataGaName":1130,"dataGaLocation":1062},"devsecops platform",{"text":1132,"config":1133},"AI-Assisted Development",{"href":657,"dataGaName":1134,"dataGaLocation":1062},"ai-assisted development",[1136],{"title":1137,"links":1138},"Topics",[1139,1144,1149,1154,1159,1164,1169,1174],{"text":1140,"config":1141},"CICD",{"href":1142,"dataGaName":1143,"dataGaLocation":1062},"/topics/ci-cd/","cicd",{"text":1145,"config":1146},"GitOps",{"href":1147,"dataGaName":1148,"dataGaLocation":1062},"/topics/gitops/","gitops",{"text":1150,"config":1151},"DevOps",{"href":1152,"dataGaName":1153,"dataGaLocation":1062},"/topics/devops/","devops",{"text":1155,"config":1156},"Version Control",{"href":1157,"dataGaName":1158,"dataGaLocation":1062},"/topics/version-control/","version control",{"text":1160,"config":1161},"DevSecOps",{"href":1162,"dataGaName":1163,"dataGaLocation":1062},"/topics/devsecops/","devsecops",{"text":1165,"config":1166},"Cloud Native",{"href":1167,"dataGaName":1168,"dataGaLocation":1062},"/topics/cloud-native/","cloud native",{"text":1170,"config":1171},"AI for Coding",{"href":1172,"dataGaName":1173,"dataGaLocation":1062},"/topics/devops/ai-for-coding/","ai for coding",{"text":1175,"config":1176},"Agentic AI",{"href":1177,"dataGaName":1178,"dataGaLocation":1062},"/topics/agentic-ai/","agentic ai",{"title":1180,"links":1181},"Solutions",[1182,1184,1186,1191,1195,1198,1202,1205,1207,1210,1213,1218],{"text":712,"config":1183},{"href":707,"dataGaName":712,"dataGaLocation":1062},{"text":701,"config":1185},{"href":684,"dataGaName":685,"dataGaLocation":1062},{"text":1187,"config":1188},"Agile development",{"href":1189,"dataGaName":1190,"dataGaLocation":1062},"/solutions/agile-delivery/","agile delivery",{"text":1192,"config":1193},"SCM",{"href":697,"dataGaName":1194,"dataGaLocation":1062},"source code management",{"text":1140,"config":1196},{"href":690,"dataGaName":1197,"dataGaLocation":1062},"continuous integration & delivery",{"text":1199,"config":1200},"Value stream management",{"href":740,"dataGaName":1201,"dataGaLocation":1062},"value stream management",{"text":1145,"config":1203},{"href":1204,"dataGaName":1148,"dataGaLocation":1062},"/solutions/gitops/",{"text":750,"config":1206},{"href":753,"dataGaName":754,"dataGaLocation":1062},{"text":1208,"config":1209},"Small business",{"href":759,"dataGaName":760,"dataGaLocation":1062},{"text":1211,"config":1212},"Public sector",{"href":765,"dataGaName":766,"dataGaLocation":1062},{"text":1214,"config":1215},"Education",{"href":1216,"dataGaName":1217,"dataGaLocation":1062},"/solutions/education/","education",{"text":1219,"config":1220},"Financial services",{"href":1221,"dataGaName":1222,"dataGaLocation":1062},"/solutions/finance/","financial services",{"title":773,"links":1224},[1225,1227,1229,1231,1234,1236,1239,1241,1243,1245,1247,1249,1251,1253],{"text":786,"config":1226},{"href":788,"dataGaName":789,"dataGaLocation":1062},{"text":791,"config":1228},{"href":793,"dataGaName":794,"dataGaLocation":1062},{"text":796,"config":1230},{"href":798,"dataGaName":799,"dataGaLocation":1062},{"text":801,"config":1232},{"href":803,"dataGaName":1233,"dataGaLocation":1062},"docs",{"text":824,"config":1235},{"href":826,"dataGaName":827,"dataGaLocation":1062},{"text":1237,"config":1238},"What's new",{"href":884,"dataGaName":885,"dataGaLocation":1062},{"text":819,"config":1240},{"href":821,"dataGaName":822,"dataGaLocation":1062},{"text":838,"config":1242},{"href":840,"dataGaName":841,"dataGaLocation":1062},{"text":846,"config":1244},{"href":848,"dataGaName":849,"dataGaLocation":1062},{"text":851,"config":1246},{"href":853,"dataGaName":854,"dataGaLocation":1062},{"text":856,"config":1248},{"href":858,"dataGaName":859,"dataGaLocation":1062},{"text":861,"config":1250},{"href":863,"dataGaName":864,"dataGaLocation":1062},{"text":866,"config":1252},{"href":868,"dataGaName":869,"dataGaLocation":1062},{"text":871,"config":1254},{"href":873,"dataGaName":874,"dataGaLocation":1062},{"title":887,"links":1256},[1257,1259,1261,1263,1265,1267,1271,1276,1278,1280,1282],{"text":895,"config":1258},{"href":897,"dataGaName":889,"dataGaLocation":1062},{"text":900,"config":1260},{"href":902,"dataGaName":903,"dataGaLocation":1062},{"text":908,"config":1262},{"href":910,"dataGaName":911,"dataGaLocation":1062},{"text":913,"config":1264},{"href":915,"dataGaName":916,"dataGaLocation":1062},{"text":918,"config":1266},{"href":920,"dataGaName":921,"dataGaLocation":1062},{"text":1268,"config":1269},"Sustainability",{"href":1270,"dataGaName":1268,"dataGaLocation":1062},"/sustainability/",{"text":1272,"config":1273},"Diversity, inclusion and belonging (DIB)",{"href":1274,"dataGaName":1275,"dataGaLocation":1062},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":923,"config":1277},{"href":925,"dataGaName":926,"dataGaLocation":1062},{"text":933,"config":1279},{"href":935,"dataGaName":936,"dataGaLocation":1062},{"text":938,"config":1281},{"href":940,"dataGaName":941,"dataGaLocation":1062},{"text":1283,"config":1284},"Modern Slavery Transparency Statement",{"href":1285,"dataGaName":1286,"dataGaLocation":1062},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1288},[1289,1292,1295],{"text":1290,"config":1291},"Terms",{"href":1113,"dataGaName":1114,"dataGaLocation":1062},{"text":1293,"config":1294},"Cookies",{"dataGaName":1123,"dataGaLocation":1062,"id":1124,"isOneTrustButton":606},{"text":1296,"config":1297},"Privacy",{"href":1118,"dataGaName":1119,"dataGaLocation":1062},[1299],{"id":1300,"title":7,"body":560,"config":1301,"content":1303,"description":560,"extension":1307,"meta":1308,"navigation":606,"path":1309,"seo":1310,"stem":1311,"__hash__":1312},"blogAuthors/en-us/blog/authors/marcia-ramos.yml",{"template":1302},"BlogAuthor",{"name":7,"config":1304},{"headshot":1305,"ctfId":1306},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Marcia-Ramos","yml",{},"/en-us/blog/authors/marcia-ramos",{},"en-us/blog/authors/marcia-ramos","UrFu-iLS1mEkxVCheaz27cAjfZXeLI9U1n5dGSOHXY4",[1314,1323,1331],{"title":1315,"description":1316,"heroImage":1317,"category":556,"date":1318,"authors":1319,"slug":1322,"externalUrl":560},"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",[1320,1321],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":1324,"description":1325,"heroImage":1326,"category":556,"date":1327,"authors":1328,"slug":1330,"externalUrl":560},"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",[1329],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1332,"description":1333,"heroImage":1334,"category":556,"date":1335,"authors":1336,"slug":1338,"externalUrl":560},"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",[1337],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":1340},[1341,1355,1367,1379],{"id":1342,"categories":1343,"header":1345,"text":1346,"button":1347,"image":1352},"ai-modernization",[1344],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1348,"config":1349},"Get your AI maturity score",{"href":1350,"dataGaName":1351,"dataGaLocation":827},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1353},{"src":1354},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1356,"categories":1357,"header":1359,"text":1346,"button":1360,"image":1364},"devops-modernization",[1358,1163],"product","Are you just managing tools or shipping innovation?",{"text":1361,"config":1362},"Get your DevOps maturity score",{"href":1363,"dataGaName":1351,"dataGaLocation":827},"/assessments/devops-modernization-assessment/",{"config":1365},{"src":1366},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1368,"categories":1369,"header":1371,"text":1346,"button":1372,"image":1376},"security-modernization",[1370],"security","Are you trading speed for security?",{"text":1373,"config":1374},"Get your security maturity score",{"href":1375,"dataGaName":1351,"dataGaLocation":827},"/assessments/security-modernization-assessment/",{"config":1377},{"src":1378},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1380,"paths":1381,"header":1384,"text":1385,"button":1386,"image":1391},"github-azure-migration",[1382,1383],"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":1387,"config":1388},"See how GitLab compares to GitHub",{"href":1389,"dataGaName":1390,"dataGaLocation":827},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1392},{"src":1366},{"header":1394,"blurb":1395,"button":1396,"secondaryButton":1401},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1397,"config":1398},"Get your free trial",{"href":1399,"dataGaName":626,"dataGaLocation":1400},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":1099,"config":1402},{"href":952,"dataGaName":631,"dataGaLocation":1400},1786803774835]