[{"data":1,"prerenderedAt":1105},["ShallowReactive",2],{"/blog/beginner-guide-python-programming":3,"navigation-en-us":320,"banner-en-us":748,"footer-en-us":758,"blog-post-authors-en-us-GitLab":1001,"blog-related-posts-en-us-beginner-guide-python-programming":1016,"blog-promotions-en-us":1041,"next-steps-en-us":1095},{"id":4,"title":5,"authors":6,"body":8,"category":299,"date":300,"description":301,"extension":302,"externalUrl":303,"faq":303,"featured":304,"heroImage":305,"meta":306,"navigation":307,"path":308,"seo":309,"slug":313,"stem":314,"tags":315,"template":318,"updatedDate":303,"__hash__":319},"blogPosts/en-us/blog/beginner-guide-python-programming.md","How to get started with Python programming",[7],"GitLab",{"type":9,"value":10,"toc":283},"minimark",[11,15,20,30,34,37,40,47,50,53,56,62,66,69,75,79,82,85,91,94,100,103,109,113,116,136,142,146,149,155,158,163,166,172,175,191,195,198,204,207,213,217,220,223,229,232,238,244,249,253,256,262,268,271],[12,13,14],"p",{},"Are you a programming enthusiast who wants to learn Python? Are you new to coding? Do you need help deciding where to begin with Python? If you are looking for answers to these questions, then you are in the right place.",[16,17,19],"h2",{"id":18},"how-to-start-writing-code-with-python","How to start writing code with Python",[12,21,22,23,29],{},"Python is an easy-to-learn, easy-to-use and easy-to-deploy programming language, with rampant usage in building web and desktop applications, analyzing data and performing ",[24,25,28],"a",{"href":26,"rel":27},"https://about.gitlab.com/topics/devops/",[],"DevOps"," tasks. It is a free, open-source, object-oriented coding language used to write simple scripts and complex programs. Of the almost 700 programming languages, Python is considered one of the best to learn first.",[16,31,33],{"id":32},"installing-python","Installing Python",[12,35,36],{},"Before discussing the basics of Python, it is essential to download and install Python on your desktop/laptop. Python works on multiple platforms, including Linux, Windows and Mac. It comes preinstalled on most Mac and Linux systems; however, you should download the latest version from the official Python website.",[12,38,39],{},"To check the current Python version on your system, open the command line and type “python -V”.",[12,41,42],{},[43,44],"img",{"alt":45,"src":46},"command prompt","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398884/blog/Content%20Images/python1.png",[12,48,49],{},"If you have an outdated version, download either the 32- or 64-bit setup from the website based on your system requirements.",[12,51,52],{},"There are other alternatives for downloading the setup: for Windows, you can install it directly from Microsoft. For Linux, install it using the package manager. For macOS, you can download it from Homebrew.",[12,54,55],{},"Once the setup is downloaded, run the file installer, and click on “Install Now”. Once the installation is complete, you are ready to go. Below is an example of a Python installation for Windows.",[12,57,58],{},[43,59],{"alt":60,"src":61},"install Python","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398887/blog/Content%20Images/python2.png",[16,63,65],{"id":64},"running-python-in-command-prompt","Running Python in command prompt",[12,67,68],{},"To verify Python is installed and working correctly in Windows, open the command prompt and enter “python”, which will invoke the interpreter. You can directly execute Python codes in it.  For example, type “2*5+1” and press “enter”. You will see “11” as the output. Entering “quit ()” will exit the interpreter.",[12,70,71],{},[43,72],{"alt":73,"src":74},"Python interpreter","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398887/blog/Content%20Images/python3.png",[16,76,78],{"id":77},"running-python-in-ide","Running Python in IDE",[12,80,81],{},"With the latest Python installed, you are now ready to start programming in Python. When writing long scripts or programs in Python, use Python’s built-in Integrated Development and Learning Environment (IDLE).",[12,83,84],{},"Start the IDLE and then, from the File dropdown, select “New File”, which opens a new editing window. So now, on your screen, you have two windows: a Python shell and an untitled file.",[12,86,87],{},[43,88],{"alt":89,"src":90},"Python shell and untitled file","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398887/blog/Content%20Images/python4.png",[12,92,93],{},"The Python shell is a REPL environment, which is shorthand for \"read-eval-print loop\". It runs snippets of the code, usually one statement at a time. For example, by repeating the same calculation “2*5+1” that we did in the command prompt, you can see how a Python shell can function as a calculator.",[12,95,96],{},[43,97],{"alt":98,"src":99},"Python as a calculator","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398888/blog/Content%20Images/python5.png",[12,101,102],{},"The untitled window is a text editing window for writing complete programs. The shell displays its output. For example, the conventional first program of Python for beginners is printing “Hello World!”. Make sure you save the text editor before running it by pressing “F5”.",[12,104,105],{},[43,106],{"alt":107,"src":108},"Hello World","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398888/blog/Content%20Images/python61.png",[16,110,112],{"id":111},"the-basics-of-python","The basics of Python",[12,114,115],{},"We know you can’t wait to start writing long scripts for games and websites, but you still have a long way to get there. Just like with learning any other language, you must first understand the basics of Python.",[12,117,118,119,123,124,127,128,131,132,135],{},"The ",[120,121,122],"strong",{},"print()"," function, as seen in the Hello World! example, prints a value on the output window. A value is the most basic thing a program uses. It can be a string, a numeric value or any other Python object. Any object within single/double quotations is called a string. For instance, the “Hello World!” that is printed in the above program is also of the type string. Numeric values like 4 and 4.5 are the types of integers and floats, respectively. You can change an integer or float into a string and vice versa using the built-in functions ",[120,125,126],{},"int()",", ",[120,129,130],{},"float()"," and ",[120,133,134],{},"str()",".",[12,137,138],{},[43,139],{"alt":140,"src":141},"value in an output window","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398888/blog/Content%20Images/python7.png",[16,143,145],{"id":144},"pythons-vocabulary","Python’s vocabulary",[12,147,148],{},"Python is the simplest coding language. It is easy to read and understand. Unlike human languages, Python has a small vocabulary or reserved words holding special meaning. Terms other than this reserved vocabulary hold meaning only to you and are called variables. These 35 reserved words are:",[12,150,151],{},[43,152],{"alt":153,"src":154},"Python terms","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398888/blog/Content%20Images/python8.png",[12,156,157],{},"Make sure you use these words for their specified purpose to avoid confusing the Python interpreter and causing a syntax error.",[159,160,162],"h3",{"id":161},"naming-variables","Naming variables",[12,164,165],{},"Sometimes you want to store values in your code for retrieving them later, which you can do by giving them symbolic names called variables. As seen below, we ask Python to store 5 and 6 with labels x and y, respectively, and then retrieve them later to find their sum.",[12,167,168],{},[43,169],{"alt":170,"src":171},"storing variables","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398889/blog/Content%20Images/python9.png",[12,173,174],{},"There are rules for choosing a name for a variable; failing to follow these gives a syntax error. A few mandatory rules are narrated below:",[176,177,178,182,185,188],"ol",{},[179,180,181],"li",{},"The name can contain both letters and numbers, but it can’t start with a number.",[179,183,184],{},"An underscore can appear in the name to separate multiple words.",[179,186,187],{},"Special symbols like @#$ are illegal and should not appear in the name.",[179,189,190],{},"Python keywords should not be used as names for variables.",[159,192,194],{"id":193},"understanding-operators-and-operands","Understanding operators and operands",[12,196,197],{},"Python uses special symbols called “operators” for representing basic mathematical computation. The values to which these operators are applied are called operands. The symbols used as operators for subtraction, addition, division, multiplication and exponentiation are  -,+, /, * and **, respectively.",[12,199,200],{},[43,201],{"alt":202,"src":203},"symbols for operators","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398885/blog/Content%20Images/python10.png",[12,205,206],{},"The modulus operator (%) outputs the remainder of the first operand divided by the second operand. It is useful in checking whether a number is divisible by another and extracting the rightmost digit/digits of a number.",[12,208,209],{},[43,210],{"alt":211,"src":212},"modulus operator","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398885/blog/Content%20Images/python11.png",[159,214,216],{"id":215},"using-expressions","Using expressions",[12,218,219],{},"A combination of values, variables and operators is called an expression. An expression typed in the shell gets evaluated, and the answer is displayed. However, in a script, an expression doesn't do anything on its own.",[12,221,222],{},"Python uses the mathematical convention PEMDAS for the operators, which means that P for Parentheses has the highest precedence, then Exponentiation, Multiplication and Division, which have the same priority. Addition and Subtraction come next and also have the same precedence. Operators that have the same preference are also evaluated from left to right.",[12,224,225],{},[43,226],{"alt":227,"src":228},"PEMDAS","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398885/blog/Content%20Images/python12.png",[12,230,231],{},"The Addition and Multiplication operators also work with strings for concatenation and repeating a string, respectively.",[12,233,234],{},[43,235],{"alt":236,"src":237},"addition and multiplication operators","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398885/blog/Content%20Images/python13.png",[12,239,240,241,135],{},"Python also allows you to take the value for a variable from the user via their keyboard. This can be done using a built-in function called ",[120,242,243],{},"input",[12,245,246],{},[43,247],{"alt":243,"src":248},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398887/blog/Content%20Images/python14.png",[16,250,252],{"id":251},"write-your-first-program","Write your first program",[12,254,255],{},"Now it's time to write a short program using everything you've learned here. Write a script that takes two numbers as input and adds them. Do this on your own and see the code below to tally your work.",[12,257,258],{},[43,259],{"alt":260,"src":261},"write a short program","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398887/blog/Content%20Images/python15.png",[12,263,264,267],{},[120,265,266],{},"Congratulations!"," You just wrote your first program.",[12,269,270],{},"Learning Python is easy and fun. We just helped you make it through the basics. To become a professional Python Programmer, you still have a lot to learn and practice. Good luck on your journey to becoming an expert coder.",[12,272,273,274,278,279],{},"Photo by ",[24,275,277],{"href":276},"https://unsplash.com/@davidclode?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","David Clode"," on ",[24,280,282],{"href":281},"https://unsplash.com/s/photos/python?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","Unsplash",{"title":284,"searchDepth":285,"depth":285,"links":286},"",2,[287,288,289,290,291,292,298],{"id":18,"depth":285,"text":19},{"id":32,"depth":285,"text":33},{"id":64,"depth":285,"text":65},{"id":77,"depth":285,"text":78},{"id":111,"depth":285,"text":112},{"id":144,"depth":285,"text":145,"children":293},[294,296,297],{"id":161,"depth":295,"text":162},3,{"id":193,"depth":295,"text":194},{"id":215,"depth":295,"text":216},{"id":251,"depth":285,"text":252},"devsecops","2021-10-21","Python is increasingly popular, and for good reason. Here's our beginner's guide.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664962/Blog/Hero%20Images/python.jpg",{},true,"/en-us/blog/beginner-guide-python-programming",{"title":5,"description":301,"ogTitle":5,"ogDescription":301,"noIndex":304,"ogImage":305,"ogUrl":310,"ogSiteName":311,"ogType":312,"canonicalUrls":310},"https://about.gitlab.com/blog/beginner-guide-python-programming","https://about.gitlab.com","article","beginner-guide-python-programming","en-us/blog/beginner-guide-python-programming",[28,316,317],"careers","tutorial","BlogPost","ajNlF0Y6YeY_yoLFAC0WJzNW4LVaAs4fo2Z4sBNW2p8",{"logo":321,"freeTrial":326,"sales":331,"login":336,"items":341,"search":668,"minimal":699,"duo":718,"switchNav":727,"pricingDeployment":738},{"config":322},{"href":323,"dataGaName":324,"dataGaLocation":325},"/","gitlab logo","header",{"text":327,"config":328},"Get free trial",{"href":329,"dataGaName":330,"dataGaLocation":325},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":332,"config":333},"Request a demo",{"href":334,"dataGaName":335,"dataGaLocation":325},"/sales/?contact-topic=request-demo","sales",{"text":337,"config":338},"Sign in",{"href":339,"dataGaName":340,"dataGaLocation":325},"https://gitlab.com/users/sign_in/","sign in",[342,371,471,476,590,646],{"text":343,"config":344,"menu":346},"Platform",{"dataNavLevelOne":345},"platform",{"type":347,"columns":348},"cards",[349,355,363],{"title":343,"description":350,"link":351},"The intelligent orchestration platform for DevSecOps",{"text":352,"config":353},"Explore our Platform",{"href":354,"dataGaName":345,"dataGaLocation":325},"/platform/",{"title":356,"description":357,"link":358},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":359,"config":360},"Meet GitLab Duo",{"href":361,"dataGaName":362,"dataGaLocation":325},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":364,"description":365,"link":366},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":367,"config":368},"Learn more",{"href":369,"dataGaName":370,"dataGaLocation":325},"/why-gitlab/","why gitlab",{"text":372,"left":307,"config":373,"menu":375},"Product",{"dataNavLevelOne":374},"solutions",{"type":376,"link":377,"columns":381,"feature":450},"lists",{"text":378,"config":379},"View all Solutions",{"href":380,"dataGaName":374,"dataGaLocation":325},"/solutions/",[382,406,429],{"title":383,"description":384,"link":385,"items":390},"Automation","CI/CD and automation to accelerate deployment",{"config":386},{"icon":387,"href":388,"dataGaName":389,"dataGaLocation":325},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[391,395,398,402],{"text":392,"config":393},"CI/CD",{"href":394,"dataGaLocation":325,"dataGaName":392},"/solutions/continuous-integration/",{"text":356,"config":396},{"href":361,"dataGaLocation":325,"dataGaName":397},"gitlab duo agent platform - product menu",{"text":399,"config":400},"Source Code Management",{"href":401,"dataGaLocation":325,"dataGaName":399},"/solutions/source-code-management/",{"text":403,"config":404},"Automated Software Delivery",{"href":388,"dataGaLocation":325,"dataGaName":405},"Automated software delivery",{"title":407,"description":408,"link":409,"items":414},"Security","Deliver code faster without compromising security",{"config":410},{"href":411,"dataGaName":412,"dataGaLocation":325,"icon":413},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[415,419,424],{"text":416,"config":417},"Application Security Testing",{"href":411,"dataGaName":418,"dataGaLocation":325},"Application security testing",{"text":420,"config":421},"Software Supply Chain Security",{"href":422,"dataGaLocation":325,"dataGaName":423},"/solutions/supply-chain/","Software supply chain security",{"text":425,"config":426},"Software Compliance",{"href":427,"dataGaName":428,"dataGaLocation":325},"/solutions/software-compliance/","software compliance",{"title":430,"link":431,"items":436},"Measurement",{"config":432},{"icon":433,"href":434,"dataGaName":435,"dataGaLocation":325},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[437,441,445],{"text":438,"config":439},"Visibility & Measurement",{"href":434,"dataGaLocation":325,"dataGaName":440},"Visibility and Measurement",{"text":442,"config":443},"Value Stream Management",{"href":444,"dataGaLocation":325,"dataGaName":442},"/solutions/value-stream-management/",{"text":446,"config":447},"Analytics & Insights",{"href":448,"dataGaLocation":325,"dataGaName":449},"/solutions/analytics-and-insights/","Analytics and insights",{"title":451,"type":376,"items":452},"GitLab for",[453,459,465],{"text":454,"config":455},"Enterprise",{"icon":456,"href":457,"dataGaLocation":325,"dataGaName":458},"Building","/enterprise/","enterprise",{"text":460,"config":461},"Small Business",{"icon":462,"href":463,"dataGaLocation":325,"dataGaName":464},"Work","/small-business/","small business",{"text":466,"config":467},"Public Sector",{"icon":468,"href":469,"dataGaLocation":325,"dataGaName":470},"Organization","/solutions/public-sector/","public sector",{"text":472,"config":473},"Pricing",{"href":474,"dataGaName":475,"dataGaLocation":325,"dataNavLevelOne":475},"/pricing/","pricing",{"text":477,"config":478,"menu":480},"Resources",{"dataNavLevelOne":479},"resources",{"type":376,"link":481,"columns":485,"feature":579},{"text":482,"config":483},"View all resources",{"href":484,"dataGaName":479,"dataGaLocation":325},"/resources/",[486,519,546],{"title":487,"items":488},"Getting started",[489,494,499,504,509,514],{"text":490,"config":491},"Install",{"href":492,"dataGaName":493,"dataGaLocation":325},"/install/","install",{"text":495,"config":496},"Quick start guides",{"href":497,"dataGaName":498,"dataGaLocation":325},"/get-started/","quick setup checklists",{"text":500,"config":501},"Learn",{"href":502,"dataGaLocation":325,"dataGaName":503},"https://university.gitlab.com/","learn",{"text":505,"config":506},"Product documentation",{"href":507,"dataGaName":508,"dataGaLocation":325},"https://docs.gitlab.com/","product documentation",{"text":510,"config":511},"Best practice videos",{"href":512,"dataGaName":513,"dataGaLocation":325},"/getting-started-videos/","best practice videos",{"text":515,"config":516},"Integrations",{"href":517,"dataGaName":518,"dataGaLocation":325},"/integrations/","integrations",{"title":520,"items":521},"Discover",[522,527,532,537,541],{"text":523,"config":524},"Customer success stories",{"href":525,"dataGaName":526,"dataGaLocation":325},"/customers/","customer success stories",{"text":528,"config":529},"Blog",{"href":530,"dataGaName":531,"dataGaLocation":325},"/blog/","blog",{"text":533,"config":534},"Demo Hub",{"href":535,"dataGaName":536,"dataGaLocation":325},"/demo-hub/","demo hub",{"text":538,"config":539},"The Source",{"href":540,"dataGaName":531,"dataGaLocation":325},"/the-source/",{"text":542,"config":543},"Remote",{"href":544,"dataGaName":545,"dataGaLocation":325},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":547,"items":548},"Connect",[549,554,559,564,569,574],{"text":550,"config":551},"GitLab Services",{"href":552,"dataGaName":553,"dataGaLocation":325},"/services/","services",{"text":555,"config":556},"Contribute",{"href":557,"dataGaName":558,"dataGaLocation":325},"https://contributors.gitlab.com","contribute",{"text":560,"config":561},"Community",{"href":562,"dataGaName":563,"dataGaLocation":325},"/community/","community",{"text":565,"config":566},"Forum",{"href":567,"dataGaName":568,"dataGaLocation":325},"https://forum.gitlab.com/","forum",{"text":570,"config":571},"Events",{"href":572,"dataGaName":573,"dataGaLocation":325},"/events/","events",{"text":575,"config":576},"Partners",{"href":577,"dataGaName":578,"dataGaLocation":325},"/partners/","partners",{"config":580,"title":583,"text":584,"link":585},{"background":581,"textColor":582},"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":586,"config":587},"Read the latest",{"href":588,"dataGaName":589,"dataGaLocation":325},"/whats-new/","whats new",{"text":591,"config":592,"menu":594},"Company",{"dataNavLevelOne":593},"company",{"type":376,"columns":595},[596],{"items":597},[598,603,609,611,616,621,626,631,636,641],{"text":599,"config":600},"About",{"href":601,"dataGaName":602,"dataGaLocation":325},"/company/","about",{"text":604,"config":605,"footerGa":608},"Jobs",{"href":606,"dataGaName":607,"dataGaLocation":325},"/jobs/","jobs",{"dataGaName":607},{"text":570,"config":610},{"href":572,"dataGaName":573,"dataGaLocation":325},{"text":612,"config":613},"Leadership",{"href":614,"dataGaName":615,"dataGaLocation":325},"/company/team/e-group/","leadership",{"text":617,"config":618},"Handbook",{"href":619,"dataGaName":620,"dataGaLocation":325},"https://handbook.gitlab.com/","handbook",{"text":622,"config":623},"Investor relations",{"href":624,"dataGaName":625,"dataGaLocation":325},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":627,"config":628},"Trust Center",{"href":629,"dataGaName":630,"dataGaLocation":325},"/security/","trust center",{"text":632,"config":633},"AI Transparency Center",{"href":634,"dataGaName":635,"dataGaLocation":325},"/ai-transparency-center/","ai transparency center",{"text":637,"config":638},"Newsletter",{"href":639,"dataGaName":640,"dataGaLocation":325},"/company/contact/#contact-forms","newsletter",{"text":642,"config":643},"Press",{"href":644,"dataGaName":645,"dataGaLocation":325},"/press/","press",{"text":647,"config":648,"menu":649},"Contact us",{"dataNavLevelOne":593},{"type":376,"columns":650},[651],{"items":652},[653,658,663],{"text":654,"config":655},"Talk to sales",{"href":656,"dataGaName":657,"dataGaLocation":325},"/sales/","talk to sales",{"text":659,"config":660},"Support portal",{"href":661,"dataGaName":662,"dataGaLocation":325},"https://support.gitlab.com/hc/en-us","support portal",{"text":664,"config":665},"Customer portal",{"href":666,"dataGaName":667,"dataGaLocation":325},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":669,"login":670,"suggestions":677},"Close",{"text":671,"link":672},"To search repositories and projects, login to",{"text":673,"config":674},"gitlab.com",{"href":339,"dataGaName":675,"dataGaLocation":676},"search login","search",{"text":678,"default":679},"Suggestions",[680,682,686,688,692,696],{"text":356,"config":681},{"href":361,"dataGaName":356,"dataGaLocation":676},{"text":683,"config":684},"Code Suggestions (AI)",{"href":685,"dataGaName":683,"dataGaLocation":676},"/solutions/code-suggestions/",{"text":392,"config":687},{"href":394,"dataGaName":392,"dataGaLocation":676},{"text":689,"config":690},"GitLab on AWS",{"href":691,"dataGaName":689,"dataGaLocation":676},"/partners/technology-partners/aws/",{"text":693,"config":694},"GitLab on Google Cloud",{"href":695,"dataGaName":693,"dataGaLocation":676},"/partners/technology-partners/google-cloud-platform/",{"text":697,"config":698},"Why GitLab?",{"href":369,"dataGaName":697,"dataGaLocation":676},{"freeTrial":700,"mobileIcon":705,"desktopIcon":710,"secondaryButton":713},{"text":701,"config":702},"Start free trial",{"href":703,"dataGaName":330,"dataGaLocation":704},"https://gitlab.com/-/trials/new/","nav",{"altText":706,"config":707},"Gitlab Icon",{"src":708,"dataGaName":709,"dataGaLocation":704},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":706,"config":711},{"src":712,"dataGaName":709,"dataGaLocation":704},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":714,"config":715},"Get Started",{"href":716,"dataGaName":717,"dataGaLocation":704},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":719,"mobileIcon":723,"desktopIcon":725},{"text":720,"config":721},"Learn more about GitLab Duo",{"href":361,"dataGaName":722,"dataGaLocation":704},"gitlab duo",{"altText":706,"config":724},{"src":708,"dataGaName":709,"dataGaLocation":704},{"altText":706,"config":726},{"src":712,"dataGaName":709,"dataGaLocation":704},{"button":728,"mobileIcon":733,"desktopIcon":735},{"text":729,"config":730},"/switch",{"href":731,"dataGaName":732,"dataGaLocation":704},"#contact","switch",{"altText":706,"config":734},{"src":708,"dataGaName":709,"dataGaLocation":704},{"altText":706,"config":736},{"src":737,"dataGaName":709,"dataGaLocation":704},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":739,"mobileIcon":744,"desktopIcon":746},{"text":740,"config":741},"Back to pricing",{"href":474,"dataGaName":742,"dataGaLocation":704,"icon":743},"back to pricing","GoBack",{"altText":706,"config":745},{"src":708,"dataGaName":709,"dataGaLocation":704},{"altText":706,"config":747},{"src":712,"dataGaName":709,"dataGaLocation":704},{"title":749,"titleMobile":750,"button":751,"config":756},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":367,"config":752},{"href":753,"dataGaName":754,"dataGaLocation":755},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":757,"disabled":304},"release",{"data":759},{"text":760,"source":761,"edit":767,"contribute":772,"config":777,"items":782,"minimal":990},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":762,"config":763},"View page source",{"href":764,"dataGaName":765,"dataGaLocation":766},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":768,"config":769},"Edit this page",{"href":770,"dataGaName":771,"dataGaLocation":766},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":773,"config":774},"Please contribute",{"href":775,"dataGaName":776,"dataGaLocation":766},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":778,"facebook":779,"youtube":780,"linkedin":781},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[783,830,882,926,958],{"title":472,"links":784,"subMenu":799},[785,789,794],{"text":786,"config":787},"View plans",{"href":474,"dataGaName":788,"dataGaLocation":766},"view plans",{"text":790,"config":791},"Why Premium?",{"href":792,"dataGaName":793,"dataGaLocation":766},"/pricing/premium/","why premium",{"text":795,"config":796},"Why Ultimate?",{"href":797,"dataGaName":798,"dataGaLocation":766},"/pricing/ultimate/","why ultimate",[800],{"title":801,"links":802},"Contact Us",[803,806,808,810,815,820,825],{"text":804,"config":805},"Contact sales",{"href":656,"dataGaName":335,"dataGaLocation":766},{"text":659,"config":807},{"href":661,"dataGaName":662,"dataGaLocation":766},{"text":664,"config":809},{"href":666,"dataGaName":667,"dataGaLocation":766},{"text":811,"config":812},"Status",{"href":813,"dataGaName":814,"dataGaLocation":766},"https://status.gitlab.com/","status",{"text":816,"config":817},"Terms of use",{"href":818,"dataGaName":819,"dataGaLocation":766},"/terms/","terms of use",{"text":821,"config":822},"Privacy statement",{"href":823,"dataGaName":824,"dataGaLocation":766},"/privacy/","privacy statement",{"text":826,"config":827},"Cookie preferences",{"dataGaName":828,"dataGaLocation":766,"id":829,"isOneTrustButton":307},"cookie preferences","ot-sdk-btn",{"title":372,"links":831,"subMenu":840},[832,836],{"text":833,"config":834},"DevSecOps platform",{"href":354,"dataGaName":835,"dataGaLocation":766},"devsecops platform",{"text":837,"config":838},"AI-Assisted Development",{"href":361,"dataGaName":839,"dataGaLocation":766},"ai-assisted development",[841],{"title":842,"links":843},"Topics",[844,849,854,858,863,867,872,877],{"text":845,"config":846},"CICD",{"href":847,"dataGaName":848,"dataGaLocation":766},"/topics/ci-cd/","cicd",{"text":850,"config":851},"GitOps",{"href":852,"dataGaName":853,"dataGaLocation":766},"/topics/gitops/","gitops",{"text":28,"config":855},{"href":856,"dataGaName":857,"dataGaLocation":766},"/topics/devops/","devops",{"text":859,"config":860},"Version Control",{"href":861,"dataGaName":862,"dataGaLocation":766},"/topics/version-control/","version control",{"text":864,"config":865},"DevSecOps",{"href":866,"dataGaName":299,"dataGaLocation":766},"/topics/devsecops/",{"text":868,"config":869},"Cloud Native",{"href":870,"dataGaName":871,"dataGaLocation":766},"/topics/cloud-native/","cloud native",{"text":873,"config":874},"AI for Coding",{"href":875,"dataGaName":876,"dataGaLocation":766},"/topics/devops/ai-for-coding/","ai for coding",{"text":878,"config":879},"Agentic AI",{"href":880,"dataGaName":881,"dataGaLocation":766},"/topics/agentic-ai/","agentic ai",{"title":883,"links":884},"Solutions",[885,887,889,894,898,901,905,908,910,913,916,921],{"text":416,"config":886},{"href":411,"dataGaName":416,"dataGaLocation":766},{"text":405,"config":888},{"href":388,"dataGaName":389,"dataGaLocation":766},{"text":890,"config":891},"Agile development",{"href":892,"dataGaName":893,"dataGaLocation":766},"/solutions/agile-delivery/","agile delivery",{"text":895,"config":896},"SCM",{"href":401,"dataGaName":897,"dataGaLocation":766},"source code management",{"text":845,"config":899},{"href":394,"dataGaName":900,"dataGaLocation":766},"continuous integration & delivery",{"text":902,"config":903},"Value stream management",{"href":444,"dataGaName":904,"dataGaLocation":766},"value stream management",{"text":850,"config":906},{"href":907,"dataGaName":853,"dataGaLocation":766},"/solutions/gitops/",{"text":454,"config":909},{"href":457,"dataGaName":458,"dataGaLocation":766},{"text":911,"config":912},"Small business",{"href":463,"dataGaName":464,"dataGaLocation":766},{"text":914,"config":915},"Public sector",{"href":469,"dataGaName":470,"dataGaLocation":766},{"text":917,"config":918},"Education",{"href":919,"dataGaName":920,"dataGaLocation":766},"/solutions/education/","education",{"text":922,"config":923},"Financial services",{"href":924,"dataGaName":925,"dataGaLocation":766},"/solutions/finance/","financial services",{"title":477,"links":927},[928,930,932,934,937,939,942,944,946,948,950,952,954,956],{"text":490,"config":929},{"href":492,"dataGaName":493,"dataGaLocation":766},{"text":495,"config":931},{"href":497,"dataGaName":498,"dataGaLocation":766},{"text":500,"config":933},{"href":502,"dataGaName":503,"dataGaLocation":766},{"text":505,"config":935},{"href":507,"dataGaName":936,"dataGaLocation":766},"docs",{"text":528,"config":938},{"href":530,"dataGaName":531,"dataGaLocation":766},{"text":940,"config":941},"What's new",{"href":588,"dataGaName":589,"dataGaLocation":766},{"text":523,"config":943},{"href":525,"dataGaName":526,"dataGaLocation":766},{"text":542,"config":945},{"href":544,"dataGaName":545,"dataGaLocation":766},{"text":550,"config":947},{"href":552,"dataGaName":553,"dataGaLocation":766},{"text":555,"config":949},{"href":557,"dataGaName":558,"dataGaLocation":766},{"text":560,"config":951},{"href":562,"dataGaName":563,"dataGaLocation":766},{"text":565,"config":953},{"href":567,"dataGaName":568,"dataGaLocation":766},{"text":570,"config":955},{"href":572,"dataGaName":573,"dataGaLocation":766},{"text":575,"config":957},{"href":577,"dataGaName":578,"dataGaLocation":766},{"title":591,"links":959},[960,962,964,966,968,970,974,979,981,983,985],{"text":599,"config":961},{"href":601,"dataGaName":593,"dataGaLocation":766},{"text":604,"config":963},{"href":606,"dataGaName":607,"dataGaLocation":766},{"text":612,"config":965},{"href":614,"dataGaName":615,"dataGaLocation":766},{"text":617,"config":967},{"href":619,"dataGaName":620,"dataGaLocation":766},{"text":622,"config":969},{"href":624,"dataGaName":625,"dataGaLocation":766},{"text":971,"config":972},"Sustainability",{"href":973,"dataGaName":971,"dataGaLocation":766},"/sustainability/",{"text":975,"config":976},"Diversity, inclusion and belonging (DIB)",{"href":977,"dataGaName":978,"dataGaLocation":766},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":627,"config":980},{"href":629,"dataGaName":630,"dataGaLocation":766},{"text":637,"config":982},{"href":639,"dataGaName":640,"dataGaLocation":766},{"text":642,"config":984},{"href":644,"dataGaName":645,"dataGaLocation":766},{"text":986,"config":987},"Modern Slavery Transparency Statement",{"href":988,"dataGaName":989,"dataGaLocation":766},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":991},[992,995,998],{"text":993,"config":994},"Terms",{"href":818,"dataGaName":819,"dataGaLocation":766},{"text":996,"config":997},"Cookies",{"dataGaName":828,"dataGaLocation":766,"id":829,"isOneTrustButton":307},{"text":999,"config":1000},"Privacy",{"href":823,"dataGaName":824,"dataGaLocation":766},[1002],{"id":1003,"title":1004,"body":303,"config":1005,"content":1007,"description":303,"extension":1010,"meta":1011,"navigation":307,"path":1012,"seo":1013,"stem":1014,"__hash__":1015},"blogAuthors/en-us/blog/authors/gitlab.yml","Gitlab",{"template":1006},"BlogAuthor",{"name":7,"config":1008},{"headshot":1009,"ctfId":7},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","yml",{},"/en-us/blog/authors/gitlab",{},"en-us/blog/authors/gitlab","XCBKIcPoCs6zi2oHG7o-bAp52Jhaw8_zGhIJ2jNrEjU",[1017,1025,1033],{"title":1018,"description":1019,"heroImage":1020,"category":299,"date":1021,"authors":1022,"slug":1024,"externalUrl":303},"Consolidate your GitLab stack with Gitaly on Kubernetes","Discover how to install Gitaly on Kubernetes, which is now generally available.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756500636/wmey6kqzzuhirk88w2de.png","2026-05-07",[1023],"Olivier Campeau","gitaly-on-kubernetes-generally-available",{"title":1026,"description":1027,"heroImage":1028,"category":299,"date":1029,"authors":1030,"slug":1032,"externalUrl":303},"Teaching software development the easy way using GitLab","Learn how University of Washington lecturer Stephen G. Dame uses GitLab for Education to manage student assignments, distribute course materials, and provide inline code feedback at scale.\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659537/Blog/Hero%20Images/display-article-image-0679-1800x945-fy26.png","2026-04-29",[1031],"Rod Burns","teaching-software-development-the-easy-way-using-gitlab",{"title":1034,"description":1035,"heroImage":1036,"category":299,"date":1037,"authors":1038,"slug":1040,"externalUrl":303},"AI is reshaping DevSecOps: Attend GitLab Transcend to see what’s next","AI-generated code is 34% of development work. Discover how to balance productivity gains with quality, reliability, and security.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1767982271/e9ogyosmuummq7j65zqg.png","2026-01-08",[1039],"Manav Khurana","ai-is-reshaping-devsecops-attend-gitlab-transcend-to-see-whats-next",{"promotions":1042},[1043,1057,1069,1081],{"id":1044,"categories":1045,"header":1047,"text":1048,"button":1049,"image":1054},"ai-modernization",[1046],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1050,"config":1051},"Get your AI maturity score",{"href":1052,"dataGaName":1053,"dataGaLocation":531},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1055},{"src":1056},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1058,"categories":1059,"header":1061,"text":1048,"button":1062,"image":1066},"devops-modernization",[1060,299],"product","Are you just managing tools or shipping innovation?",{"text":1063,"config":1064},"Get your DevOps maturity score",{"href":1065,"dataGaName":1053,"dataGaLocation":531},"/assessments/devops-modernization-assessment/",{"config":1067},{"src":1068},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1070,"categories":1071,"header":1073,"text":1048,"button":1074,"image":1078},"security-modernization",[1072],"security","Are you trading speed for security?",{"text":1075,"config":1076},"Get your security maturity score",{"href":1077,"dataGaName":1053,"dataGaLocation":531},"/assessments/security-modernization-assessment/",{"config":1079},{"src":1080},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1082,"paths":1083,"header":1086,"text":1087,"button":1088,"image":1093},"github-azure-migration",[1084,1085],"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":1089,"config":1090},"See how GitLab compares to GitHub",{"href":1091,"dataGaName":1092,"dataGaLocation":531},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1094},{"src":1068},{"header":1096,"blurb":1097,"button":1098,"secondaryButton":1103},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1099,"config":1100},"Get your free trial",{"href":1101,"dataGaName":330,"dataGaLocation":1102},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":804,"config":1104},{"href":656,"dataGaName":335,"dataGaLocation":1102},1786803730797]