[{"data":1,"prerenderedAt":1056},["ShallowReactive",2],{"/blog/donatinator-open-source-donation-platform":3,"navigation-en-us":272,"banner-en-us":698,"footer-en-us":708,"blog-post-authors-en-us-Andrew Chilton":953,"blog-related-posts-en-us-donatinator-open-source-donation-platform":967,"blog-promotions-en-us":992,"next-steps-en-us":1046},{"id":4,"title":5,"authors":6,"body":8,"category":250,"date":251,"description":252,"extension":253,"externalUrl":254,"faq":254,"featured":255,"heroImage":256,"meta":257,"navigation":258,"path":259,"seo":260,"slug":265,"stem":266,"tags":267,"template":270,"updatedDate":254,"__hash__":271},"blogPosts/en-us/blog/donatinator-open-source-donation-platform.md","The Donatinator: A simple, secure way to accept donations to your charity or non-profit",[7],"Andrew Chilton",{"type":9,"value":10,"toc":232},"minimark",[11,15,18,21,26,29,54,58,61,64,86,89,92,95,106,110,113,118,125,134,138,141,144,148,151,154,158,161,165,185,189,198,202,205,212,215,218],[12,13,14],"p",{},"Many small non-profits or charity organizations all over the world find it really difficult to accept one-off donations or set up monthly subscriptions online. I know this from firsthand experience.",[12,16,17],{},"Last year my wife came to me asking how the organization she volunteers at – a mothers’ support group – could accept donations on their website. My first thought was that the (free) hosting provider they were using would have a feature to do that, but no, not unless you pay, and for a small charity even $10 or $20 per month is too expensive.",[12,19,20],{},"My second thought was to investigate hosting or donation portals. Here's where the journey started.",[22,23,25],"h2",{"id":24},"donation-platforms-offer-a-mixed-bag","Donation platforms offer a mixed bag",[12,27,28],{},"After looking at various donation platforms, we realised that many differences exist and that you can't always have it all. Some of them:",[30,31,32,36,39,42,45,48,51],"ul",{},[33,34,35],"li",{},"Are only http unless you pay up front.",[33,37,38],{},"Support single donations OR subscriptions, but not both.",[33,40,41],{},"Are based around a fundraising model (to attain a target amount) but don't support ongoing payments.",[33,43,44],{},"Are US only, but since we're in New Zealand we needed something that would work here.",[33,46,47],{},"Provide an iframe payment page but not all.",[33,49,50],{},"Have a free tier but others required payment from day 1.",[33,52,53],{},"Don't have a team plan such that members of the charity committee can log in and administer the portal.",[22,55,57],{"id":56},"looking-for-an-open-source-solution","Looking for an open source solution",[12,59,60],{},"I kept thinking to myself that there must be an open source project out there already that could do all of this for free. Small charities and non-profits don't have the ability to pay for things up front, especially when it's not part of their core mission. After a while reading, reviewing, comparing, and planning, my non-negotiable for the platform became that \"We didn't have to pay more than necessary.\"",[12,62,63],{},"The only fee we wouldn't be able to get around was credit card processing. Added that we would only pay a percentage fee once we receive a donation rather than up front was also a good result.",[12,65,66,67,73,74,79,80,85],{},"Being a coder and being unimpressed with the status quo, I started coding. Within a month ",[68,69,72],"a",{"href":70,"rel":71},"http://donatinator.org/",[],"The Donatinator"," (",[68,75,78],{"href":76,"rel":77},"https://donatinator.herokuapp.com/",[],"demo",", ",[68,81,84],{"href":82,"rel":83},"https://gitlab.com/donatinator/",[],"code",") was born.",[22,87,72],{"id":88},"the-donatinator",[12,90,91],{},"Shortly after launch, The Donatinator can already accept one-off or recurring donations, add and edit simple Markdown pages, and allow multiple team members to log in for administration and basic reporting.",[12,93,94],{},"More features are planned, but the most important thing about the project is that it should be guided by a few founding principles. These are (far from perfect, but a good start):",[30,96,97,100,103],{},[33,98,99],{},"The software should be open source so it is free for the end user, for now and always.",[33,101,102],{},"A basic installation should run within the free tier of various hosting providers.",[33,104,105],{},"The user should only have to pay for credit card processing fees (but if we can get around this one day we will!) 😃",[22,107,109],{"id":108},"why-open-source","Why open source?",[12,111,112],{},"Allowing anyone and everyone to use, download, install, change, contribute, and enjoy The Donatinator is paramount to enabling every organisation anywhere to accept donations and allow them to continue the great work they are doing and the help they are providing.",[114,115,117],"h3",{"id":116},"why-gitlab","Why GitLab?",[12,119,120,121],{},"Since we ourselves are open source, choosing a code-hosting provider that is also open source aligns with our values nicely. ",[122,123,124],"plug",{}," GitLab is the natural home of projects like us and we're very grateful of their hospitality (as well as their 2,000 CI pipeline minutes per month!). ",[12,126,127,128,133],{},"Funnily enough this also brought home the idea that it's not actually just the technology that is the interesting part of the project. GitLab's handbook has a great page on values but a very small part of that is the idea of ",[68,129,132],{"href":130,"rel":131},"https://handbook.gitlab.com/handbook/values/#efficiency",[],"boring solutions"," which we're also using to guide our technology decisions, keeping things simple and lite.",[114,135,137],{"id":136},"a-word-on-pragmatism","A word on pragmatism",[12,139,140],{},"Even though we'd love everything to be open source, we know we can't have everything. With that we'd like to thank the following companies that we're currently using to make The Donatinator fulfill its aim. With free plans on Heroku, Google, Glitch, Zeit, MailGun, and others, we should be able to achieve these goals for charities who may only receive a few donations each month, which can make all the difference between helping people or closing down completely due to insufficient funds. Also thanks to Stripe for having a discounted fee for registered charities to maximize each and every donation.",[12,142,143],{},"Which leads me to a confession ...",[22,145,147],{"id":146},"a-high-high-and-a-low-low","A high high, and a low low",[12,149,150],{},"Starting a new project is always exciting. Tap tap, code, test, commit, one late night after another. But then the bad news came ...",[12,152,153],{},"The small charity all of this work was initially done for decided to use an existing donor platform. I can understand why, but rather than dwelling on it, I decided to continue working on The Donatinator anyway. I'm still convinced there is a place for it in the world and a variety of people and organisations can benefit from it, if only they knew about it.",[22,155,157],{"id":156},"asking-for-help-contributions-and-donations","Asking for help, contributions, and donations",[12,159,160],{},"Without shame I am now asking you all for help. The Donatinator is a new project and there is still lots to do, however there are three main areas in which help would be awesome and greatly appreciated!",[114,162,164],{"id":163},"please-contribute","Please contribute!",[12,166,167,168,172,173,178,179,184],{},"Firstly, contributions of ",[68,169,84],{"href":170,"rel":171},"https://gitlab.com/donatinator/donatinator/",[]," and ",[68,174,177],{"href":175,"rel":176},"https://gitlab.com/donatinator/docs/",[],"documentation"," are welcome and very important. Participating in the ",[68,180,183],{"href":181,"rel":182},"https://spectrum.chat/donatinator",[],"community"," also helps a project thrive and we'd love to chat to you about your needs and requirements.",[114,186,188],{"id":187},"please-donate","Please donate!",[12,190,191,192,197],{},"Secondly, I'm looking for ",[68,193,196],{"href":194,"rel":195},"https://donate.donatinator.org/",[],"patrons and sponsorship"," (yes, it's self hosted) to be able to take the project forward faster. Sustainable open source is still a panacea but I believe it can happen. I don't believe that the charities and non-profits who use The Donatinator should have to pay for the use of it but that means we need to look elsewhere to help with sustainability.",[114,199,201],{"id":200},"please-spread-the-word","Please spread the word!",[12,203,204],{},"And finally but most importantly – users! If there are no users, then there is no project.",[12,206,207,208,211],{},"If you know a person, a non-profit, or a charity who could use ",[68,209,72],{"href":70,"rel":210},[],", please get in touch with them. Many are run by non-technical volunteers and they would love to have your help in setting up online donations. Get in touch with us too, for help or if you have any questions – we'd love to hear about your progress and your feedback would be invaluable!",[12,213,214],{},"(You could also run The Donatinator yourself for your own open source project or for your own patron portal. Hint hint! 😃)",[12,216,217],{},"There is lots of functionality penciled in for future Donatinator releases but there is nothing like having real users provide ideas or ask for specific features. This is a terrific opportunity to help the helpers ... so come on, let's make it happen! We can do this 😃",[12,219,220,221,226,227],{},"Cover image by ",[68,222,225],{"href":223,"rel":224},"https://unsplash.com/photos/0sPFjdcRhko?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText",[],"Steve Johnson"," on ",[68,228,231],{"href":229,"rel":230},"https://unsplash.com/search/photos/coins?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText",[],"Unsplash",{"title":233,"searchDepth":234,"depth":234,"links":235},"",2,[236,237,238,239,244,245],{"id":24,"depth":234,"text":25},{"id":56,"depth":234,"text":57},{"id":88,"depth":234,"text":72},{"id":108,"depth":234,"text":109,"children":240},[241,243],{"id":116,"depth":242,"text":117},3,{"id":136,"depth":242,"text":137},{"id":146,"depth":234,"text":147},{"id":156,"depth":234,"text":157,"children":246},[247,248,249],{"id":163,"depth":242,"text":164},{"id":187,"depth":242,"text":188},{"id":200,"depth":242,"text":201},"open-source","2019-02-06","This guest author shares his passion project: a free and open source solution for small charities and non-profits to accept donations online.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679940/Blog/Hero%20Images/donatinator-open-source.jpg",{},true,"/en-us/blog/donatinator-open-source-donation-platform",{"title":261,"description":252,"ogTitle":261,"ogDescription":252,"noIndex":255,"ogImage":256,"ogUrl":262,"ogSiteName":263,"ogType":264,"canonicalUrls":262},"The Donatinator: Simple donation solution for charities","https://about.gitlab.com/blog/donatinator-open-source-donation-platform","https://about.gitlab.com","article","donatinator-open-source-donation-platform","en-us/blog/donatinator-open-source-donation-platform",[268,183,269],"open source","user stories","BlogPost","YG-dGL644cDmh4GvF7unrKF66vYnp8HV_-AFbTCPON8",{"logo":273,"freeTrial":278,"sales":283,"login":288,"items":293,"search":619,"minimal":649,"duo":668,"switchNav":677,"pricingDeployment":688},{"config":274},{"href":275,"dataGaName":276,"dataGaLocation":277},"/","gitlab logo","header",{"text":279,"config":280},"Get free trial",{"href":281,"dataGaName":282,"dataGaLocation":277},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":284,"config":285},"Request a demo",{"href":286,"dataGaName":287,"dataGaLocation":277},"/sales/?contact-topic=request-demo","sales",{"text":289,"config":290},"Sign in",{"href":291,"dataGaName":292,"dataGaLocation":277},"https://gitlab.com/users/sign_in/","sign in",[294,323,423,428,541,597],{"text":295,"config":296,"menu":298},"Platform",{"dataNavLevelOne":297},"platform",{"type":299,"columns":300},"cards",[301,307,315],{"title":295,"description":302,"link":303},"The intelligent orchestration platform for DevSecOps",{"text":304,"config":305},"Explore our Platform",{"href":306,"dataGaName":297,"dataGaLocation":277},"/platform/",{"title":308,"description":309,"link":310},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":311,"config":312},"Meet GitLab Duo",{"href":313,"dataGaName":314,"dataGaLocation":277},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":316,"description":317,"link":318},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":319,"config":320},"Learn more",{"href":321,"dataGaName":322,"dataGaLocation":277},"/why-gitlab/","why gitlab",{"text":324,"left":258,"config":325,"menu":327},"Product",{"dataNavLevelOne":326},"solutions",{"type":328,"link":329,"columns":333,"feature":402},"lists",{"text":330,"config":331},"View all Solutions",{"href":332,"dataGaName":326,"dataGaLocation":277},"/solutions/",[334,358,381],{"title":335,"description":336,"link":337,"items":342},"Automation","CI/CD and automation to accelerate deployment",{"config":338},{"icon":339,"href":340,"dataGaName":341,"dataGaLocation":277},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[343,347,350,354],{"text":344,"config":345},"CI/CD",{"href":346,"dataGaLocation":277,"dataGaName":344},"/solutions/continuous-integration/",{"text":308,"config":348},{"href":313,"dataGaLocation":277,"dataGaName":349},"gitlab duo agent platform - product menu",{"text":351,"config":352},"Source Code Management",{"href":353,"dataGaLocation":277,"dataGaName":351},"/solutions/source-code-management/",{"text":355,"config":356},"Automated Software Delivery",{"href":340,"dataGaLocation":277,"dataGaName":357},"Automated software delivery",{"title":359,"description":360,"link":361,"items":366},"Security","Deliver code faster without compromising security",{"config":362},{"href":363,"dataGaName":364,"dataGaLocation":277,"icon":365},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[367,371,376],{"text":368,"config":369},"Application Security Testing",{"href":363,"dataGaName":370,"dataGaLocation":277},"Application security testing",{"text":372,"config":373},"Software Supply Chain Security",{"href":374,"dataGaLocation":277,"dataGaName":375},"/solutions/supply-chain/","Software supply chain security",{"text":377,"config":378},"Software Compliance",{"href":379,"dataGaName":380,"dataGaLocation":277},"/solutions/software-compliance/","software compliance",{"title":382,"link":383,"items":388},"Measurement",{"config":384},{"icon":385,"href":386,"dataGaName":387,"dataGaLocation":277},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[389,393,397],{"text":390,"config":391},"Visibility & Measurement",{"href":386,"dataGaLocation":277,"dataGaName":392},"Visibility and Measurement",{"text":394,"config":395},"Value Stream Management",{"href":396,"dataGaLocation":277,"dataGaName":394},"/solutions/value-stream-management/",{"text":398,"config":399},"Analytics & Insights",{"href":400,"dataGaLocation":277,"dataGaName":401},"/solutions/analytics-and-insights/","Analytics and insights",{"title":403,"type":328,"items":404},"GitLab for",[405,411,417],{"text":406,"config":407},"Enterprise",{"icon":408,"href":409,"dataGaLocation":277,"dataGaName":410},"Building","/enterprise/","enterprise",{"text":412,"config":413},"Small Business",{"icon":414,"href":415,"dataGaLocation":277,"dataGaName":416},"Work","/small-business/","small business",{"text":418,"config":419},"Public Sector",{"icon":420,"href":421,"dataGaLocation":277,"dataGaName":422},"Organization","/solutions/public-sector/","public sector",{"text":424,"config":425},"Pricing",{"href":426,"dataGaName":427,"dataGaLocation":277,"dataNavLevelOne":427},"/pricing/","pricing",{"text":429,"config":430,"menu":432},"Resources",{"dataNavLevelOne":431},"resources",{"type":328,"link":433,"columns":437,"feature":530},{"text":434,"config":435},"View all resources",{"href":436,"dataGaName":431,"dataGaLocation":277},"/resources/",[438,471,498],{"title":439,"items":440},"Getting started",[441,446,451,456,461,466],{"text":442,"config":443},"Install",{"href":444,"dataGaName":445,"dataGaLocation":277},"/install/","install",{"text":447,"config":448},"Quick start guides",{"href":449,"dataGaName":450,"dataGaLocation":277},"/get-started/","quick setup checklists",{"text":452,"config":453},"Learn",{"href":454,"dataGaLocation":277,"dataGaName":455},"https://university.gitlab.com/","learn",{"text":457,"config":458},"Product documentation",{"href":459,"dataGaName":460,"dataGaLocation":277},"https://docs.gitlab.com/","product documentation",{"text":462,"config":463},"Best practice videos",{"href":464,"dataGaName":465,"dataGaLocation":277},"/getting-started-videos/","best practice videos",{"text":467,"config":468},"Integrations",{"href":469,"dataGaName":470,"dataGaLocation":277},"/integrations/","integrations",{"title":472,"items":473},"Discover",[474,479,484,489,493],{"text":475,"config":476},"Customer success stories",{"href":477,"dataGaName":478,"dataGaLocation":277},"/customers/","customer success stories",{"text":480,"config":481},"Blog",{"href":482,"dataGaName":483,"dataGaLocation":277},"/blog/","blog",{"text":485,"config":486},"Demo Hub",{"href":487,"dataGaName":488,"dataGaLocation":277},"/demo-hub/","demo hub",{"text":490,"config":491},"The Source",{"href":492,"dataGaName":483,"dataGaLocation":277},"/the-source/",{"text":494,"config":495},"Remote",{"href":496,"dataGaName":497,"dataGaLocation":277},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":499,"items":500},"Connect",[501,506,511,515,520,525],{"text":502,"config":503},"GitLab Services",{"href":504,"dataGaName":505,"dataGaLocation":277},"/services/","services",{"text":507,"config":508},"Contribute",{"href":509,"dataGaName":510,"dataGaLocation":277},"https://contributors.gitlab.com","contribute",{"text":512,"config":513},"Community",{"href":514,"dataGaName":183,"dataGaLocation":277},"/community/",{"text":516,"config":517},"Forum",{"href":518,"dataGaName":519,"dataGaLocation":277},"https://forum.gitlab.com/","forum",{"text":521,"config":522},"Events",{"href":523,"dataGaName":524,"dataGaLocation":277},"/events/","events",{"text":526,"config":527},"Partners",{"href":528,"dataGaName":529,"dataGaLocation":277},"/partners/","partners",{"config":531,"title":534,"text":535,"link":536},{"background":532,"textColor":533},"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":537,"config":538},"Read the latest",{"href":539,"dataGaName":540,"dataGaLocation":277},"/whats-new/","whats new",{"text":542,"config":543,"menu":545},"Company",{"dataNavLevelOne":544},"company",{"type":328,"columns":546},[547],{"items":548},[549,554,560,562,567,572,577,582,587,592],{"text":550,"config":551},"About",{"href":552,"dataGaName":553,"dataGaLocation":277},"/company/","about",{"text":555,"config":556,"footerGa":559},"Jobs",{"href":557,"dataGaName":558,"dataGaLocation":277},"/jobs/","jobs",{"dataGaName":558},{"text":521,"config":561},{"href":523,"dataGaName":524,"dataGaLocation":277},{"text":563,"config":564},"Leadership",{"href":565,"dataGaName":566,"dataGaLocation":277},"/company/team/e-group/","leadership",{"text":568,"config":569},"Handbook",{"href":570,"dataGaName":571,"dataGaLocation":277},"https://handbook.gitlab.com/","handbook",{"text":573,"config":574},"Investor relations",{"href":575,"dataGaName":576,"dataGaLocation":277},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":578,"config":579},"Trust Center",{"href":580,"dataGaName":581,"dataGaLocation":277},"/security/","trust center",{"text":583,"config":584},"AI Transparency Center",{"href":585,"dataGaName":586,"dataGaLocation":277},"/ai-transparency-center/","ai transparency center",{"text":588,"config":589},"Newsletter",{"href":590,"dataGaName":591,"dataGaLocation":277},"/company/contact/#contact-forms","newsletter",{"text":593,"config":594},"Press",{"href":595,"dataGaName":596,"dataGaLocation":277},"/press/","press",{"text":598,"config":599,"menu":600},"Contact us",{"dataNavLevelOne":544},{"type":328,"columns":601},[602],{"items":603},[604,609,614],{"text":605,"config":606},"Talk to sales",{"href":607,"dataGaName":608,"dataGaLocation":277},"/sales/","talk to sales",{"text":610,"config":611},"Support portal",{"href":612,"dataGaName":613,"dataGaLocation":277},"https://support.gitlab.com/hc/en-us","support portal",{"text":615,"config":616},"Customer portal",{"href":617,"dataGaName":618,"dataGaLocation":277},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":620,"login":621,"suggestions":628},"Close",{"text":622,"link":623},"To search repositories and projects, login to",{"text":624,"config":625},"gitlab.com",{"href":291,"dataGaName":626,"dataGaLocation":627},"search login","search",{"text":629,"default":630},"Suggestions",[631,633,637,639,643,647],{"text":308,"config":632},{"href":313,"dataGaName":308,"dataGaLocation":627},{"text":634,"config":635},"Code Suggestions (AI)",{"href":636,"dataGaName":634,"dataGaLocation":627},"/solutions/code-suggestions/",{"text":344,"config":638},{"href":346,"dataGaName":344,"dataGaLocation":627},{"text":640,"config":641},"GitLab on AWS",{"href":642,"dataGaName":640,"dataGaLocation":627},"/partners/technology-partners/aws/",{"text":644,"config":645},"GitLab on Google Cloud",{"href":646,"dataGaName":644,"dataGaLocation":627},"/partners/technology-partners/google-cloud-platform/",{"text":117,"config":648},{"href":321,"dataGaName":117,"dataGaLocation":627},{"freeTrial":650,"mobileIcon":655,"desktopIcon":660,"secondaryButton":663},{"text":651,"config":652},"Start free trial",{"href":653,"dataGaName":282,"dataGaLocation":654},"https://gitlab.com/-/trials/new/","nav",{"altText":656,"config":657},"Gitlab Icon",{"src":658,"dataGaName":659,"dataGaLocation":654},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":656,"config":661},{"src":662,"dataGaName":659,"dataGaLocation":654},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":664,"config":665},"Get Started",{"href":666,"dataGaName":667,"dataGaLocation":654},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":669,"mobileIcon":673,"desktopIcon":675},{"text":670,"config":671},"Learn more about GitLab Duo",{"href":313,"dataGaName":672,"dataGaLocation":654},"gitlab duo",{"altText":656,"config":674},{"src":658,"dataGaName":659,"dataGaLocation":654},{"altText":656,"config":676},{"src":662,"dataGaName":659,"dataGaLocation":654},{"button":678,"mobileIcon":683,"desktopIcon":685},{"text":679,"config":680},"/switch",{"href":681,"dataGaName":682,"dataGaLocation":654},"#contact","switch",{"altText":656,"config":684},{"src":658,"dataGaName":659,"dataGaLocation":654},{"altText":656,"config":686},{"src":687,"dataGaName":659,"dataGaLocation":654},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":689,"mobileIcon":694,"desktopIcon":696},{"text":690,"config":691},"Back to pricing",{"href":426,"dataGaName":692,"dataGaLocation":654,"icon":693},"back to pricing","GoBack",{"altText":656,"config":695},{"src":658,"dataGaName":659,"dataGaLocation":654},{"altText":656,"config":697},{"src":662,"dataGaName":659,"dataGaLocation":654},{"title":699,"titleMobile":700,"button":701,"config":706},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":319,"config":702},{"href":703,"dataGaName":704,"dataGaLocation":705},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":707,"disabled":255},"release",{"data":709},{"text":710,"source":711,"edit":717,"contribute":722,"config":727,"items":732,"minimal":942},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":712,"config":713},"View page source",{"href":714,"dataGaName":715,"dataGaLocation":716},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":718,"config":719},"Edit this page",{"href":720,"dataGaName":721,"dataGaLocation":716},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":723,"config":724},"Please contribute",{"href":725,"dataGaName":726,"dataGaLocation":716},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":728,"facebook":729,"youtube":730,"linkedin":731},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[733,780,834,878,910],{"title":424,"links":734,"subMenu":749},[735,739,744],{"text":736,"config":737},"View plans",{"href":426,"dataGaName":738,"dataGaLocation":716},"view plans",{"text":740,"config":741},"Why Premium?",{"href":742,"dataGaName":743,"dataGaLocation":716},"/pricing/premium/","why premium",{"text":745,"config":746},"Why Ultimate?",{"href":747,"dataGaName":748,"dataGaLocation":716},"/pricing/ultimate/","why ultimate",[750],{"title":751,"links":752},"Contact Us",[753,756,758,760,765,770,775],{"text":754,"config":755},"Contact sales",{"href":607,"dataGaName":287,"dataGaLocation":716},{"text":610,"config":757},{"href":612,"dataGaName":613,"dataGaLocation":716},{"text":615,"config":759},{"href":617,"dataGaName":618,"dataGaLocation":716},{"text":761,"config":762},"Status",{"href":763,"dataGaName":764,"dataGaLocation":716},"https://status.gitlab.com/","status",{"text":766,"config":767},"Terms of use",{"href":768,"dataGaName":769,"dataGaLocation":716},"/terms/","terms of use",{"text":771,"config":772},"Privacy statement",{"href":773,"dataGaName":774,"dataGaLocation":716},"/privacy/","privacy statement",{"text":776,"config":777},"Cookie preferences",{"dataGaName":778,"dataGaLocation":716,"id":779,"isOneTrustButton":258},"cookie preferences","ot-sdk-btn",{"title":324,"links":781,"subMenu":790},[782,786],{"text":783,"config":784},"DevSecOps platform",{"href":306,"dataGaName":785,"dataGaLocation":716},"devsecops platform",{"text":787,"config":788},"AI-Assisted Development",{"href":313,"dataGaName":789,"dataGaLocation":716},"ai-assisted development",[791],{"title":792,"links":793},"Topics",[794,799,804,809,814,819,824,829],{"text":795,"config":796},"CICD",{"href":797,"dataGaName":798,"dataGaLocation":716},"/topics/ci-cd/","cicd",{"text":800,"config":801},"GitOps",{"href":802,"dataGaName":803,"dataGaLocation":716},"/topics/gitops/","gitops",{"text":805,"config":806},"DevOps",{"href":807,"dataGaName":808,"dataGaLocation":716},"/topics/devops/","devops",{"text":810,"config":811},"Version Control",{"href":812,"dataGaName":813,"dataGaLocation":716},"/topics/version-control/","version control",{"text":815,"config":816},"DevSecOps",{"href":817,"dataGaName":818,"dataGaLocation":716},"/topics/devsecops/","devsecops",{"text":820,"config":821},"Cloud Native",{"href":822,"dataGaName":823,"dataGaLocation":716},"/topics/cloud-native/","cloud native",{"text":825,"config":826},"AI for Coding",{"href":827,"dataGaName":828,"dataGaLocation":716},"/topics/devops/ai-for-coding/","ai for coding",{"text":830,"config":831},"Agentic AI",{"href":832,"dataGaName":833,"dataGaLocation":716},"/topics/agentic-ai/","agentic ai",{"title":835,"links":836},"Solutions",[837,839,841,846,850,853,857,860,862,865,868,873],{"text":368,"config":838},{"href":363,"dataGaName":368,"dataGaLocation":716},{"text":357,"config":840},{"href":340,"dataGaName":341,"dataGaLocation":716},{"text":842,"config":843},"Agile development",{"href":844,"dataGaName":845,"dataGaLocation":716},"/solutions/agile-delivery/","agile delivery",{"text":847,"config":848},"SCM",{"href":353,"dataGaName":849,"dataGaLocation":716},"source code management",{"text":795,"config":851},{"href":346,"dataGaName":852,"dataGaLocation":716},"continuous integration & delivery",{"text":854,"config":855},"Value stream management",{"href":396,"dataGaName":856,"dataGaLocation":716},"value stream management",{"text":800,"config":858},{"href":859,"dataGaName":803,"dataGaLocation":716},"/solutions/gitops/",{"text":406,"config":861},{"href":409,"dataGaName":410,"dataGaLocation":716},{"text":863,"config":864},"Small business",{"href":415,"dataGaName":416,"dataGaLocation":716},{"text":866,"config":867},"Public sector",{"href":421,"dataGaName":422,"dataGaLocation":716},{"text":869,"config":870},"Education",{"href":871,"dataGaName":872,"dataGaLocation":716},"/solutions/education/","education",{"text":874,"config":875},"Financial services",{"href":876,"dataGaName":877,"dataGaLocation":716},"/solutions/finance/","financial services",{"title":429,"links":879},[880,882,884,886,889,891,894,896,898,900,902,904,906,908],{"text":442,"config":881},{"href":444,"dataGaName":445,"dataGaLocation":716},{"text":447,"config":883},{"href":449,"dataGaName":450,"dataGaLocation":716},{"text":452,"config":885},{"href":454,"dataGaName":455,"dataGaLocation":716},{"text":457,"config":887},{"href":459,"dataGaName":888,"dataGaLocation":716},"docs",{"text":480,"config":890},{"href":482,"dataGaName":483,"dataGaLocation":716},{"text":892,"config":893},"What's new",{"href":539,"dataGaName":540,"dataGaLocation":716},{"text":475,"config":895},{"href":477,"dataGaName":478,"dataGaLocation":716},{"text":494,"config":897},{"href":496,"dataGaName":497,"dataGaLocation":716},{"text":502,"config":899},{"href":504,"dataGaName":505,"dataGaLocation":716},{"text":507,"config":901},{"href":509,"dataGaName":510,"dataGaLocation":716},{"text":512,"config":903},{"href":514,"dataGaName":183,"dataGaLocation":716},{"text":516,"config":905},{"href":518,"dataGaName":519,"dataGaLocation":716},{"text":521,"config":907},{"href":523,"dataGaName":524,"dataGaLocation":716},{"text":526,"config":909},{"href":528,"dataGaName":529,"dataGaLocation":716},{"title":542,"links":911},[912,914,916,918,920,922,926,931,933,935,937],{"text":550,"config":913},{"href":552,"dataGaName":544,"dataGaLocation":716},{"text":555,"config":915},{"href":557,"dataGaName":558,"dataGaLocation":716},{"text":563,"config":917},{"href":565,"dataGaName":566,"dataGaLocation":716},{"text":568,"config":919},{"href":570,"dataGaName":571,"dataGaLocation":716},{"text":573,"config":921},{"href":575,"dataGaName":576,"dataGaLocation":716},{"text":923,"config":924},"Sustainability",{"href":925,"dataGaName":923,"dataGaLocation":716},"/sustainability/",{"text":927,"config":928},"Diversity, inclusion and belonging (DIB)",{"href":929,"dataGaName":930,"dataGaLocation":716},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":578,"config":932},{"href":580,"dataGaName":581,"dataGaLocation":716},{"text":588,"config":934},{"href":590,"dataGaName":591,"dataGaLocation":716},{"text":593,"config":936},{"href":595,"dataGaName":596,"dataGaLocation":716},{"text":938,"config":939},"Modern Slavery Transparency Statement",{"href":940,"dataGaName":941,"dataGaLocation":716},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":943},[944,947,950],{"text":945,"config":946},"Terms",{"href":768,"dataGaName":769,"dataGaLocation":716},{"text":948,"config":949},"Cookies",{"dataGaName":778,"dataGaLocation":716,"id":779,"isOneTrustButton":258},{"text":951,"config":952},"Privacy",{"href":773,"dataGaName":774,"dataGaLocation":716},[954],{"id":955,"title":7,"body":254,"config":956,"content":958,"description":254,"extension":961,"meta":962,"navigation":258,"path":963,"seo":964,"stem":965,"__hash__":966},"blogAuthors/en-us/blog/authors/andrew-chilton.yml",{"template":957},"BlogAuthor",{"name":7,"config":959},{"headshot":233,"ctfId":960},"chilts","yml",{},"/en-us/blog/authors/andrew-chilton",{},"en-us/blog/authors/andrew-chilton","onYVNbDV-qoY4KL2qY942DrtYL5Q__lk5RQzNKcuGfI",[968,976,984],{"title":969,"description":970,"heroImage":971,"category":250,"date":972,"authors":973,"slug":975,"externalUrl":254},"What's new in Git 2.55.0?","Learn about the new features and changes in Git 2.55, including a new git-history(1) fixup command, an fsmonitor daemon for Linux, pushing to remote groups, and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782732487/ztwgrvlolpifo01vj8qc.png","2026-06-29",[974],"Toon Claes","whats-new-in-git-2-55-0",{"title":977,"description":978,"heroImage":979,"category":250,"date":980,"authors":981,"slug":983,"externalUrl":254},"GitLab AI Hackathon 2026: Meet the winners","Nearly 7,000 developers built 600+ AI agents and flows on GitLab Duo Agent Platform. Find out who won and what they created.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","2026-04-22",[982],"Nick Veenhof","gitlab-ai-hackathon-2026-meet-the-winners",{"title":985,"description":986,"heroImage":987,"category":250,"date":988,"authors":989,"slug":991,"externalUrl":254},"What’s new in Git 2.54.0?","Learn about release contributions, including new repository maintenance, a new command to edit commit history, a replacement for git-sizer(1), and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782734716/ztwgrvlolpifo01vj8qc.png","2026-04-20",[990],"Patrick Steinhardt","whats-new-in-git-2-54-0",{"promotions":993},[994,1008,1020,1032],{"id":995,"categories":996,"header":998,"text":999,"button":1000,"image":1005},"ai-modernization",[997],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1001,"config":1002},"Get your AI maturity score",{"href":1003,"dataGaName":1004,"dataGaLocation":483},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1006},{"src":1007},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1009,"categories":1010,"header":1012,"text":999,"button":1013,"image":1017},"devops-modernization",[1011,818],"product","Are you just managing tools or shipping innovation?",{"text":1014,"config":1015},"Get your DevOps maturity score",{"href":1016,"dataGaName":1004,"dataGaLocation":483},"/assessments/devops-modernization-assessment/",{"config":1018},{"src":1019},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1021,"categories":1022,"header":1024,"text":999,"button":1025,"image":1029},"security-modernization",[1023],"security","Are you trading speed for security?",{"text":1026,"config":1027},"Get your security maturity score",{"href":1028,"dataGaName":1004,"dataGaLocation":483},"/assessments/security-modernization-assessment/",{"config":1030},{"src":1031},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1033,"paths":1034,"header":1037,"text":1038,"button":1039,"image":1044},"github-azure-migration",[1035,1036],"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":1040,"config":1041},"See how GitLab compares to GitHub",{"href":1042,"dataGaName":1043,"dataGaLocation":483},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1045},{"src":1019},{"header":1047,"blurb":1048,"button":1049,"secondaryButton":1054},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1050,"config":1051},"Get your free trial",{"href":1052,"dataGaName":282,"dataGaLocation":1053},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":754,"config":1055},{"href":607,"dataGaName":287,"dataGaLocation":1053},1786803748671]